目录:
1.eureka:
2.ribbon:
3.feign:
4.zuul路由网关:
5.hystrix断路器:
6.config配置中心:
7.bus消息总线
8.sleuth 链路追踪
1.eureka:
eureka集群:相互注册,相互守望。
自我保护机制:防止网络故障的情况下,server端对client端进行清理。正常情况下,server端在90秒内接收不到client端的心跳,就会注销该服务。但启动了自我保护,则不会立即清理,依旧会保留该微服务信息。一句话,宁可保留错误的信息,也不会盲目注销任何可能健康的服务。
服务注册流程:
2.ribbon:
ribbon主要负责客户端的负载均衡和服务调用。
ribbon负载均衡和nginx负载均衡的区别:ribbon负载均衡时本地服务调用,nginx负载均衡是服务端负载均衡。
ribbon负载均衡策略:轮询,随机,可用过滤(过滤掉那些失效或者高并发的服务)
ribbon采用RestTemplate进行服务调用。
3.feign:
主要解决服务间的调用。
需要创建一个接口,并添加注解feignclient即可。feign集成了ribbon。
4.zuul路由网关:
网关是微服务的入口,外部由网关访问各个微服务,核心是路由和过滤。
有了路由网关,各个微服务的端口就不会对外暴露,只需要暴露路由网关的ip地址即可。
动态路由:通过服务名就可以路由到对应的服务中。
过滤器:因为每一个请求都会经过路由网关,所以经常在路由网关中进行全局过滤。例如跨域等。
5.hystrix断路器:
hystrix主要解决分布式系统中,服务之间调用出现延迟,异常,宕机等情况时,避免整个服务出现问题,提高了系统的可用性。
服务降级:当服务出现问题后,直接给用户一个fallback的友好提示。
服务熔断:当服务调用出现问题后,直接熔断,而不是等待超时,之后通过服务降级给用户一个友好提示。服务熔断是服务降级的一种方式。
服务雪崩:多个服务之间调用,因为某一个服务出现故障,导致系统崩溃。
服务限流:限制并发数量,有序进行。
6.config配置中心:
当微服务中有非常多的微服务时,往往修改一个相同的配置,就需要修改全部服务的配置,造成耗时费力,所以需要一个全局的配置中心,只修改一处,全局生效。
并且有了配置中心后,还可以进行测试,开发和生成环境的统一配置。
通常bootstrap.yml的配置优先级比application.yml的优先级高,所以config配置中心会优先加载,再结合application.yml的配置。
7.bus消息总线
bus需要和config配合使用,因为config配置后,要么需要重启,要么需要发送post请求通知。所以通过bus可以刷新配置,统一动态配置。
8.sleuth 链路追踪
对各个微服务之间的调用进行路径追踪。