一. 题目要求
(一)需求一
在基于Netty的自定义RPC的案例基础上,进行改造。基于Zookeeper实现简易版服务的注册与发现机制
要求完成改造版本:
\1. 启动2个服务端,可以将IP及端口信息自动注册到Zookeeper
\2. 客户端启动时,从Zookeeper中获取所有服务提供端节点信息,客户端与每一个服务端都建立连接
\3. 某个服务端下线后,Zookeeper注册列表会自动剔除下线的服务端节点,客户端与下线的服务端断开连接
\4. 服务端重新上线,客户端能感知到,并且与重新上线的服务端重新建立连接
(二)需求二
在“编程题一”的基础上,实现基于Zookeeper的简易版负载均衡策略
要求完成改造版本:
Zookeeper记录每个服务端的最后一次响应时间,有效时间为5秒,5s内如果该服务端没有新的请求,响应时间清零或失效。(如下图所示)

当客户端发起调用,每次都选择最后一次响应时间短的服务端进行服务调用,如果时间一致,随机选取一个服务端进行调用,从而实现负载均衡
二. 解题思路
(一)在虚拟机Linux上搭建zookeeper伪集群
(二)在本地windows创建两个Rpc服务端
服务端一: ip:127.0.0.1, RPC绑定端口号:8899, 内置tomcat端口号:8081,服务端名:provider
服务端一: ip:192.168.1.61, RPC绑定端口号:8898,内置tomcat端口号:8082,服务端名:Otherprovider

本文介绍如何基于Zookeeper在Java环境下改造Netty的RPC服务,实现在Linux虚拟机上的Zookeeper集群,以及在Windows上的两个RPC服务端注册。详细阐述了服务端如何将自己的IP和端口注册到Zookeeper,客户端如何获取服务端信息并建立连接,以及服务端下线时的自动处理。此外,还介绍了如何实现基于Zookeeper的简易负载均衡策略,选择响应时间最短的服务端进行调用。
最低0.47元/天 解锁文章
615

被折叠的 条评论
为什么被折叠?



