springboot系列---安装zookeeper,dubbo-admin,集成dubbo服务
以前用的dubbo都是公司现成的东西,最近想自己搞一搞,自己呢也没又搭建过,感觉无从下手,不过呢真正动起手来也没有什么难得。因为我的项目是springboot的,所以主要是讲springboot和dubbo的集成。
相比用过dubbo的人都晓得,dubbo基本原理就如下图所示:
Provider: 暴露服务的服务提供方。
Consumer: 调用远程服务的服务消费方。
Registry: 服务注册与发现的注册中心。
Monitor: 统计服务的调用次调和调用时间的监控中心。
Container: 服务运行容器。
一 安装zookeeper
dubbo使用的注册中心是zookeeper,所以我们先在我们的电脑上安装zookeeper。
zookeeper下载地址https://archive.apache.org/dist/zookeeper/;
下载完成后解压 tar -xvf zookeeper-3.4.13.tar.gz
然后我们进入解压的目录cd /zookeeper-3.4.13/conf
我们需要复制配置文件并改名 cp zoo_sample.cfg zoo.cfg ,修改相信息
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/usr/local/zookeeper-3.4.13/data
# the port at which the clients will connect
clientPort=2181
修改环境变量
[[email protected] conf]# export ZOOKEEPER_HOME=/usr/local/zookeeper-3.4.13
[[email protected] conf]# export PATH=$PATH:$ZOOKEEPER_HOME/bin
然后进入上层bin目录,执行 ./zkServer.sh start
[[email protected] bin]# ./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /run/media/root/zhou/usr/local/zookeeper-3.4.13/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
到这里我们的zookeeper就安装完成了。
二 springboot项目集成dubbo
引入必要jar包,这里我刚开始用的最新的dubbo版本但是后面死活找不到@[email protected],还是用回稳定可靠的吧,东西不是越新越好的哈哈。
<!-- 引入dubbo和zookeeper依赖 -->
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.1.0</version>
</dependency>
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>
然后我们的application.yml配置
#dubbo配置
dubbo:
application:
name: demo-provider
#注册中心地址
registry:
address: zookeeper://127.0.0.1:2181
#服务类包目录
scan:
base-packages: com.example.demo
#暴露服务方式
protocol:
#协议名称
name: dubbo
#协议端口.(默认是20880,修改端口,不同的服务提供者端口不能重复)
port: 20880
然后我们需要新建一个api项目,来定义我们的接口,然后在我们这个里面实现接口
在实现类上使用@com.alibaba.dubbo.config.annotation.Service(version = "1.0.0")注解
@Service
@com.alibaba.dubbo.config.annotation.Service(version = "1.0.0")
public class SourceServiceImpl implements SourceService {
@Autowired
private SourceMapper sourceMapper;
@Override
public Result<Boolean> delete(String id) {
Result<Boolean> result = Result.create();
if(this.sourceMapper.deleteByPrimaryKey(id)>0){
return result.success(true);
}
return result.fail("ERROR","删除失败");
}
@DataSource(DataSourceType.MASTER)
@Override
public PagedResult<SourceDTO> query() {
PageHelper.startPage(1,2);
List<Source> list = this.sourceMapper.selectByExample(new SourceExample());
PageInfo<Source> pageInfo = new PageInfo<>(list);
PagedResult<SourceDTO> pagedResult = new PagedResult<>();
pagedResult.setPageNum(pageInfo.getPageNum());
pagedResult.setPageSize(pageInfo.getPageSize());
pagedResult.setTotal(Integer.valueOf(String.valueOf(pageInfo.getTotal())));
pagedResult.setTotalPage(pageInfo.getPages());
List<SourceDTO> dtoList = new ArrayList<>();
SourceDTO sourceDTO;
for(Source source : list){
sourceDTO = new SourceDTO();
BeanUtils.copyProperties(source,sourceDTO);
dtoList.add(sourceDTO);
}
pagedResult.success(dtoList);
return pagedResult;
}
这样我们就完成了,springboot和dubbo的集成;其他消费者想使用也是很简单的引入我们api后使用@Reference注解制定版本号(和@@com.alibaba.dubbo.config.annotation.Service一致)
@Service
public class TestService {
@Reference(version = "1.0.0")
private SourceService sourceService;
public PagedResult<SourceDTO> query(){
return sourceService.query();
}
}
然后你我们的dubbo服务就可以使用了。
最后 dubbo-admin的安装
https://github.com/apache/incubator-dubbo-ops这个是他的地址,读一下readme,编译后运行就可以看到监控中心了
总的来说,真的很简单后面有空了,给大家分享下springcloud的搭建吧。