dubbo笔记
Dubbo 学习笔记
1. Dubbo 简介
Dubbo 是一款高性能、轻量级的开源 RPC 框架。它提供了服务治理、负载均衡、容错、服务降级等一系列高级特性,能够帮助我们快速搭建分布式服务架构。
2. Dubbo 的核心概念
2.1 服务提供者
服务提供者是指提供具体服务实现的一方。在 Dubbo 中,服务提供者需要将自己的服务注册到注册中心,并将自己的地址信息告知消费者。
2.2 服务消费者
服务消费者是指调用服务的一方。在 Dubbo 中,服务消费者需要从注册中心获取服务提供者的地址信息,并调用服务。
2.3 注册中心
注册中心是服务提供者和服务消费者之间的桥梁,它用于存储服务提供者的地址信息,并将这些信息提供给服务消费者。
2.4 监控中心
监控中心是用于监控 Dubbo 的运行状态和性能指标的,它能够帮助我们及时发现问题,并进行调整和优化。
2.5 服务协议
服务协议是指服务提供者和服务消费者之间的通信协议,Dubbo 支持多种协议,例如 Dubbo 协议、HTTP 协议、Hessian 协议等。
3. Dubbo 的架构
Dubbo 的架构可以分为三层,分别是服务提供者、注册中心和服务消费者。
4. Dubbo 的配置
4.1 服务提供者的配置
服务提供者的配置文件示例:
<?xml version="1.0" encoding="UTF-8"?>
<dubbo:service interface="com.example.UserService" ref="userService"/>
<bean id="userService" class="com.example.UserServiceImpl"/>
4.2 服务消费者的配置
服务消费者的配置文件示例:
<?xml version="1.0" encoding="UTF-8"?>
<dubbo:reference id="userService" interface="com.example.UserService"/>
4.3 注册中心的配置
Dubbo 支持多种注册中心,例如 ZooKeeper、Redis 等。以 ZooKeeper 为例,注册中心的配置文件示例:
<?xml version="1.0" encoding="UTF-8"?>
<dubbo:registry address="zookeeper://127.0.0.1:2181"/>
4.4 监控中心的配置
Dubbo 的监控中心可以通过 Dubbo 提供的控制台或者第三方监控工具来实现。以控制台为例,监控中心的配置文件示例:
<?xml version="1.0" encoding="UTF-8"?>
<dubbo:monitor protocol="registry"/>
5.Dubbo 的代码实现
5.1 服务提供者的代码实现
public interface UserService {
User getUserById(int id);
}
public class UserServiceImpl implements UserService {
public User getUserById(int id) {
// TODO: 实现根据 id 查询用户的逻辑
return new User(id, "张三", 18);
}
}
public class Provider {
public static void main(String[] args) throws IOException {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("provider.xml");
context.start();
System.in.read();
}
}
5.3 注册中心的代码实现
Dubbo 提供了多种注册中心的实现,例如 ZooKeeper、Redis 等。以 ZooKeeper 为例,注册中心的代码实现:
public class Registry {
public static void main(String[] args) throws IOException {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("registry.xml");
context.start();
System.in.read();
}
}
5.4 监控中心的代码实现
Dubbo 的监控中心可以通过 Dubbo 提供的控制台或者第三方监控工具来实现。以控制台为例,监控中心的代码实现:
public class Monitor {
public static void main(String[] args) throws IOException {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("monitor.xml");
context.start();
System.in.read();
}
}
6. 参考链接
- Dubbo 官方网站:https://dubbo.apache.org/
- Dubbo 中文文档:http://dubbo.apache.org/zh-cn/docs/user/quick-start.html
- 注意:服务降级之类的不在本笔记中,会额外记录一份dubbo的降级之类例子。此笔记只记录了基本概念。