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框架, 也是服务治理框架
梗概