第一章 Dubbo-高性能RPC通信框架
本章主要内容:
应用架构演进过程
Dubbo简介
Dubbo总体大图
单体应用
JEE时期:优点:分工;;缺点:多数应用同在一个JVM中,耦合严重
MVC
MVC框架时期
分布式应用
早期SOA
明确的协议
明确的接口
合作方式的改变。后端团队可以进一步拆分服务
通信方式。xml,json
实现方式:
Web Service(SOAP协议,HTTP,HTTPS 传输xml)
ESB
微服务化。新问题:容量动态规划,服务框架的臃肿
云原生。
Dubbo简介
核心设计原则:微内核+插件体系,平等对待第三方
Dubbo的特性总结
面向接口代理的高性能RPC调用
服务自动注册与发现
运行期流量调度:内置条件,脚本等路由策略
智能负载均衡
高度可扩展能力
可视化的服务治理与运维
Dubbo总体大图
Dubbo总体分层:业务层,RPC层,Remote层。细分也可以分为10层
Dubbo核心组件
Dubbo总体调用过程
服务暴露过程:
服务端在框架启动时,会初始化服务实例
通常Proxy组件调用具体协议(Protocol),把服务端要暴露的接口封装成Invoker,然后转换成Exporter
这个时候框架会打开服务端口等并记录服务实例到内存中
最后通过Registry把服务元数据注册到注册中心
代理持有了一个Invoker对象,触发invoke调用
集群,从Directory获取所有可以调用的远程服务Invoker列表(一个接口可能有多个节点提供服务)
负载均衡,选出可用的Invoker
过虑器链,通常处理上下文,限流,计数等
Client数据传输
Codec接口私有协议构造
序列化
服务端收到数据包,使用Codec处理协议头及一些半包,粘包等
反序列化
Requset会被分配到线程池中进行处理
server处理请求
根据请求查找对应的Exporter(它内部持有Invoker),过虑器
具体接口,原路返回