dubbo基本架构

dubbo十层结构

  1. service 接口层,提供者和消费者实现代码
  2. config 配置层,对服务做相应的配置
  3. proxy 服务代理代理层,透明生成客户端的sub和服务端的skeleton
  4. registry 服务注册层,服务的注册与发现
  5. cluster 集群层,封装多个服务提供者的路由集负载均衡,将多个实例合成一个服务
  6. monitor 监控层, 对服务的调用次数以及调用时间等进行监控
  7. protocol 远程调用层,封装rpc调用
  8. exchange 信息交换层,封装请求响应模式,同步转异步
  9. transport 网络传输层,抽象mina与netty为统一接口
  10. serialize 数据序列化层

工作流程

  • 1)第一步,provider向注册中心去注册
  • 2)第二步,consumer从注册中心订阅服务,注册中心会通知consumer注册好的服务
  • 3)第三步,consumer调用provider
  • 4)第四步,consumer和provider都异步的通知监控中心

通信协议

  • 默认为dubbo,单一长连接,NIO异步通信,基于hessian作为序列化协议。适用传输数据量很小(每次请求在100kb以内),但是并发量很高场景
  • rmi协议,走java二进制序列化,多个短连接,适合消费者和提供者数量差不多,适用于文件的传输,一般较少用
  • hessian协议,走hessian序列化协议,多个短连接,适用于提供者数量比消费者数量还多,适用于文件的传输,一般较少用
  • http协议,json序列化
  • webservice,soap文本序列化

dubbo动态代理策略

默认使用javassist动态字节码生成,创建代理类。但是可以通过spi扩展机制配置自己的动态代理策略

猜你喜欢

转载自www.cnblogs.com/ren-kai/p/12814867.html