RPC项目
目前简历:
1. 采用了基于 TCP 协议的通信框架 Netty,保证了通信的可靠性和稳定性。
2. 设计的通信协议,并使用 Netty 的LengthFieldBasedFrameDecoder,从而解决拆包和粘包问题。
3. 通过 Zookeeper、Redis 实现服务注册中心和服务治理框架,可以自动发现和管理服务提供者。
4. 实现了一个动态代理框架和负载均衡算法,从多个服务提供者中选择一个合适的服务提供者。
5. 通过 Netty 中的组件 IdleStateHandler 实现了一个心跳机制,可以检测服务提供者的存活状态,并及时关闭对应的通道。
1
2
3
4
5
2
3
4
5
- 了解 Netty 基础知识,了解 rpc 基础知识
rpc
https://www.yuque.com/snailclimb/gsmusc sztd
rpc是什么?rpc原理,rpc和http区别,了解的常见的rpc框架有哪些。
https://2290653824.github.io/pages/eb6da4/
netty
- https://www.yuque.com/snailclimb/mf2z3k/wlr1b0 cnk4
什么是黏包粘包,netty解决方案。详细说一下LengthFieldBasedFrameDecoder,协议怎么设计的。
注册中心与服务发现怎么做的。redis、zookeeper有什么区别
如何实现的心跳机制。
几种负载均衡算法是怎么实现的。
你将服务提供方注册到zookeeper,注册的内容是什么,如果对应的服务提供方宕机了,你是怎么处理的。
评估:
- 创建的是临时节点,当服务提供方服务挂掉后,zk检查到对应的连接已经断开,则会自动删除对应的节点
- 创建的是永久节点,则当服务启动时,向JVM中添加一个钩子函数,当JVM结束时,会自动调用这个钩子函数,钩子函数的功能就是获取自己的ip和端口,并向zk请求删除与自己相关的节点。(这个钩子函数不是所有情况都可以被调用到,如果是kill命令,则不会调用钩子函数)
CustomShutdownHook.*getCustomShutdownHook*().clearAll();
在服务提供方启动时,就会注册一个钩子函数
编辑 (opens new window)
上次更新: 2024/02/22, 14:03:19