Springboot+dubbo的简单dmeo
dubbo介绍
Apache Dubbo (incubating) |ˈdʌbəʊ| 是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。
Dubbo的官网: www.dubbo.appche.org
节点角色说明:
节点 | 角色说明 |
---|---|
Provider | 暴露服务的服务提供方 |
Consumer | 调用远程服务的服务消费方 |
Registry | 服务注册与发现的注册中心 |
Monitor | 统计服务的调用次数和调用时间的监控中心 |
Container | 服务运行容器 |
Springboot搭配dubbo实现RPC
不了解Springboot的童鞋可以去官网了解一下
Springboot的官网: http://spring.io/projects/spring-boot/
搭建项目之前先说一下需要项目的结构:
dubbo-test:是总项目
duboo-api:主要是实体类和接口服务
dubbo-consumer:调用远程服务的服务消费方
duboo-provider:暴露服务的服务提供方
我使用的工具是:IDEA
- 创建项目dubbo-test,在IDEA中的选择File–>New–>Project
然后选择maven、勾选Create from archetype、选择org.apache.maven.archetypes:maven-archetype-site
2.填写GroupId、Artifactild、Version
3.修改pom.xml文件、然后删除src文件夹
4.添加dubbo-api、选择dubbo-demo–>new–>module
5.填写Group、arifact、version、这是dubbo-api
6.添加dubbo-provider
7.添加dubbo-customer、因为cusromer是消费者所有我添加了一个web
到这里就是基本把结构给构建完成了!
配置POM.xml文件
- 配置dubbo-demo的pom.xml文件、把项目dubbo-api、duboo-provider、dubbo-consumer加到pom.xml
<groupId>com.mydubbo</groupId>
<artifactId>dubbo</artifactId>
<version>v.1.0.0</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<modules>
<module>dubbo-api</module>
<module>dubbo-customer</module>
<module>dubbo-provider</module>
</modules>
- 配置dubbo-api的pom.xml文件、其实dubbo-api的pom不需要修改什么东西
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
- 配置dubbo-consumer的pom.xml文件如下
<properties>
<java.version>1.8</java.version>
<zookeeper.version>3.4.13</zookeeper.version>
<dubbo.starter.version>0.2.0</dubbo.starter.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>${dubbo.starter.version}</version>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>${zookeeper.version}</version>
</dependency>
<dependency>
<groupId>com.livedubbo</groupId>
<artifactId>dubbo-api</artifactId>
<version>v1.0</version>
</dependency>
</dependencies>
- 配置dubbo-provider的pom.xml
<properties>
<java.version>1.8</java.version>
<zookeeper.version>3.4.13</zookeeper.version>
<dubbo.starter.version>0.2.0</dubbo.starter.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>${dubbo.starter.version}</version>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>${zookeeper.version}</version>
</dependency>
<dependency>
<groupId>com.livedubbo</groupId>
<artifactId>dubbo-api</artifactId>
<version>v1.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
编写dubbo的demo
- 添加dubbo-api项目的service 、在dubbo-api中添加GreetingService
GreetingService的代码:
public interface GreetingService {
String sayHello(String name);
}
- 修改dubbo-customer的application.yml文件,如何没有这个文件话,就创建。把原来的application.properties删除、添加一个controller的GreetingController用于接口调用
application.yml的代码:zookeeper服务器没有的话可以在本地安装一个
server:
port: 9011
spring:
application:
name: dubbo-consumer
dubbo:
application: #应用配置,用于配置当前应用信息,不管该应用是提供者还是消费者。
name: dubbo-consumer
registry: #注册中心配置,用于配置连接注册中心相关信息。
address: zookeeper://172.0.0.1:2181
provider:
timeout: 1000
添加一个GreetingController
GreetingController的代码如下:
@RestController
public class GreetingController {
@Reference
private GreetingService greetingService;
@RequestMapping("/sayHello")
public String sayHello(@RequestParam String name) {
return greetingService.sayHello(name);
}
}
- 修改dubbo-provider的applicaiton.yml、然后添加实现GreetingServiceImpl
application代码如下:
server:
port: 9010
spring:
application:
name: dubbo-provider
dubbo:
application: #应用配置,用于配置当前应用信息,不管该应用是提供者还是消费者。
name: dubbo-provider
protocol: #协议配置,用于配置提供服务的协议信息,协议由提供方指定,消费方被动接受。
name: dubbo
port: 20880
registry: #注册中心配置,用于配置连接注册中心相关信息。
address: zookeeper://127.0.0.1:2181
provider:
timeout: 1000
GreetingServiceImpl的代码如下:
@Service
public class GreetingServiceImpl implements GreetingService{
@Override
public String sayHello(String name) {
return "Hello " + name;
}
}
注意:
在dubbo-provider启动类加上:注解@EnableDubbo、这样才能启动dubbo调用zookeeper
如下代码:
@EnableDubbo
@SpringBootApplication
public class DubboProviderApplication {
public static void main(String[] args) {
SpringApplication.run(DubboProviderApplication.class, args);
}
}
通过postman进行测试:访问地址:http://127.0.0.1:9011/sayHello?name=“王思聪”
显示如下就表示成功:
注:第一次写博客,有点紧张,如果有什么错误的地方可以指出来我这边可以修改!