如何自己设计一个类似 Dubbo 的 RPC 框架?

作者: Dubbo开发者

面试官心理分析

说实话,就这问题,其实就跟问你如何自己设计一个 MQ 一样的道理,就考两个:

  • 你有没有对某个 rpc 框架原理有非常深入的理解。
  • 你能不能从整体上来思考一下,如何设计一个 rpc 框架,考考你的系统设计能力。

面试题剖析

其实问到你这问题,你起码不能认怂,因为是知识的扫盲,那我不可能给你深入讲解什么 kafka 源码剖析,dubbo 源码剖析,何况我就算讲了,你要真的消化理解和吸收,起码个把月以后了。

所以我给大家一个建议,遇到这类问题,起码从你了解的类似框架的原理入手,自己说说参照 dubbo 的原理,你来设计一下,举个例子,dubbo 不是有那么多分层么?而且每个分层是干啥的,你大概是不是知道?那就按照这个思路大致说一下吧,起码你不能懵逼,要比那些上来就懵,啥也说不出来的人要好一些。

举个栗子,我给大家说个最简单的回答思路:

  • 上来你的服务就得去注册中心注册吧,你是不是得有个注册中心,保留各个服务的信息,可以用 zookeeper 来做,对吧。
  • 然后你的消费者需要去注册中心拿对应的服务信息吧,对吧,而且每个服务可能会存在于多台机器上。
  • 接着你就该发起一次请求了,咋发起?当然是基于动态代理了,你面向接口获取到一个动态代理,这个动态代理就是接口在本地的一个代理,然后这个代理会找到服务对应的机器地址。
  • 然后找哪个机器发送请求?那肯定得有个负载均衡算法了,比如最简单的可以随机轮询是不是。
  • 接着找到一台机器,就可以跟它发送请求了,第一个问题咋发送?你可以说用 netty 了,nio 方式;第二个问题发送啥格式数据?你可以说用 hessian 序列化协议了,或者是别的,对吧。然后请求过去了。
  • 服务器那边一样的,需要针对你自己的服务生成一个动态代理,监听某个网络端口了,然后代理你本地的服务代码。接收到请求的时候,就调用对应的服务代码,对吧。

这就是一个最最基本的 rpc 框架的思路,先不说你有多牛逼的技术功底,哪怕这个最简单的思路你先给出来行不行?

更多推荐

更多
  • Ansible2安全自动化-十、编写安全测试的 Ansible 模块 开始使用 hello world Ansible 模块,密码,建立开发环境,计划和要记住的内容,OWASP ZAP 模块,使用 Docker 创建 ZAP,创建易受攻击的应用,Ansible 模块模板,[计]元数据,记录模块,源代码模板
    Apache CN

  • Ansible2安全自动化-十一、可靠的安全最佳实践、参考和进一步阅读 十一、可靠的安全最佳实践、参考和进一步使用 Ansible 的保管库,如何对变量和文件使用 Ansible Vault,Ansible Vault 单一加密变量,Ansible 拱顶在 Ansible 塔中的应用,设置和使用可扫描集群,
    Apache CN

  • Ansible2安全自动化-九、用于取证收集和恶意软件分析的自动化实验室设置 为隔离环境的实验室创建可行的行动手册,收集文件和域恶意软件识别和分类,病毒总应用编程接口工具设置,病毒总应用编程接口扫描恶意软件样本,设置布谷鸟沙盒环境,设置布谷鸟主机,设置布谷鸟客人,使用 Ansible 行动手册提交样品和报告,使用
    Apache CN

  • Ansible2安全自动化-八、Docker 容器的持续安全扫描 理解连续安全概念,使用 Ansible 自动化 Docker 容器的漏洞评估,安全 Docker 工作台,克莱尔,为了 Docker 安全,使用 Ansible Tower 进行计划扫描,锚,锚定的引擎服务设置,锚定 cli 扫描仪,使
    Apache CN

  • Ansible2安全自动化-四、日志监控和无服务器自动防御(AWS 中的弹性栈) 四、日志监控和无服务器自动防御AWS 中的弹性栈弹性叠层介绍,弹性搜索,logstash(日志记录),马纳人,搜索,我们为什么要使用弹性栈进行安全监控和警报?,设置弹性栈的先决条件,设置弹性栈,Logstash 集成,马纳人,弹性纤维,
    Apache CN

  • Ansible2安全自动化-五、使用 OWASP ZAP 实现网络应用安全测试自动化 安装 OWASP ZAP,安装 Docker 运行时,OWASP ZAP 坞站容器设置,处理容器的专用工具——Ansible 容器,配置 ZAP 基线扫描,运行易受攻击的应用容器,运行 OWASP 扫描程序基线扫描,针对网络应用和网站的
    Apache CN

  • Ansible2安全自动化-六、利用 Nessus 进行漏洞扫描 尼斯介绍,安装 Nessus 进行漏洞评估,配置 Nessus 进行漏洞扫描,对网络执行扫描,基本网络扫描,使用自动扫描运行扫描,设置自动用户,使用自动扫描运行扫描,列出当前可用的扫描和标识,使用扫描标识启动指定的扫描,存储结果,安装
    Apache CN

  • Ansible2安全自动化-七、应用和网络的安全强化 使用 CIS、STIGs 和 NIST 等基准强化安全性,使用 Ansible 行动手册强化基线操作系统,STIGs 在 Linux 主机自动安全强化方面的可替代角色,使用 Ansible Tower 对 OpenSCAP 进行持续的安
    Apache CN

  • Ansible2安全自动化-三、使用加密自动备份设置加固 WordPress WordPress 命令行界面,为什么要为这种设置负责?,一个完整的 WordPress 安装步骤,正在设置 nginx web 服务器,设置先决条件,建立 MySQL 数据库,为 WordPress 安装程序安装 PHP,使用命令行界
    Apache CN

  • Ansible2安全自动化-二、Ansible Tower、Jenkins 和其他自动化工具 调度工具支持自动化的下一个抽象,起床跑步,设置可平移的塔,设置 Jenkins,设置运行平台,安全自动化用例,添加行动手册,Ansible 的塔式配置,Jenkins Ansible 集成配置,运行平台配置,认证和数据安全,RBAC 代
    Apache CN

  • 近期文章

    更多
    文章目录

      推荐作者

      更多