dubbo3.0总结
Dubbo3.0和2.0的主要区别包括以下几个方面:
注册模型的改变:在Dubbo2.X版本中,服务是以接口的方式注册到注册中心,每个接口都需要单独注册,这会给注册中心带来很大的压力。Dubbo3.0引入了服务级别的注册,只需将应用名和对应的IP、端口注册到注册中心,无需对每个接口进行单独注册。为了解决消费端如何找到具体服务的问题,Dubbo3.0引入了元数据服务的概念,消费端通过注册中心获取服务列表,然后通过元数据服务映射具体某个接口进行调用。
Triple协议:Dubbo3.0默认使用Triple协议,该协议基于HTTP2.0,支持gRPC的远程调用,具有更高的兼容性和性能。Triple协议的引入使得Dubbo能够更好地与其他微服务框架如Spring Cloud、Kubernetes Service、gRPC等进行互通。
服务柔性:Dubbo3.0增强了服务的柔性,采用面向失败设计的理念,提供了精准容量评估、自适应限流和负载均衡等功能。这使得服务在单一视角下更加稳定,分布式视角下性能更优。
云原生支持:Dubbo3.0规划了两种形态的Service Mesh方案:基于Sidecar的和无Sidecar的Proxyless Mesh,这使得Dubbo能够更好地适应云原生环境。
扩展点分离:Dubbo3.0的Maven依赖发生了变化,不再包含所有资源的all-in-one包,一些可选依赖如registry-etcd、rpc-hessian等作为独立组件发布,用户需要根据实际需求在pom.xml中添加相应的依赖。
dubbo3.0启动过程
1、@EnableDubbo注解监听spring启动完成,进入dubbo启动
2、@DubboService,所有这个注解的类,解析后,ServiceConfig类进行存储接口、实现类、版本号、超时等
3、export,导出dubbo服务。
4、读取配置,获取支持协议
5、服务注册到注册中心,支持两种注册模式,实例注册和接口注册。
6、实例和接口信息存储到元数据中心。
7、服务引用处理。
实例级注册
服务引入
1、根据DubboReference注解,去注册中心中获取可用连接。
2、找到后生成对应的invoke.
3、合并invoke实现类,用于负载均衡。
4、生成代理对象,调用远程服务。