了解Dubbo
Dubbo 是一款高性能、轻量级的开源Java RPC框架,由阿里巴巴开发。它提供了强大的服务治理能力,能够帮助开发者轻松实现微服务架构。Dubbo 通过服务注册与发现、服务路由、负载均衡、服务降级等机制,提高了系统的可扩展性和稳定性。
环境准备
在开始部署Dubbo项目之前,请确保以下环境已经准备好:
- Java 1.8及以上版本
- Maven 3.0及以上版本
- MySQL数据库(用于服务注册与发现)
创建Dubbo项目
- 创建一个Maven项目,并添加以下依赖:
<dependencies>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo</artifactId>
<version>2.7.5</version>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.14</version>
</dependency>
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.10</version>
</dependency>
</dependencies>
- 创建一个接口,例如
HelloService:
public interface HelloService {
String sayHello(String name);
}
- 创建一个实现类,例如
HelloServiceImpl:
public class HelloServiceImpl implements HelloService {
@Override
public String sayHello(String name) {
return "Hello, " + name;
}
}
- 创建一个Spring配置文件
application.properties:
dubbo.application.name=dubbo-provider
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880
- 创建一个Spring配置类
DubboConfig:
@Configuration
public class DubboConfig {
@Bean
public ApplicationConfig applicationConfig() {
ApplicationConfig applicationConfig = new ApplicationConfig();
applicationConfig.setName("dubbo-provider");
return applicationConfig;
}
@Bean
public RegistryConfig registryConfig() {
RegistryConfig registryConfig = new RegistryConfig();
registryConfig.setAddress("zookeeper://127.0.0.1:2181");
return registryConfig;
}
@Bean
public ProtocolConfig protocolConfig() {
ProtocolConfig protocolConfig = new ProtocolConfig();
protocolConfig.setName("dubbo");
protocolConfig.setPort(20880);
return protocolConfig;
}
}
- 在
HelloServiceImpl类上添加@Service注解:
@Service
public class HelloServiceImpl implements HelloService {
@Override
public String sayHello(String name) {
return "Hello, " + name;
}
}
- 创建一个Spring Boot启动类
DubboProviderApplication:
@SpringBootApplication
public class DubboProviderApplication {
public static void main(String[] args) {
SpringApplication.run(DubboProviderApplication.class, args);
}
}
部署Dubbo服务提供者
- 编译项目,并打包成可执行jar包。
- 运行jar包,例如:
java -jar dubbo-provider-1.0-SNAPSHOT.jar
此时,Dubbo服务提供者已经启动,并注册到Zookeeper注册中心。
创建Dubbo项目(消费者)
- 创建一个Maven项目,并添加以下依赖:
<dependencies>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo</artifactId>
<version>2.7.5</version>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.14</version>
</dependency>
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.10</version>
</dependency>
</dependencies>
- 创建一个Spring配置文件
application.properties:
dubbo.application.name=dubbo-consumer
dubbo.registry.address=zookeeper://127.0.0.1:2181
- 创建一个Spring配置类
DubboConfig:
@Configuration
public class DubboConfig {
@Bean
public ApplicationConfig applicationConfig() {
ApplicationConfig applicationConfig = new ApplicationConfig();
applicationConfig.setName("dubbo-consumer");
return applicationConfig;
}
@Bean
public RegistryConfig registryConfig() {
RegistryConfig registryConfig = new RegistryConfig();
registryConfig.setAddress("zookeeper://127.0.0.1:2181");
return registryConfig;
}
}
- 创建一个消费者类
HelloConsumer:
@Component
public class HelloConsumer {
@Reference
private HelloService helloService;
public void sayHello() {
System.out.println(helloService.sayHello("World"));
}
}
- 创建一个Spring Boot启动类
DubboConsumerApplication:
@SpringBootApplication
public class DubboConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(DubboConsumerApplication.class, args);
}
}
部署Dubbo服务消费者
- 编译项目,并打包成可执行jar包。
- 运行jar包,例如:
java -jar dubbo-consumer-1.0-SNAPSHOT.jar
此时,Dubbo服务消费者已经启动,并从Zookeeper注册中心获取到服务提供者的信息。
总结
通过以上步骤,你已经成功部署了一个简单的Dubbo微服务项目,并实现了服务提供者与消费者的通信。接下来,你可以根据自己的需求,继续扩展Dubbo项目,例如添加更多服务、实现服务路由、负载均衡等功能。祝你学习愉快!
