上次搭建了一个比较简单的springcloud脚手架,是使用eureka作为脚手架,但是最近发现朋友圈有好多刷eureka2..x开源工作停止的推文,也就是springcloud之后的版本可能不会使用eureka作为注册中心,而且继续使用eureka2.0后的版本是有版权问题的,所以今天花了几个小时重新搭建了一个由zookeeper作为注册中心的springcloud脚手架,其结构如下

springcloud黑名单_spring

因为注册中心换成zookeeper,所以原有的server可以去掉了


配置所需要的jar包

parent的pom不需要改变,把子包的基于eureka的jar替换成zookeeper

springcloud黑名单_zookeeper_02

在zookeeper中添加配置


springcloud黑名单_zookeeper_03

修改配置文件

bootstrap.properties换成zookeeper作为配置中心的配置,看注释应该也应该可以明白,和原来的config的规则类似

springcloud黑名单_springcloud_04

application.properties修改如下,也比较简单

springcloud黑名单_github_05


修改启动类的注解


springcloud黑名单_springcloud黑名单_06

添加一个能查看所有接口的api

discoveryClient通过Autowire自动注入即可,看这个名字也知道是由启动类上的注解完成注入的


springcloud黑名单_github_07

启动client1

这里其实我已经全部搭建完了,所以还有网关和配置的服务,client2也是如上搭建即可


springcloud黑名单_zookeeper_08

搭建zuul网关服务

maven中加入zookeeper相关的jar,配置文件和client大同小异,启动类注解也不需要变化,启动之后如下

springcloud黑名单_springcloud_09


搭建config服务

因为使用zookeeper作为配置中心所以不需要向之前那样使用spring cloud-config,只需要如下的包即可

springcloud黑名单_zookeeper_10


因为使用了zookeeper作为配置中心,所以修改配置可以直接通过zkclient修改,也就是其实config这个服务是可有可无的(除非继续使用使用springcloud-config),当然既然我创建了这个服务说明肯定要有点作用的,没错,我们可以提供rest的api查看和修改zk中的配置。


创建zk 的工具类

具体看github中的代码,将工具类注入spring容器中

springcloud黑名单_springcloud黑名单_11


编写controller

这里要说明一个问题,就是使用restful风格的api会有个问题,就是path因为在zk中是/,这样就会有问题,所以定义了自定义的符号转换(-0等于/ ,-1等于-),也就是zk中的地址为/config/client-dev/name转换后为-0config-0client-dev-0name。,当然我也提供了不是restfull风格的,这样就不需要转义了。


springcloud黑名单_zookeeper_12

启动后测试如下

springcloud黑名单_github_13

springcloud黑名单_zookeeper_14

这里就先展示两个测试结果。