构建 Zookeeper + Dubbo + Spring Boot 的分布式调用项目(一)

本案例代码下载,在我github上面:https://github.com/hemin1003/dubbo-spring-study

大致上实现代码一样,但有小些不同


点击安装和设置Zookeeper服务

点击:安装Dubbo管理Web端

点击:构建 Zookeeper + Dubbo + Spring Boot 的分布式调用项目(二)


以下为转载内容

一、写在前头


  1. 在开始构建前,默认你已经能够成功安装并启动 Zookeeper 注册中心,能够成功安装并启动 Dubbo 控制台;
  2. 在本例中,我的 Zookeeper 注册中心 IP 地址为 192.168.10.41,端口号为 4183,Dubbo 控制台的访问地址为 http://192.168.10.41:8080;
  3. 为了体现分布式调用,本例中创建了以下两个项目,dubbo-consumer 远程调用 dubbo-provider 提供的服务:
    • dubbo-provider            Dubbo 服务提供者
    • dubbo-consumer         Dubbo 服务消费者
  4. dubbo-consumer 项目的访问路径为 http://192.168.10.41:8012/test/{name} 格式,其中 {name} 为请求参数;


二、使用 Spring Initializr 构建 Dubbo 服务提供者 dubbo-provider 项目

1. 登录 http://start.spring.io/ 填写如下信息后点击 “Generate Project” 按钮,得到 dubbo-provider 项目骨架





初始 dubbo-provider 项目结构如下:



2. 为 dubbo-provider 项目添加依赖:

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. <dependency>  
  2.     <groupId>com.alibaba</groupId>  
  3.     <artifactId>dubbo</artifactId>  
  4.     <version>2.4.10</version>  
  5.     <exclusions>  
  6.         <exclusion>  
  7.             <artifactId>spring</artifactId>  
  8.             <groupId>org.springframework</groupId>  
  9.         </exclusion>  
  10.     </exclusions>  
  11. </dependency>  
  12. <dependency>  
  13.     <groupId>org.apache.zookeeper</groupId>  
  14.     <artifactId>zookeeper</artifactId>  
  15.     <version>3.4.6</version>  
  16.     <exclusions>  
  17.         <exclusion>  
  18.             <artifactId>slf4j-log4j12</artifactId>  
  19.             <groupId>org.slf4j</groupId>  
  20.         </exclusion>  
  21.     </exclusions>  
  22. </dependency>  
  23. <dependency>  
  24.     <groupId>com.github.sgroschupf</groupId>  
  25.     <artifactId>zkclient</artifactId>  
  26.     <version>0.1</version>  
  27. </dependency>  
3. 定义接口:

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. package com.shawearn.dubbo.remote;  
  2. /** 
  3.  * 测试远程调用的接口; 
  4.  * <p/> 
  5.  * Created by Shawearn on 2017/2/14. 
  6.  */  
  7. public interface TestService {  
  8.     String sayHello(String name);  
  9. }  
4. 实现接口方法:

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. package com.shawearn.dubbo.provider.impl;  
  2. import com.shawearn.dubbo.remote.TestService;  
  3. /** 
  4.  * Created by Shawearn on 2017/2/14. 
  5.  */  
  6. public class TestServiceImpl implements TestService {  
  7.     @Override  
  8.     public String sayHello(String name) {  
  9.         return "Hello " + name + "!";  
  10.     }  
  11. }  

5. 在 resource/ 下添加 providers.xml 配置文件,用于向 zookeeper 注册中心注册服务

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.        xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"  
  5.        xsi:schemaLocation="http://www.springframework.org/schema/beans  
  6.        http://www.springframework.org/schema/beans/spring-beans.xsd  
  7.        http://code.alibabatech.com/schema/dubbo  
  8.        http://code.alibabatech.com/schema/dubbo/dubbo.xsd">  
  9.     <!-- 配置可参考 http://dubbo.io/User+Guide-zh.htm -->  
  10.     <!-- 服务提供方应用名,用于计算依赖关系 -->  
  11.     <dubbo:application name="dubbo-provider" owner="dubbo-provider"/>  
  12.     <!-- 定义 zookeeper 注册中心地址及协议 -->  
  13.     <dubbo:registry protocol="zookeeper" address="192.168.10.41:4183" client="zkclient"/>  
  14.     <!-- 定义 Dubbo 协议名称及使用的端口,dubbo 协议缺省端口为 20880,如果配置为 -1 或者没有配置 port,则会分配一个没有被占用的端口 -->  
  15.     <dubbo:protocol name="dubbo" port="-1"/>  
  16.     <!-- 声明需要暴露的服务接口 -->  
  17.     <dubbo:service interface="com.shawearn.dubbo.remote.TestService" ref="testService" timeout="10000"/>  
  18.     <!-- 和本地 bean 一样实现服务 -->  
  19.     <bean id="testService" class="com.shawearn.dubbo.provider.impl.TestServiceImpl" />  
  20. </beans>  

6. DubboProviderApplication 中使用 providers.xml 配置文件;

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. package com.shawearn.dubbo.provider;  
  2. import org.springframework.boot.SpringApplication;  
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;  
  4. import org.springframework.context.annotation.ImportResource;  
  5. @SpringBootApplication  
  6. @ImportResource(value = {"classpath:providers.xml"}) // 使用 providers.xml 配置;  
  7. public class DubboProviderApplication {  
  8.     public static void main(String[] args) {  
  9.         SpringApplication.run(DubboProviderApplication.class, args);  
  10.     }  
  11. }  
7. application.properties 中指定项目启动时占用的端口号:

[plain]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. server.port=8011  
8. 此时 dubbo-provider 项目结构如下:



9. 启动 dubbo-provide 项目,可以通过 Dubbo 服务控制台看到服务已经被注册到 zookeeper:



本文示例项目代码可从此地址下载:下载地址


已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页