概况:Provider 和 Consumer 分别作为服务启动,并且注册到 Eureka 上面去,以 provider 为例,provider 注册时会告诉 eureka,我叫 provider,我的地址是 xx.xx.xx.xx,我的端口是 xx,我的 xx 是 xx,就是说,provider 会将自己的一些元数据信息告诉 eureka;同理,consumer 也是如此。
接下来,consumer 要调用 provider 的接口,但是它不知道 provider 的地址是什么,他只知道要调用的服务叫 provider,于是 consumer 找到 eureka,从 eureka 上查询出来 provider 的具体地址和端口,这个具体的地址和端口,可能是一个,也可能是多个(集群化部署)。
4.项目集成搭建 4.1创建服务中心Eureka创建子项目microservicecloud-eureka-7001
Pom 添加依赖
<!--eureka-server服务端 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
配置文件
application.yml
server:
port: 7001
eureka:
instance:
hostname: eureka7001.com #eureka服务端的实例名称
client:
register-with-eureka: false #false表示不向注册中心注册自己。
fetch-registry: false #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
service-url:
defaultZone: ${eureka.instance.hostname}:${server.port}/eureka/ #设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址(单机)。
启动类:
@SpringBootApplication
@EnableEurekaServer // EurekaServer服务器端启动类,接受其它微服务注册进来
public class EurekaServer7001_App {
public static void main(String[] args) {
SpringApplication.run(EurekaServer7001_App.class, args);
}
}
启动测试:
:7001/
4.2将服务的注册进Eureka
创建提供服务的客户端,并向服务注册中心注册自己。
1.引两个包
如修改8001工程,pom.xml 添加这两个包:
<!-- 将微服务provider侧注册进eureka -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
2.修改8001 的yml,后面追加
eureka:
client: #客户端注册进eureka服务列表内
service-url:
defaultZone: :7001/eureka
3.修改8001启动类,添加注解
@EnableEurekaClient//表明是Eureka客户端
4.测试:7001/
就可以看到服务名了。
4.3 Eureka的高可用性
Eureka Server除了单点运行之外,还可以通过运行多个实例,并进行互相注册的方式来实现高可用的部署。
Eureka的集群配置
1.原理:把功能多部署几份应当高并发的请求提供服务。
2.搭建eureka-7002,eureka-7003,
复制eureka-7001的pom文件、启动类、yml文件,改相应的名称;
修改系统hosts文件映射:
添加
127.0.0.1 eureka7001.com
127.0.0.1 eureka7002.com
127.0.0.1 eureka7003.com
每个注册中心yml文件,两两注册,配置集群:
defaultZone: :7002/eureka/,:7003/eureka/
相应的客户端8001也修改yml文件
defaultZone: :7001/eureka/,:7002/eureka/,:7003/eureka/
可以看到集群信息: