本案例代码下载,在我github上面:https://github.com/hemin1003/dubbo-spring-study
大致上实现代码一样,但有小些不同
点击:安装和设置Zookeeper服务
点击:安装Dubbo管理Web端
点击:构建 Zookeeper + Dubbo + Spring Boot 的分布式调用项目(二)
以下为转载内容:
一、写在前头
- 在开始构建前,默认你已经能够成功安装并启动 Zookeeper 注册中心,能够成功安装并启动 Dubbo 控制台;
- 在本例中,我的 Zookeeper 注册中心 IP 地址为 192.168.10.41,端口号为 4183,Dubbo 控制台的访问地址为 http://192.168.10.41:8080;
- 为了体现分布式调用,本例中创建了以下两个项目,dubbo-consumer 远程调用 dubbo-provider 提供的服务:
- dubbo-provider Dubbo 服务提供者
- dubbo-consumer Dubbo 服务消费者
- 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 项目添加依赖:
- <dependency>
- <groupId>com.alibaba</groupId>
- <artifactId>dubbo</artifactId>
- <version>2.4.10</version>
- <exclusions>
- <exclusion>
- <artifactId>spring</artifactId>
- <groupId>org.springframework</groupId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>org.apache.zookeeper</groupId>
- <artifactId>zookeeper</artifactId>
- <version>3.4.6</version>
- <exclusions>
- <exclusion>
- <artifactId>slf4j-log4j12</artifactId>
- <groupId>org.slf4j</groupId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>com.github.sgroschupf</groupId>
- <artifactId>zkclient</artifactId>
- <version>0.1</version>
- </dependency>
3. 定义接口:
- package com.shawearn.dubbo.remote;
-
-
-
-
-
- public interface TestService {
- String sayHello(String name);
- }
4. 实现接口方法:
- package com.shawearn.dubbo.provider.impl;
- import com.shawearn.dubbo.remote.TestService;
-
-
-
- public class TestServiceImpl implements TestService {
- @Override
- public String sayHello(String name) {
- return "Hello " + name + "!";
- }
- }
5. 在 resource/ 下添加 providers.xml 配置文件,用于向 zookeeper 注册中心注册服务
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans.xsd
- http://code.alibabatech.com/schema/dubbo
- http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
-
-
- <dubbo:application name="dubbo-provider" owner="dubbo-provider"/>
-
- <dubbo:registry protocol="zookeeper" address="192.168.10.41:4183" client="zkclient"/>
-
- <dubbo:protocol name="dubbo" port="-1"/>
-
- <dubbo:service interface="com.shawearn.dubbo.remote.TestService" ref="testService" timeout="10000"/>
-
- <bean id="testService" class="com.shawearn.dubbo.provider.impl.TestServiceImpl" />
- </beans>
6. DubboProviderApplication 中使用 providers.xml 配置文件;
- package com.shawearn.dubbo.provider;
- import org.springframework.boot.SpringApplication;
- import org.springframework.boot.autoconfigure.SpringBootApplication;
- import org.springframework.context.annotation.ImportResource;
- @SpringBootApplication
- @ImportResource(value = {"classpath:providers.xml"})
- public class DubboProviderApplication {
- public static void main(String[] args) {
- SpringApplication.run(DubboProviderApplication.class, args);
- }
- }
7. application.properties 中指定项目启动时占用的端口号:
8. 此时 dubbo-provider 项目结构如下:
9. 启动 dubbo-provide 项目,可以通过 Dubbo 服务控制台看到服务已经被注册到 zookeeper:
本文示例项目代码可从此地址下载:下载地址