首先在本机搭建zookeeper集群(服务注册中心)以及dubbo-admin(服务监控中心)
1、zookeeper window下伪分布式搭建
先下载zookeeper,地址:http://zookeeper.apache.org/releases.html#download,下载zookeeper-3.4.12.tar.gz完成后,解压到本地,复制三份:zookeeper1、zookeeper2、zookeeper3,如下:
同时新建目录data,在data下新建数据存放目录依次为1、2、3,在1目录下新建myid文件,输入内容:1,如下:
2目录、3目录同理,建好myid文件后,分别输入内容2、3,接着修改三个bin目录下的配置文件,将zoo_sample.cfg重命名为zoo.cfg,配置具体如下:
dataDir=C:/astudy/soft/zookeeper/data/1
clientPort=2181
server.1=127.0.0.1:2887:3887
server.2=127.0.0.1:2888:3888
server.3=127.0.0.1:2889:3889
dataDir=C:/astudy/soft/zookeeper/data/2
clientPort=2182
server.1=127.0.0.1:2887:3887
server.2=127.0.0.1:2888:3888
server.3=127.0.0.1:2889:3889
dataDir=C:/astudy/soft/zookeeper/data/3
clientPort=2183
server.1=127.0.0.1:2887:3887
server.2=127.0.0.1:2888:3888
server.3=127.0.0.1:2889:3889
最后分别启动三个bin目录下的zkServer.cmd文件,启动成功,可以用zookeeper可视化工具ZooInspector连接,下载地址:
https://issues.apache.org/jira/secure/attachment/12436620/ZooInspector.zip
,解压后直接运行zookeeper-dev-ZooInspector.jar,输入zookeeper连接地址:localhost:2181,成功如下:
2、dubbo-admin搭建
首先打开git命令行工具,clone dubbo-admin源码到本地:
git clone https://github.com/apache/incubator-dubbo-ops
然后进入该目录下,执行maven打包命令:
mvn clean package -Dmaven.skip.test=true
等项目打包完后,进入dubbo-admin\target目录下,可以发现有jar包dubbo-admin-0.0.1-SNAPSHOT.jar,运行jar:
java -jar .\dubbo-admin-0.0.1-SNAPSHOT.jar
然后打开浏览器访问地址:http://localhost:7001/,登录账号密码:root\root,成功登录如下:
环境搭建好了之后,新建三个SpringBoot maven项目:dubbo-provider,dubbo-consumer,dubbo-interface,其中dubbo-provider是服务提供者,dubbo-consumer是服务消费者,dubbo-interface存放接口,dubbo-provider、dubbo-consumer依赖dubbo-interface。
1、dubbo-interface依赖项目
首先在pom文件引入dubbo-spring-boot-starter依赖,具体如下:
io.dubbo.springboot
spring-boot-starter-dubbo
1.0.0
然后编写测试接口ITestService,代码如下:
package com.zehao.dubbo.service;
public interface ITestService {
/**
* test add
* @param a
* @param b
* @return a + b
*/
public int testAdd(int a, int b);
}
2、dubbo-provider服务提供者项目
此项目要依赖dubbo-interface接口项目,所以除了引入SpringBoot依赖以及dubbo starter依赖,还需引入dubbo-interface依赖,pom文件依赖配置如下:
org.springframework.boot
spring-boot-starter-web
io.dubbo.springboot
spring-boot-starter-dubbo
1.0.0
com.zehao
dubbo-interface
0.0.1-SNAPSHOT
接着是配置application.properties
文件,添加如下配置:
# 端口
server.port=8080
# 服务提供者名称
spring.dubbo.application.name=provider
# 服务注册中心地址,zookeeper集群配置
spring.dubbo.registry.address=zookeeper://127.0.0.1:2181?backup=127.0.0.1:2182,127.0.0.1:2183
# dubbo协议名称
spring.dubbo.protocol.name=dubbo
# dubbo协议使用端口
spring.dubbo.protocol.port=20880
# 要暴露的服务接口实现类的包
spring.dubbo.scan=com.zehao.dubbo.service
然后编写测试接口的实现类TestServiceImpl,这里需要注意实现类的service注解用的是alibaba.dubbo的注解,代码如下:
package com.zehao.dubbo.service.impl;
import com.alibaba.dubbo.config.annotation.Service;
import com.zehao.dubbo.service.ITestService;
@Service
public class TestServiceImpl implements ITestService {
@Override
public int testAdd(int a, int b) {
// TODO Auto-generated method stub
return a + b;
}
}
3、dubbo-consumer服务消费者项目
此项目的pom文件依赖配置与dubbo-provider的pom文件依赖配置一样,这里略过,接着配置application.properties
文件,这里要注意spring.dubbo.scan的配置:配置调用dubbo服务的类所在的包(例如Testcontroller调用ITestService,则配置controller所在的包),或者直接配置启动类所在的包,具体配置如下:
# 端口
server.port=8081
# dubbo 消费者名称
spring.dubbo.application.name=consumer
# 服务注册中心地址
spring.dubbo.registry.address=zookeeper://127.0.0.1:2181
# dubbo扫描的包
spring.dubbo.scan=com.zehao.dubbo.controller
然后编写TestController,提供接口访问,代码如下:
package com.zehao.dubbo.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.alibaba.dubbo.config.annotation.Reference;
import com.zehao.dubbo.service.ITestService;
@RestController
@RequestMapping(value = "/test")
public class TestController {
@Reference
private ITestService iTestService;
@RequestMapping("/add")
public Object test(int a, int b) {
return iTestService.testAdd(a, b);
}
}
完成之后,项目结构如下:
最后分别运行ProviderApp以及ConsumerApp,在控制台可以看到服务提供者注册服务:
消费者订阅服务:
启动成功后,刷新dubbo-admin管理页面可以看到服务提供者以及消费者信息,如下:
访问接口:http://localhost:8081/test/add?a=3&b=2,可以看到成功调用服务,如下:
dubbo-spring-boot-starter:https://github.com/alibaba/dubbo-spring-boot-starter