SpringCloud整合Zookeeper作为注册中心

一、简介

1.默认SpringCloud使用Eureka作为注册中心

2.因为Eureka闭源,所以使用Zookkeeper作为注册中心

3.Zookeeper分布式协调工具,可以实现注册中心,采用临时节点,和生命周期进行关联,如果服务断开连接,该节点会自动被删除

二、搭建注册中心

1.引入依赖

2.编写配置文件

SpringCloud整合Zookeeper作为注册中心_第1张图片

3.使用@EnableDiscoveryClient,将会员服务注册到注册中心

SpringCloud整合Zookeeper作为注册中心_第2张图片

4.同样的建立个订单服务,和会员服务配置一样,并使用EnableDiscoveryClient,就可以调用会员服务

SpringCloud整合Zookeeper作为注册中心_第3张图片

5.同样的用restTemplate来本地,实现rpc调用,@LoadBalanced实现负载均衡

SpringCloud整合Zookeeper作为注册中心_第4张图片

6.@LoadBalanced:会开启以别名方式,去注册中心读取注册信息,本地帮你实现rpc远程调用

7.和Eureka区别是:Zookeeper不用建立注册中心模块,只需要注册自己的模块,就可以调用,因为ZookeeperClient是工具生成的

8.使用不同注册中心,接口调用方式不变,无非变化配置文件和maven依赖信息

9.引入DiscoveryClient接口,传入服务别名参数,可以查看服务注册信息

SpringCloud整合Zookeeper作为注册中心_第5张图片

10.本地负载均衡:本地从Eureka上获取对应的注册信息列表,然后本地实现负载均衡机制

11.负载均衡算法:总请求数%服务器数量,得到实际下标服务器位置

SpringCloud整合Zookeeper作为注册中心_第6张图片

12.手写实现本地负载均衡机制

SpringCloud整合Zookeeper作为注册中心_第7张图片

:实际url(配置定义的,ip地址+端口号)

注意事项:

1.restTemplate底层是用httpClient方式进行本地rpc远程调用

2.如果是@Loadbalanced,参数是:http://别名/方法名,自动实现负载均衡

3.如果没有该注释,则参数是:https://实际url/方法名,可以手动实现负载均衡机制

三、Ribbon本地负载均衡与Nginx服务器负载均衡区别

1.Ribbon本地负载均衡,原理:在调用接口时,会在eureka注册中心上获取注册信息列表,获取到之后,缓存在jvm本地,相当于本地rpc实现远程调用(@Loadbalanced),即是客户端实现负载均衡

2.Nginx是服务器负载均衡,客户端所有请求交给nginx,让由ngnix实现转发请求,即负载均衡是由服务器端实现

SpringCloud整合Zookeeper作为注册中心_第8张图片

3.应用场景:

Ribbon(本地负载均衡)适合在微服务rpc远程调用,比如dubbo、springCloud

ngnix(服务器负载均衡):比如tomcat、jetty

 

你可能感兴趣的:(java,云化,注册中心)