(一)初识微服务

  • 什么是微服务
  • 优点
  • 难点
  • 1、服务拆分
  • 2、数据一致性
  • 3、服务通信
  • 4、服务注册和发现
  • 5、负载均衡
  • 6、服务网关(API Gateway)
  • 7、高可观察
  • 8、可靠性


什么是微服务

微服务(Microservice)1 ,是一种将Web应用围绕业务功能分解为一系列组件的架构。各个组件可以独立地开发和部署,可采用不同的编程语言与数据库,降低应用的集中化管理。组件之间通过轻量级机制进行通信,它们彼此相互协作,作为一个整体为用户提供功能,却可以独立地进行扩容。

目前主流的微服务框架:DubboSpringCloud、thrift、Hessian等。

微服务分类管理工具 微服务种类_微服务

优点

1、易于开发与维护
2、独立部署
3、伸缩性强,每个服务都可以在横向和纵向上独立扩展
4、与组织结构相匹配,每个团队独立负责某些服务,获得更高的生产力
5、技术异构性,使用最适合该服务的技术

难点

1、服务拆分

微服务拆分原则:领域模型、限定上下文、组织架构、康威定律

2、数据一致性

在微服务场景下,通常使用最终一致性来代替强一致性:

(1)可靠性事件模式
(2)补偿模式
(3)sagas模式

3、服务通信

通信技术方案: RPC vs REST vs 异步消息

RPC (Remote Procedure Call)远程过程调用,通常基于TCP协议,也可基于HTTP协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。常用的技术选型是thriftgrpcdubbo
RPC的好处是IDE友好,有代码提示,协议维护在代码中,传参和响应结果都通过代码可以知道。缺点是很多RPC方案不知道跨语言,所支持的语言有限,需要定义和维护idl文件,且有一定的学习成本,不方便调试。

REST (Representational State Transfer)表述性状态转移,基于HTTP/HTTPS通信协议,性能低于RPC,是一种架构风格。
REST的好处是方便调试、跨语言、门槛低、广泛接受。缺点是协议文档不好维护,协议较为繁琐,性能较TCP要差。

异步消息 借助一些消息队列框架来实现比如kafkarabbitMQ

4、服务注册和发现

将各个微服务信息注册到一个分布式存储中,这些服务信息就叫做服务注册表。服务注册表可以作为信息的权威来源,其中包含有关可用服务的信息以及服务网络位置比如IP、端口号等信息。
一般使用Eurekazookeeper组件来实现,此外我们还可以借助etcdconslredis等。

5、负载均衡

客户端通过服务注册表发现实例清单并决定要连接哪个实例,在客户端做负载均衡。

6、服务网关(API Gateway)

将身份认证,安全防御,流量控制,限流防刷、日志统计这些功能放到服务网关中,向业务服务屏蔽网络边界服务的细节,使得业务服务专注于业务逻辑的开发维护和测试。

7、高可观察

(1)健康检测、集中监控
(2)日志聚合及检索
(3)分布式追踪

8、可靠性

(1)流量控制,超时控制
(2)舱壁隔离,熔断机制
(3)服务降级, 幂等重试


  1. 全文参考《学习微服务首先要了解为什么使用微服务》 ↩︎