eureka工程搭建(eureka已经停更)
Eureka介绍:eureka是一个服务注册中心,如图:
之前项目之间接口调用是通过httpclient或者restTemplate(底层也是httpclient)进行调用,这样做有一个坏处:每一个项目的端口号和名字都要配置。所以,eureka就是把所有的项目都给注册到一个地方来,
然后用他们在yml文件中定义的名字:spring:application:name 来进行调用,再则,通过eureka的方式进行注册管理方便以后集成ribbon负载均衡或者openfeign,hystrix服务降级熔断等技术。
1.服务端搭建,pom文件
<dependencies>
<!--eureka-server-->
//服务端的jar包,相应的也有客户端的,两个不一样
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
//封装的实体类和返回格式
<dependency>
<groupId>cloud2020</groupId>
<artifactId>cloud-common-resources</artifactId>
<version>${project.version}</version>
</dependency>
<!--boot web acctuator-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
</dependencies>
2.yml文件
server:
port: 7001
eureka:
instance:
hostname: localhost
client:
# 下边这两行说明自己就是服务注册中心,其余所有的服务都要在服务注册中心注册才能互相调用,而自己不需要注册自己
register-with-eureka: false
fetch-registry: false
service-url:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka
3.主启动
因为ereka包含两个组件:client和server,在pom文件中也做了区分,注意eureka的server可以有多个代表集群,配置多个server时只需要在yml文件中的defaultZone加上其余的eureka的地址即可(互相注册)
另外,在主启动的类上加@EnableEurekaServer注解开启服务端eureka功能。
4.启动:输入localhost:7001可以看到显示没有可以可用实例,因为只是配置了服务端,没有配置客户端。
5.客户端修改
主启动加上 @EnableEurekaClient注解
pom文件添加新的jar:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
yml文件添加,注意之前配置的spring-application-name就是注册进服务中心以后实例的名字:
eureka:
client:
# 表示将自己注册到eureka服务中心去
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://localhost:7001/eureka
如果eureka的服务是集群配置则defaultZone需要这么配置
defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka
最后再次打开eureka的服务中心,可以看到服务已经注册进去了
6.集群的话需要建一个一样的项目,为了区分服务名如果在本地测试的话可以在windows操作系统的 C:\Windows\System32\drivers\etc下修改host文件,使127.0.0.1指向两个不同的服务名就可以
比如这里建了两个名字
eureka7001.com,
eureka7002.com
然后再yml文件的defaultZone中指向对方的地址,例如:
defaultZone: http://eureka7002.com:7002/eureka
这里的eureka7002.com就是在host文件中的127.0.0.1也就是localhost
最后启动,可以看到在7002下出现了7001的服务端,表示集群成功: