lim技术第二季--rpc框架--13

系统设计的问题,就是让你站在系统设计的角度,来考虑一下,到底如果要设计一个RPC框架,你会如何来考虑

动态代理:比如消费者和提供者,其实都是需要一个实现某个接口的动态代理的,RPC框架的一切的逻辑细节,都是在这个动态代理中实现的,动态代理里面的代码逻辑就是你的RPC框架核心的逻辑。

JDK提供了API,去创建针对某个接口的动态代理。

调用动态代理对象的方法之后,此时就应该先干一个事情,通过Cluster层的一些组件,服务注册中心,是用什么技术来进行实现呢?往简单了说,服务注册中心也可以是你自己手撸一个,也不难。

自己手撸一个,服务去注册,其他服务去拉取注册表进行发现。

ZooKeeper,稍微自己上网百度搜索一下,ZooKeeper入门使用教程,基本概念和原理,还有基本的使用,了解一下

Cluster层,从本地缓存的服务注册表里获取到要调用的服务的机器列表

负载均衡面试突击第一季里,我们分析过Dubbo的负载均衡策略,此时你就可以把那些策略说一说,我要设计多少种策略,从服务的机器列表中采用负载均衡算法从里面选择出来一台机器。

选择好了机器,知道了对方的端口号,而且知道你的请求调用,调用哪个Interface的哪个方法,把这些信息交给协议层。

把数据组织一下,协议序列化机制底层用什么网络通信框架,比如netty,mina现在用的比较少,序列化和反序列化有没有概念,Java基础概念,一个复杂的请求数据序列化成二进制的字节数组。

反序列化就是从字节数组变成请求数据结构。

按照那个协议的规范对请求数据进行组织,不同的协议,组织出来的数据看起来是不一样的。

netty基本的原理。

解析完毕了之后,就知道,应该调用自己本地哪个Interface的实现类的哪个方法。

zookeeper入门:https://blog.csdn.net/java_66666/article/details/81015302

zookeeper集群选举:https://blog.csdn.net/u010013573/article/details/90148935

发布了329 篇原创文章 · 获赞 11 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_28764557/article/details/104589190