springboot:集成dubbo分布式框架

  • 接口工程
  • 服务提供者工程
  • 服务消费者工程

1、创建一个maven java工程,作为接口工程

接口工程中主要用于存放所有的实体bean和业务接口
集成dubbo框架中的实体类必须全部实现Serializable序列化接口

<!--lombok-->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.22</version>
    <scope>provided</scope>
</dependency>

2、创建一个springboot web工程,作为服务提供者provider

这个工程中主要用来实现所有的业务接口,并且将需要暴露的业务接口注册到注册中心

2.1 引入依赖

provider工程中,除了springboot自动引入的web依赖,还需要额外引入dubbo依赖、注册中心的依赖、接口工程的依赖

<!--springboot的web起步依赖-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--dubbo集成springboot依赖-->
<dependency>
    <groupId>com.alibaba.spring.boot</groupId>
    <artifactId>dubbo-spring-boot-starter</artifactId>
    <version>2.0.0</version>
</dependency>
<!--注册中心依赖-->
<dependency>
    <groupId>com.101tec</groupId>
    <artifactId>zkclient</artifactId>
    <version>0.10</version>
</dependency>
<!--接口工程依赖-->
<dependency>
    <groupId>com.kw</groupId>
    <artifactId>001-springboot-dubbo-interface</artifactId>
    <version>1.0.0</version>
</dependency>

2.2 配置dubbo服务提供者

在springboot项目中,dubbo的配置在springboot核心配置文件application.properties中进行配置

#配置项目tomcat端口号
server.port=8081
#配置项目的上下文路径
server.servlet.context-path=/

#配置dubbo服务提供者核心配置
#声明dubbo服务提供者的名称:保证唯一性
spring.application.name=001-springboot-dubbo-provider
#声明这个工程是dubbo的服务提供者
spring.dubbo.server=true
#设置注册中心的地址和端口
spring.dubbo.registry=zookeeper://localhost:2181

2.3 编写接口实现类

在springboot项目中,编写完接口实现类之后,需要在实现类上添加@Component注解,表示将实现类加入到spring容器中。
这个注解就相当于maven web项目中,在dubbo服务提供者核心配置文件中配置的
<bean id="userService" class="com.kw.service.impl.UserServiceImpl"></bean>
然后通过配置将接口注册到注册中心进行暴露
@Service(interfaceClass = UserService.class,version = "1.0.0",timeout = 15000)
这个配置就相当于maven web项目中,在dubbo服务提供者核心配置文件中配置的
dubbo:service interface="",version="",timeout=""

@Component
@Service(interfaceClass = UserService.class,version = "1.0.0",timeout = 15000)
//dubbo:service interface="",version="",timeout=""
public class UserServiceImpl implements UserService {
    //正常业务是在业务层需要引入持久层获取数据

    @Override
    public User getUserById(int id) {
        User user=new User();
        user.setId(1);
        user.setUsername("admin");
        user.setPassword("123");
        return user;
    }

    @Override
    public int CountUsers() {
        return 200;
    }
}

2.4 开启dubbo注解配置

在springboot启动配置类上添加@EnableDubboConfiguration注解,表示开启了dubbo注解配置

@SpringBootApplication  //开启spring注解配置
@EnableDubboConfiguration //开启dubbo注解配置
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}

3、创建一个springboot web工程,作为服务消费者consumer

这个工程中主要用来处理前端业务请求

3.1 引入依赖

<!--springboot的web起步依赖-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--dubbo集成springboot依赖-->
<dependency>
    <groupId>com.alibaba.spring.boot</groupId>
    <artifactId>dubbo-spring-boot-starter</artifactId>
    <version>2.0.0</version>
</dependency>
<!--注册中心依赖-->
<dependency>
    <groupId>com.101tec</groupId>
    <artifactId>zkclient</artifactId>
    <version>0.10</version>
</dependency>
<!--接口工程依赖-->
<dependency>
    <groupId>com.kw</groupId>
    <artifactId>001-springboot-dubbo-interface</artifactId>
    <version>1.0.0</version>
</dependency>

3.2 配置dubbo服务消费者

在springboot项目中,dubbo的配置在springboot核心配置文件application.properties中进行配置

#设置项目默认端口
server.port=8082
#设置上下文路径
server.servlet.context-path=/

#配置dubbo
#设置dubbo服务消费者名称:保证唯一性
spring.application.name=002-springboot-dubbo-consumer
#设置注册中心的地址和端口号
spring.dubbo.registry=zookeeper://localhost:2181

3.3 编写controller层代码

在控制层需要引入注册中心暴露的接口,在引入的接口上添加以下配置
@Reference(interfaceClass = UserService.class,version = "1.0.0",check = false)

@RestController
public class UserController {

    @Reference(interfaceClass = UserService.class,version = "1.0.0",check = false)
    UserService userService;

    @RequestMapping("/user")
    public User getUserById(int id){
        User user=userService.getUserById(id);
        return user;
    }

    @GetMapping("/userCount")
    public String countUsers(){
        return "当前总人数为:"+userService.CountUsers();
    }
}

3.4 开启dubbo注解扫描

在springboot启动配置类上添加@EnableDubboConfiguration注解,表示开启了dubbo注解配置

@SpringBootApplication  //开启spring注解配置
@EnableDubboConfiguration //开启dubbo注解配置
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}

4、启动注册中心

上一篇:七:服务暴露剖析(三)


下一篇:第十五届中国*网站绩效评估结果发布:五个亮点、五个不足和四个建议