Eureka在2022年已经确定的是,2.x版本开源计划已经停止了,1.x版本陆陆续续还是有人在维护的。还有很多最早使用微服务的公司还在继续用着eureka作为注册中心,也是很多同学学习微服务的敲门砖。
创建一个平平无奇的maven工程,取名为eureka-server
创建好maven工程之后,导入spring-boot与spring-cloud依赖版本管理依赖,注意两者的版本对应关系,或者你直接用我的版本。
2.3.7.RELEASE Hoxton.SR9 org.springframework.cloud spring-cloud-dependencies ${spring-cloud.version} pom import org.springframework.boot spring-boot-dependencies ${spring-boot.version} pom import org.springframework.cloud spring-cloud-starter-netflix-eureka-server org.springframework.boot spring-boot-starter-web
server:port: 7001
eureka:instance:# eureka服务端的实例名称hostname: localhostclient:# false表示不向注册中心注册自己register-with-eureka: false# 表示自己是注册中心,职责是维护服务实例,不去检索服务fetch-registry: falseservice-url:defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
很正常的一个启动类,只是添加了@EnableEurekaServer
标签
@SpringBootApplication
@EnableEurekaServer
public class EurekaMain7001 {public static void main(String[] args) {SpringApplication.run(EurekaMain7001.class, args);}
}
访问 http://localhost:7001,出现下面类似的界面就是搭建成功了
一个简单的Eureka客户端搭建就完成了,整体上就这些步骤,其它的配置可以在遇到问题后再去学习解决,常见的问题有eureka的自我保护机制。
实际生产中,eureka决定着所有服务的调用,如果eureka只有单机的话,eureka所在的服务器挂了,所有的服务都会无法工作,所以搭建为集群模式,非常有必要的。eureka集群模式的思想是互相注册,假设有A、B、C三个eureka服务端,A中要注册B、C两个服务端,B中要注册A、C两个服务端,C中要注册A、B两个服务端。
听起来很复杂,实际上要做的不难。在这里我所做的都是在自己本地电脑上搭建的eureka集群,和实际生产的多台服务器略有不同。
多台服务器的情况下,省略这部
用随便一个文本编辑器,右键选择用管理员权限打开,找到 C: -> windows -> system32 -> drivers -> etc -> hosts 文件,添加本机ip的多个域名。
hostname将localhost修改为你要设置的域名,defaultZone不再指向自己,而是指向了另外两个注册中心
方式1:
实际生产部署多台机时,你可以在同一个eureka项目下,配置多份application文件,比如application-7001.yml,application-7002.yml,application-7003.yml,然后启动时添加启动参数-Dspring.profiles.active=7001
这样去启动,分别启动3个服务。
比如这样的
启动参数选择7001
方式2:
在我这里,由于是有非常好用的idea,我可以直接修改一下vm options 就能启动了,我连多配置文件这步都不做了,原理是相同的。
在Services窗口,选择启动的应用,Ctrl + D
在弹出来的窗口中,修改应用名称,修改vm options参数
点击 apply ,点击ok,即可在Not Started分栏看到刚复制的配置,点击启动即可。
可以看到3个集群中彼此互相依赖
这样客户端就会同时被注册到集群中的每一个服务中