一、写在前头
- 在开始构建前,默认你已经能够成功安装并启动 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; /** * 测试远程调用的接口; * <p/> * Created by Shawearn on 2017/2/14. */ public interface TestService { String sayHello(String name); }
4. 实现接口方法:
package com.shawearn.dubbo.provider.impl; import com.shawearn.dubbo.remote.TestService; /** * Created by Shawearn on 2017/2/14. */ 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"> <!-- 配置可参考 http://dubbo.io/User+Guide-zh.htm --> <!-- 服务提供方应用名,用于计算依赖关系 --> <dubbo:application name="dubbo-provider" owner="dubbo-provider"/> <!-- 定义 zookeeper 注册中心地址及协议 --> <dubbo:registry protocol="zookeeper" address="192.168.10.41:4183" client="zkclient"/> <!-- 定义 Dubbo 协议名称及使用的端口,dubbo 协议缺省端口为 20880,如果配置为 -1 或者没有配置 port,则会分配一个没有被占用的端口 --> <dubbo:protocol name="dubbo" port="-1"/> <!-- 声明需要暴露的服务接口 --> <dubbo:service interface="com.shawearn.dubbo.remote.TestService" ref="testService" timeout="10000"/> <!-- 和本地 bean 一样实现服务 --> <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"}) // 使用 providers.xml 配置; public class DubboProviderApplication { public static void main(String[] args) { SpringApplication.run(DubboProviderApplication.class, args); } }
7. application.properties 中指定项目启动时占用的端口号:
server.port=8011
8. 此时 dubbo-provider 项目结构如下:
9. 启动 dubbo-provide 项目,可以通过 Dubbo 服务控制台看到服务已经被注册到 zookeeper:
本文示例项目代码可从此地址下载:下载地址
构建 Zookeep + Dubbo + Spring Boot 的分布式调用项目(二)
时间: 2024-10-14 05:11:39