dubbo的核心组件基本上可以分为10层
第一层为简单的service层,也就是经常说的业务层,一般实现业务代码以及提供接口,也是开发者最关心的一层
第二层config层,config层提供serverconfig和referenceconfig两个实现类,用于初始化dubbo的配置信息
第三层proxy层,在这一层dubbo提供代理,dubbo会为provider和consumer各自提供给一个代理类,代理层会自动进行远程调用
第四层register层,提供服务的注册与发现
第五层cluster层,在cluster层会实现负载均衡,失败重试策略
第六层为moniter层,提供监控,可以统计调用次数和调用时间
第七层为protocol层,这一层封装远程调用,封装rpc的调用
第八层为exchange层,信息交换发生在在这里,建立request-response模型
第九层为transport层,在这一层是一些网络传输,例如netty,dubbo在这一层封装了netty等框架
第十层为serialize层,提供信息交互序列化和反序列化
dubbo是怎样实现远程调用的
在dubbo的consumer层发起调用,会生成一个proxy代理,这个proxy封装了一个invoker,可以进行invoker,invoke会从cluster开始,在cluster层过滤provider,选择到合适的provider
通过client进行传输,比如常见的netty。传输时会进行序列化,传输之后在provider处理之后反序列化,之后会把这个request分配到线程池,最终结果原路返回