上次搭建了一个比较简单的springcloud脚手架,是使用eureka作为脚手架,但是最近发现朋友圈有好多刷eureka2..x开源工作停止的推文,也就是springcloud之后的版本可能不会使用eureka作为注册中心,而且继续使用eureka2.0后的版本是有版权问题的,所以今天花了几个小时重新搭建了一个由zookeeper作为注册中心的springcloud脚手架,其结构如下
因为注册中心换成zookeeper,所以原有的server可以去掉了
配置所需要的jar包
parent的pom不需要改变,把子包的基于eureka的jar替换成zookeeper
在zookeeper中添加配置
修改配置文件
bootstrap.properties换成zookeeper作为配置中心的配置,看注释应该也应该可以明白,和原来的config的规则类似
application.properties修改如下,也比较简单
修改启动类的注解
添加一个能查看所有接口的api
discoveryClient通过Autowire自动注入即可,看这个名字也知道是由启动类上的注解完成注入的
启动client1
这里其实我已经全部搭建完了,所以还有网关和配置的服务,client2也是如上搭建即可
搭建zuul网关服务
maven中加入zookeeper相关的jar,配置文件和client大同小异,启动类注解也不需要变化,启动之后如下
搭建config服务
因为使用zookeeper作为配置中心所以不需要向之前那样使用spring cloud-config,只需要如下的包即可
因为使用了zookeeper作为配置中心,所以修改配置可以直接通过zkclient修改,也就是其实config这个服务是可有可无的(除非继续使用使用springcloud-config),当然既然我创建了这个服务说明肯定要有点作用的,没错,我们可以提供rest的api查看和修改zk中的配置。
创建zk 的工具类
具体看github中的代码,将工具类注入spring容器中
编写controller
这里要说明一个问题,就是使用restful风格的api会有个问题,就是path因为在zk中是/,这样就会有问题,所以定义了自定义的符号转换(-0等于/ ,-1等于-),也就是zk中的地址为/config/client-dev/name转换后为-0config-0client-dev-0name。,当然我也提供了不是restfull风格的,这样就不需要转义了。
启动后测试如下
这里就先展示两个测试结果。