服务调用 Ribbon p36-p42 共 7 课 80 分钟
服务调用 OpenFeign p43-p46 共 4 课 40 分钟
周阳套路
- 是什么
- 能干嘛
- 去哪里下
- 怎么玩
服务调用 Ribbon p36-p42 共 7 课 80 分钟
服务调用 OpenFeign p43-p46 共 4 课 40 分钟
没有Ribbon 之前,直接通过80 轮询负载均衡方式访问 8001/8002
将之前写的5个moudule 恢复到负载均衡模式
EurekaMain7001
EurekaMain7002
PaymentMain8001
PaymentMain8002
OrderMain80
http://eureka7001.com:7001
http://eureka7002.com:7002
http://localhost/consumer/payment/get/1 – 不断刷新,看到的是 8001 8002
查看是否正常显示
官网 (Ribbon 进入维护模式了 )
https://github.com/Netflix/ribbon/wiki/Getting-Started
Ribbon提供的服务
ribbon-core
ribbon-eureka
ribbon-httpclient
… …
负载均衡 (Load Balance )
将请求平摊到多个服务器上面,达到系统HA (高可用)
常见的负载均衡软件有 Nginx / LVS / 硬件 H5 等
负载均衡模式两种: 1.集中式负载均衡 2.进程内负载均衡
Ribbon 本地负载均衡(进程内LB)客户端 VS Nginx 服务端负载均衡(集中式LB)
Nginx 服务器负载均衡,客户端所有请求交给nginx ,nginx实现转发请求 。
Ribbon 本地负载均衡,在调用微服务接口的时候,在注册中心上面获取注册信息服务列表后缓存到本地jvm,在本地实现RPC远程服务调用技术。
1.集中式负载均衡 : nginx 相当于医院大门处的分诊台(只分配到科室不分配到具体医生,医生由Ribbon处理)
2.进程内负载均衡 : Ribbon 相当于进入科室后 ,根据内部排班 再分流到某医师处 。
Ribbon = 负载均衡 + RestTemplate调用
ribbon 负载均衡调用 REST
https://www.bilibili.com/video/BV18E411x7eT?p=37
http://localhost/consumer/payment/get/1
http://localhost/consumer/payment/getEntity/1
restTemplate 官网
https://docs.spring.io/spring-framework/docs/5.2.2.RELEASE/javadoc-api/org/springframework/web/client/RestTemplate.html
IRule 接口下的7个 ribbon 负载均衡算法
https://www.bilibili.com/video/BV18E411x7eT?p=38
周阳提供的类继承关系
本地生成的类继承关系
使用自定义的随机负载均衡算法替换默认的轮询算法
https://www.bilibili.com/video/BV18E411x7eT?p=39
自定义的ribbon配置类,不能放在@ComponentScan所能扫描到的当前包,及其子包里面,(懂了)
我们自定义的所有配置类会被所有的ribbon客户端所共享,达不到特殊定制的目的。 (没有懂)
再去访问这个接口就是随机的了
http://localhost/consumer/payment/get/1
(todo)
https://www.bilibili.com/video/BV18E411x7eT?p=40
http://localhost:7002/
http://localhost:7001/
http://localhost:8001/payment/lb
http://localhost:8002/payment/lb
http://localhost:80/consumer/payment/lb
默认负载均衡
负载均衡方法替换
自定义负载均衡函数使用
注意三者之间的关系
@LoadBalanced
@RibbonClient(name = “CLOUD-PAYMENT-SERVICE”,configuration = MySelfRule.class)
ServiceInstance serviceInstance = loadBalancer.instances(instances);