Java Dubbo框架知识点梳理
1. 什么是 Dubbo
Dubbo 是一款高性能 Java RPC 框架,它提供了服务治理、降级、容错、负载均衡、分流、路由、动态配置等基础能力,同时还支持多种协议、多种注册中心、多种负载均衡方式。Dubbo 可以帮助开发者快速构建分布式应用。
2. Dubbo 核心概念
2.1 服务提供者 Provider
提供服务的应用,将自己提供的服务注册到注册中心,等待消费者的调用。
2.2 服务消费者 Consumer
消费服务的应用,从注册中心订阅需要的服务,并调用。
2.3 注册中心 Registry
注册中心用于服务的发布与订阅,是 Dubbo 集群的管理中心。一般使用 ZooKeeper 或者 Nacos 作为注册中心。
2.4 服务协议 Protocol
Dubbo 支持多种协议传输,例如 Dubbo、HTTP、Hessian 等。
2.5 API 接口层 Service
服务提供者和消费者均需要使用相同的 API 接口层,Java 开发者可以构建一个公共接口来定义方法和参数,实现服务的复用和标准化。
2.6 配置中心 Config Center
在分布式的场景下,配置管理非常重要。Dubbo 支持多种配置方式,例如 XML 配置、Properties 配置、API 配置、Apollo 配置等等。
3. Dubbo 运行模式
Dubbo 支持三种运行模式:单一提供者、服务提供者集群、服务消费者集群。
3.1 单一提供者
单一提供者模式指的是,服务提供者和消费者都只有一个实例,不存在集群模式。这种情况下,服务提供者和消费者会直接建立连接,没有路由、负载均衡等机制。
3.2 服务提供者集群
服务提供者集群指的是,多个服务提供者实例组成的集群,并在注册中心中注册同一服务名,服务消费者从注册中心获取已注册的所有服务提供者实例,通过路由和负载均衡算法选择其中一台进行服务调用。
3.3 服务消费者集群
服务消费者集群指的是,多个服务消费者实例组成的集群,并同时订阅同一服务,注册中心将服务提供者信息推送给消费者,通过路由和负载均衡算法选择其中一台服务提供者进行调用。
4. Dubbo 协议
Dubbo 协议是一种二进制的传输协议,比 HTTP 更快、更小、更简单,同时兼容多种序列化协议如 Hessian2、Java 自带的序列化、Google 的 Protobuf 等。
5. Dubbo 服务注册流程
以下是 Dubbo 服务注册的流程:
-
服务提供者启动时,注册提供者 IP 和端口等信息到注册中心,并向 ZooKeeper 创建一个节点 /dubbo/com.xxx.xxxService/192.168.1.100:20880,用于存储当前提供者的信息;
-
服务消费者启动时,向注册中心订阅服务名为 com.xxx.xxxService 的服务提供者列表;
-
注册中心返回服务提供者 IP 列表给服务消费者;
-
服务消费者随机选择一个 IP ,并发起 RPC 请求。
6. Dubbo 配置示例
以下是一份 Dubbo 服务提供者的 XML 配置示例:
<dubbo:application name="service-provider" />
<dubbo:registry address="zookeeper://127.0.0.1:2181" />
<dubbo:protocol name="dubbo" port="20880" />
<!-- 暴露服务接口 -->
<dubbo:service interface="com.xxx.xxxService" ref="xxxServiceImpl" />
<!-- Spring 配置 -->
<bean id="xxxServiceImpl" class="com.xxx.xxxServiceImpl" />
以上配置文件中,application 表示应用名称、registry 表示注册中心地址、protocol 表示 Dubbo 的协议和端口、service 表示该服务所提供的接口和实现类,ref 值为该实现类的实例化对象。
7. Dubbo RPC 调用示例
以下是一份 Dubbo 服务消费者的调用示例:
@Service
public class XxxServiceImpl implements XxxService {
@Reference
private XxxServiceApi xxxServiceApi;
@Override
public String hello(String name) {
String result = xxxServiceApi.sayHello(name);
return "Hello, " + result;
}
}
以上代码中,使用了 Spring 的 @Service 和 @Reference 注解注入了接口 xxxServiceApi,并实现了接口中的方法 hello,调用了 xxxServiceApi 的方法 sayHello 并返回处理后的结果。
8. 总结
Dubbo 是一款功能强大的 RPC 框架,可以帮助开发者快速构建分布式应用。本文介绍了 Dubbo 的核心概念、运行模式、协议、服务注册流程和配置示例,并给出了 Dubbo RPC 调用示例。希望本文能够帮助读者深入了解 Dubbo 框架,对分布式应用的开发有所启示。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java Dubbo框架知识点梳理 - Python技术站