什么是微服务
把一个大应用拆分成多个独立的小应用,每个应用就是一个服务。每个服务运行在独立的进程里,并且他们可以通过自动化的方式部署
微服务的特点
- 单一指责,比方说登陆注册服务,只处理登陆和注册、日志服务之处理日志、用户服务、订单服务、商品服务、秒杀服务、短信通知服务、邮件服务等等
- 轻量级的通信,通信平台和语言无关,http是轻量的
- 隔离性,数据隔离
- 技术多样性。可以使用不同的语言实现独立的服务,服务之间通过RPC通信
互联网架构之路
单体架构
- 功能全部在一个项目里
- 优点:
- 简单、高效、成本低
- 缺点
- 性能不佳
- 技术栈受限
垂直架构
-
将大项目架构拆分成一个一个的单体架构
-
不至于像单体架构无限扩大,但存在数据冗余,耦合性较大
SOA架构
- 中间件技术 - 将重复公用的功能抽取为中间件,以服务的方式给各个系统提供服务
- ESB
- 优点
- 代码提高复用性
- 不同的服务对应不同的数据部署
- 缺点
- 系统与服务界限模糊,不利于开发和维护,成本高
- ESB接口协议种类多,不固定,不利于维护
微服务架构
- 每个功能拆分成一个独立的服务
- 服务之间访问通过RPC轻量级
- 优点
- 服务独立性高,低耦合
- 技术栈灵活,丰富多样。不同的语言发挥自己的特性
- 缺点
- 服务拆分增加额外的工作
- 保证数据的一致性
- 增加了沟通成本
技术栈
-
docker+k8s
-
通信
- RPC(远程过程调用)
- HTTP传输
- TPC传输
- 数据传输: JSON Protobuf thrift等
- 负载:随机算法、轮询、一致性hash、加权等
- 异常容错:健康检查、熔断、限流等
- 服务注册与发现
- 分布式数据同步需要用到etcd, consul, zk等
- RPC(远程过程调用)
-
应用平台
- 云管理平台、监控系统、日志收集系统、服务管理平台等等
本篇概念性文章来自于togpoer,大部分借鉴于togpoer