微服务:Eureka,Ribbon,Hystrix( 三 )

3)在 application.yml 文件中配置 Eureka server 服务端口,服务名等信息:
server:port: 9200spring:application:name: lagou-cloud-eurekaeureka:# Eureka server 本身也是 eureka 的一个客户端,因为在集群下需要与其他 eureka server 进行数据的同步client:# 定义 eureka server url, 如果是集群情况下 defaultZone 设置为集群下的别的 Eureka Server 的地址,多个地址使用逗号隔开service-url:defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka# 自己就是服务不需要注册自己register-with-eureka: false# 自己就是服务不需要从 Eureka Server 获取服务信息, 默认为 truefetch-registry: falseinstance:# 当前 eureka 实例的主机名hostname: localhost# 使用 ip 注册,否则会使用主机名注册了(此处考虑到对老版本的兼容,新版本经过实验都是 ip)prefer-ip-address: true# 自定义实例显示格式,加上版本号,便于多版本管理,注意是 ip-address,早期版本是 ipAddressinstance-id: ${spring.cloud.client.ip-address}:${spring.application.name}:${server.port}:@project.version@4)编写启动类,声明当前服务为 Eureka 注册中心
package com.renda.eureka;?import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;?/** * @author Renda Zhang * @since 2020-11-01 16:36 */@SpringBootApplication@EnableEurekaServer // 表示当前项目为 Eureka Serverpublic class EurekaApplication {?public static void main(String[] args) {SpringApplication.run(EurekaApplication.class, args);}?}5)访问 http://localhost:9200/,如果出现 Eureka 注册中心后台页面,则表明 Eureka Server 发布成功 。
6)商品微服务和页面静态化微服务注册到 Eureka 。
两个微服务的 POM 文件中都添加 Eureka Client 依赖:
<!-- Eureka client --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency>两个微服务的 application.yml 都配置 Eureka 服务端信息:
eureka:client:service-url:defaultZone: http://localhost:9200/eureka/instance:# 使用 ip 注册,否则会使用主机名注册了(此处考虑到对老版本的兼容,新版本经过实验都是 ip)prefer-ip-address: true# 自定义实例显示格式,加上版本号,便于多版本管理,注意是 ip-address,早期版本是 ipAddressinstance-id: ${spring.cloud.client.ip-address}:${spring.application.name}:${server.port}:@project.version@修改两个微服务的启动类,加上注解:
// 将当前项目作为 Eureka Client 注册到 Eureka Server, 只能在 Eureka 环境中使用@EnableEurekaClient或者使用可以应用在所有服务注册中心环境的注解:
// 将当前项目表示为注册中心的客户端,向注册中心进行注册,可以在所有的服务注册中心环境下使用@EnableDiscoveryClient7)刷新 Eureka 注册中心后台页面,发现新增了两个微服务信息 。
搭建 Eureka Server 高可用集群在互联网应用中,服务实例很少有单个的 。
如果 EurekaServer 只有一个实例,该实例挂掉,正好微服务消费者本地缓存列表中的服务实例也不可用,那么这个时候整个系统都受影响 。
在生产环境中,会配置 Eureka Server 集群实现高可用 。
Eureka Server 集群之中的节点通过点对点(P2P)通信的方式共享服务注册表 。
开启两台 Eureka Server 以搭建集群 。
修改个人电脑中 host 地址:
127.0.0.1 LagouCloudEurekaServerA127.0.0.1 LagouCloudEurekaServerB将 lagou-cloud-eureka 复制一份为 lagou-cloud-eureka2
lagou-cloud-eureka 的 application.yml:
server:port: 9200spring:application:name: lagou-cloud-eurekaeureka:# Eureka server 本身也是 eureka 的一个客户端,因为在集群下需要与其他 eureka server 进行数据的同步client:# 定义 eureka server url, 如果是集群情况下 defaultZone 设置为集群下的别的 Eureka Server 的地址,多个地址使用逗号隔开service-url:defaultZone: http://LagouCloudEurekaServerB:9201/eureka# 表示是否向 Eureka 中心注册自己的信息,因为自己就是 Eureka Server 所以不进行注册, 默认为 trueregister-with-eureka: true# 是否查询 / 拉取 Eureka Server 服务注册列表,默认为 truefetch-registry: trueinstance:# 使用 ip 注册,否则会使用主机名注册了(此处考虑到对老版本的兼容,新版本经过实验都是 ip)prefer-ip-address: true# 自定义实例显示格式,加上版本号,便于多版本管理,注意是 ip-address,早期版本是 ipAddressinstance-id: ${spring.cloud.client.ip-address}:${spring.application.name}:${server.port}:@project.version@


推荐阅读