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