1 微服务5大组件
Eureka 注册中心
Feign 服务调用
Ribbon 负载均衡
Hystix 熔断器
Zuul 服务网关
SpringCloud微服务常见组件原理:https://www.cnblogs.com/findbetterme/p/11195011.html
Eureka:各个服务启动时,Eureka Client都会将服务注册到Eureka Server,并且Eureka Client还可以反过来从Eureka Server拉取注册表,从而知道其他服务在哪里
Ribbon:服务间发起请求的时候,基于Ribbon做负载均衡,从一个服务的多台机器中选择一台
Feign:基于Feign的动态代理机制,根据注解和选择的机器,拼接请求URL地址,发起请求
Hystrix:发起请求是通过Hystrix的线程池来走的,不同的服务走不同的线程池,实现了不同服务调用的隔离,避免了服务雪崩的问题
Zuul:如果前端、移动端要调用后端系统,统一从Zuul网关进入,由Zuul网关转发请求给对应的服务
2 负载均衡
负载均衡算法:
轮询法:把请求按顺序轮流分配到后端服务器上
随机法:通过系统的随机算法,根据后端服务器的列表大小值来随机选取其中的一台服务器进行访问;
源地址哈希法:根据客户端的IP地址,通过哈希函数计算得到一个数值,然后用该数值对服务器列表的大小进行取模运算,得到的结果便是客户端要访问服务器的序号。
加权轮询法:给配置高、负载低的机器配置更高的权限,让其处理更多的请求;而给配置低、负载高的机器,给其分配较低的权重。
加权随机法:按照权重随机请求后端服务器,而非排序。
最小连接数:是根据后端服务器当前的连接情况,动态地选取其中当前积压连接数最少的一台服务器来处理当前的请求,尽可能地提高后端服务的利用效率,将请求合理的分流到每一台服务器。