dubbo阐述
1.dubbo介绍
Dubbo 是阿里巴巴开源的一个基于 Java 的 RPC 框架,核心功能:远程通信,集群容错,自动发现。
2.总体架构:
3.dubbo执行流程
3.1提供者 Provider 启动然后向注册中心注册自己所能提供的服务。
3.2消费者 Consumer 启动向注册中心订阅自己所需的服务。
3.3注册中心将提供者元信息通知给 Consumer, 之后 Consumer 因为已经从注册中心获取提供者的地址,因此可以通过负载均衡选择一个 Provider 直接调用 。
3.4服务提供方元数据变更的话注册中心会把变更推送给服务消费者。
3.5服务提供者和消费者都会在内存中记录着调用的次数和时间,然后定时的发送统计数据到监控中心。
dubbo服务暴露的流程
1.通过ServiceConfig解析标签,创建dubbo标签解析器来解析dubbo的标签,容器创建完成之后,触发ContextRefreshEvent事件回调开始暴露服务
2.通过proxyFactory.getInvoker方法,并利用javassist或DdkProxyFactory来进行动态代理,将服务暴露接口封装成invoker对象,里面包含了需要执行的方法的对象信息和具体的URL地址。
3.再通过DubboProtocol的实现把包装后的invoker转换成exporter,
4.然后启动服务器server,监听端口
5.最后RegistryProtocol保存URL地址和invoker的映射关系,同时注册到服务中心
dubbo服务引用的流程
1.首先客户端根据config文件信息从注册中心订阅服务,首次会全量缓存到本地,后续的更新会监听动态更新到本地。
2.之后DubboProtocol根据provider的地址和接口信息连接到服务端server,开启客户端client,然后创建invoker
3.之后通过invoker为服务接口生成代理对象,这个代理对象用于远程调用provider,至此完成了服务引用