服务注册中心和dubbo中的zokeerper一样,dubbo里面需要搭建服务注册中心,Spring Cloud里面也需要搭建服务注册中心(不同于zokeerper的是Spring Cloud里面的注册中心就是一个Spring Boot项目),使用普遍的是Spring Cloud Eureka,它来自Spring Cloud Netfilex包括:Eureka、Ribbon、Hystrix、Feign,Spring Cloud Netfilex闭源后很多人担心Spring Cloud不能使用了,但是紧接着阿里巴巴搞了一个Spring Cloud Alibaba也提供了一整套的组件,和Spring Cloud Netfilex中的那一套差不多。(其实Spring Cloud Netfilex闭源对国内影响不大,新版本闭源,老版本还可以用)。
创建一个maven工程,删除src目录
创建一个名为eureka的Module(会创建很多模块,但是和maven的多模块项目是不同的,每个模块都可以独立运行)
加入依赖:
在启动类上面加上如下注解:
application.properties配置文件如下:
spring.application.name=eureka
server.port=1111
eureka.client.fetch-registry=false
eureka.client.register-with-eureka=false
spring.application.name:表示取名字
server.port:表示端口号
eureka.client.fetch-registry=false:表示否允许它去获取其他的注册的服务,作为一个服务注册中心,这里无需调用其他服务
eureka.client.register-with-eureka=false:在spring cloud里面,所有的东西都是一个spring boot项目,包括服务注册中心,然后我们以后真正的写业务的工程也是spring boot项目,一个spring boot就是一个微服务,只不过eureka比较特殊,它不提供业务,它是做服务注册中心的。这时候它就有两个身份一个是它是一个服务注册中心,另一方面他也是一个普通的微服务,所有这个eureka.client.register-with-eureka是说是否要把自己注册到eureka上面去,目前还不需要把自己注册到自己上面去,所以关闭
然后启动项目查看:
注册中心的控制台,能看到这个说明注册中心已经启动了
这是一个单个的服务注册中心,还可以把它搭建成一个集群的形式,如果要搭建成集群就:启动两个服务,集群的原理很简单,就是A把自己注册在B上面,B把自己注册到A上面,互相注册完后就可以共享数据了。还是在原项目中添加如下配置文件:
peer1和peer2的意思是因为:
我在C:\Windows\System32\drivers\etc中有一个hosts文件里做了如下配置:
两个文件弄好后打包,打包完就启动两个实例,启动后它就是一个集群了
这样放在一个项目中测试就用到了以前的切换生产环境和开发环境的配置:spring.profiles.active
启动成功后再来访问刷新页面
访问peer2的效果如下
这就是我们说的搭建服务注册中心,实际上很简单就是一个spring boot工程而已,如果要搭建集群就把这个spring boot工程启动多次。