微服务架构共有三个实现版本,并且是基于解决以下两个核心点作为版本的划分

1.服务发现(调用方如何发现服务)

2.负载均衡(如何去调用)

 

【初始方式】1.0版本,集中式代理-使用Nginx

优势是配置方便,Nginx本身拥有调度策略,可自动实现负载均衡,但是缺点在于服务发现和服务注册需要手动配置,如果新增一个服务,就必须手动修改Nginx配置文件,然后重启Nginx才可生效

 

 

【主流方式】2.0版本,客户端嵌入-使用Consul

流程是 如果有新的服务(S-B),这该服务会请求 Consul (服务注册)来添加记录,客服端(S-A)请求服务之前会先去请求 Consul ,Consul 会返回可用的服务(S-B)地址(服务发现),然后客户端再根据接收到的地址来进行请求服务(需要在客户端做负载均衡)。同时 Consul 会对服务进行心跳发送(健康检查),如果发现服务异常,则会下线该服务记录

也就是说,通过 Consul(etcd,ZooKeeper)可实现服务的自动注册和自动发现,以及服务自动下线的功能,并且由于自动化处理了,我们能够更加方便实现更多的服务治理,包括 限流,熔断,降级,缓存,合并 等功能

 

3.0版本,服务网格-Service Mesh(比较超前的方式,扩展了解即可)

简单来说就是将2.0版本进行封装,然后组成组网形式