目录
架构
Eureka、Ribbon、Feign、Zuul
就是优化并发冲突
如果你基于Spring Cloud对外发布一个接口,实际上就是支持http协议的,对外发布的就是一个最最普通的Spring MVC的http接口
feign,他是对一个接口打了一个注解,他一定会针对这个注解标注的接口生成动态代理,然后你针对feign的动态代理去调用他的方法的时候,此时会在底层生成http协议格式的请求,/order/create?productId=1
底层的话,使用HTTP通信的框架组件,HttpClient,先得使用Ribbon去从本地的Eureka注册表的缓存里获取出来对方机器的列表,然后进行负载均衡,选择一台机器出来,接着针对那台机器发送Http请求过去即可
配置一下不同的请求路径和服务的对应关系,你的请求到了网关,他直接查找到匹配的服务,然后就直接把请求转发给那个服务的某台机器,Ribbon从Eureka本地的缓存列表里获取一台机器,负载均衡,把请求直接用HTTP通信框架发送到指定机器上去
Spring Cloud 微服务架构图
或者
1、请求统一通过API网关(Zuul)来访问内部服务.
2、网关接收到请求后,从注册中心(Eureka)获取可用服务
3、由Ribbon进行均衡负载后,分发到后端具体实例
4、微服务之间通过Feign进行通信处理业务
5、Hystrix负责处理服务超时熔断
6、Turbine监控服务间的调用和熔断相关指标
生产级的网关,应该具备我刚才说的几个特点和功能:
(1)动态路由:新开发某个服务,动态把请求路径和服务的映射关系热加载到网关里去;服务增减机器,网关自动热感知
(2)灰度发布:基于现成的开源插件来做
(3)授权认证
(4)限流熔断(统一)
(5)性能监控:每个API接口的耗时、成功率、QPS
(6)系统日志
(7)数据缓存
Eureka注册表一二级缓存
各组件说明:
SpringCloud生态架构图
新增架构:
架构图1
架构图2
end
架构图3:
详细:
架构图4:
架构图5:
架构6:
架构7:
架构8