一、简介
1.默认SpringCloud使用Eureka作为注册中心
2.因为Eureka闭源,所以使用Zookkeeper作为注册中心
3.Zookeeper分布式协调工具,可以实现注册中心,采用临时节点,和生命周期进行关联,如果服务断开连接,该节点会自动被删除
二、搭建注册中心
1.引入依赖
2.编写配置文件
3.使用@EnableDiscoveryClient,将会员服务注册到注册中心
4.同样的建立个订单服务,和会员服务配置一样,并使用EnableDiscoveryClient,就可以调用会员服务
5.同样的用restTemplate来本地,实现rpc调用,@LoadBalanced实现负载均衡
6.@LoadBalanced:会开启以别名方式,去注册中心读取注册信息,本地帮你实现rpc远程调用
7.和Eureka区别是:Zookeeper不用建立注册中心模块,只需要注册自己的模块,就可以调用,因为ZookeeperClient是工具生成的
8.使用不同注册中心,接口调用方式不变,无非变化配置文件和maven依赖信息
9.引入DiscoveryClient接口,传入服务别名参数,可以查看服务注册信息
10.本地负载均衡:本地从Eureka上获取对应的注册信息列表,然后本地实现负载均衡机制
11.负载均衡算法:总请求数%服务器数量,得到实际下标服务器位置
12.手写实现本地负载均衡机制
:实际url(配置定义的,ip地址+端口号)
注意事项:
1.restTemplate底层是用httpClient方式进行本地rpc远程调用
2.如果是@Loadbalanced,参数是:http://别名/方法名,自动实现负载均衡
3.如果没有该注释,则参数是:https://实际url/方法名,可以手动实现负载均衡机制
三、Ribbon本地负载均衡与Nginx服务器负载均衡区别
1.Ribbon本地负载均衡,原理:在调用接口时,会在eureka注册中心上获取注册信息列表,获取到之后,缓存在jvm本地,相当于本地rpc实现远程调用(@Loadbalanced),即是客户端实现负载均衡
2.Nginx是服务器负载均衡,客户端所有请求交给nginx,让由ngnix实现转发请求,即负载均衡是由服务器端实现
3.应用场景:
Ribbon(本地负载均衡)适合在微服务rpc远程调用,比如dubbo、springCloud
ngnix(服务器负载均衡):比如tomcat、jetty