各个组件担任的职责
Eureka:服务注册中心 —— 服务发现和服务注册
Fegin:服务间的调用
一个服务请求另外一个服务提供的接口信息。
Ribbon:负载均衡
一个服务会部署在多台机器上,此时通过Ribbon就能实现负载均衡,让用户请求的流量均匀地打向服务的各台机器上面。
Zuul:网关 —— 灰度发布,系统安全,统一降级,统一熔断,统一缓存,统一权限,服务路由
系统会有很多个服务,比如一个电商系统包含了20个子系统,每个子系统有20个核心接口,一个电商系统就有400多个接口。这么多的接口,直接对外暴露,在前后端分离的架构上,让前端直接请求者20个系统部署的机器,让他去做负载均衡的操作,是不现实的。
Hystrix:链路追踪
整体架构图
架构文字说明
比如一个电商系统,系统会首先将各个服务注册到 Eureka
注册中心,比如订单服务,库存服务,仓储服务,积分服务等等,服务注册中心会生成一个注册表,注册表里包含了各个服务的信息(机器的IP地址,端口号,服务状态等)。
用户在执行一个下订单的操作,会先请求到 Zuul网关
,Zuul网关会做一些统一的权限认证(就类似过滤器),然后通过一些规则将请求路由给指定的订单服务上面。订单服务就会执行相关的业务代码,此时需要调用其他服务的业务接口,就会结合 Feign + Ribbon
,实现负载均衡,合理去调用其他服务的业务接口。
最后,完成业务操作后,再返回给用户相关数据。