不同的交互模式:

现有框架对比:

TCP长连接
依赖中间件做数据交互(数据存储)
直接交互(Http、RPC、WS)
在RPC中:
Server--服务提供者
Client -- 服务消费者
Stub -- 存根、服务描述
2-6



2-5




2-4

2-3
com.hh
hh-rpc
hh-rpc-common
hh-rpc-proto
hh-rpc-codec
hh-rpc-transport
hh-rpc-server
hh-rpc-client

2-2

2-1

2


RPC



...

跨进程交互形式
HTTP vs RPV 类似于 普通话 vs 四川方言
RPC:也可以理解成跨进程访问
RPC框架关键类

Dubbo(读音[ˈdʌbəʊ])是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 [1] Spring框架无缝集成。
Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。

侧丝丝
恩恩额
现有 rpc 框架对比

实现过程


这个模块分类让我学到了很多

协议制定:client到server做交互的通信协议,比如request response 网络端点peer

jetty server 起到网络监听的作用
handler注册到jetty server
holder托管servlet


不足和展望:
安全性:
身份信息校验没做,https比http多了安全控制
序列化安全加密,建立网络连接时做身份验证
服务端处理能力:
jetty线程池 返回数据的通道最好做成队列形式
注册中心:
对RPC锦上添花,
集成能力:
和其他框架的嵌入结合,比如springboot结合,比如做一个springboot starter,让他自动的创建server或client
bean factory自动创建代理对象
dependencies所有模块都依赖的公用模块
dependencymanagement是子模块可能会用到的


<build>工程编译的版本
把版本号提出到properties,后面的版本号用${xxx.version}指代


lombok插件分两步:
在plugin里面搜索安装;
annotation processor里面勾选enable annotation那个

新建module 通过不同模块管理,原来的src就可以删了
proto放协议
codec序列化模块
transport网络通信模块
common共同方法模块

协议模块:描述server和client通信协议

网络模块,序列化模块,agent对象

网络模块,序列化模块,代理

网络模块,序列化模块,代理 对象

网络模块,序列化模块,代理对象


dubbo不仅是RPC框架, 也是服务治理框架