Eureka 服务的注册与发现

问题:系统会根据业务被拆分成了很多的微服务,微服务的信息如何管理?
Spring Cloud 中提供服务注册中心来管理微服务信息。
为什么要用注册中心?
1. 微服务数量众多,要进行远程调用就需要知道服务端的 ip 地址和端口,注册中心帮助我们管理这些服务的ip 和端口。
2. 微服务会实时上报自己的状态,注册中心统一管理这些微服务的状态,将存在问题的服务踢出服务列表,客户端获取到可用的服务进行调用。
Eureka 介绍
Spring Cloud Eureka 是对 Netflix 公司的 Eureka 的二次封装,它实现了服务治理的功能, Spring Cloud Eureka 提供 Eureka Server 服务端与 Eureka Client 客户端 ,服务端即是 Eureka 服务注册中心,客户端完成微服务向Eureka 服务的注册与发现。
客户端同时也具备一个内置的使用轮询 (round-robin) 负载算法的负载均衡器。在微服务启动后,将会向 Eureka Server发送心跳 ( 默认周期为 30 ) 。如果 Eureka Server 在多个心跳周期内没有接收到某个节点的心跳,EurekaServer 将会从服务注册表中把这个服务节点移除(默认 90 秒)
下图显示了 Eureka Server Eureka Client 的关系
1. Eureka Server 是服务端,负责管理各个微服务注册和发现。
2. 在微服务上添加 Eureka Client 代码,就会访问到 Eureka Server 将此微服务注册在 Eureka Server 中,从而使服务消费方能够找到。
3. 微服务(服务消费者)需要调用另一个微服务(服务提供者)时,从 Eureka Server 中获取服务调用地址,进行远程调用。
搭建单机版 Eureka Server 服务注册中心
    创建 microservice-cloud-05-eureka-6001 工程
配置 pom.xml 文件
配置 application.yml 文件
      在 src/main/resources 下新建 application.yml 文件,配置如下:
创建主启动类
         在启动类上添加 @EnableEurekaServer 注解,表示它是一个 Eureka Server 服务注册中心
功能测试
启动: microservice-cloud-05-eureka-6001
访问: http://localhost:6001/ ,效果如下:
服务注册到 Eureka Server 服务注册中心
说明:
将服务提供者( microservice-cloud-03-provider-product-8001 )注册到 Eureka Server 注册中心( microservice_cloud-05-eureka-6001)
下面对 microservice-cloud-03-provider-product-8001 模块做对应的修改
配置 pom.xml 文件
完整配置
配置 application.yml 文件
完整配置
修改主启动类
在启动类上添加 @EnableEurekaClient 注解,表示它是一个 Eureka 的客户端,本服务启动后会自动注册进 Eureka Sever服务列表中
功能测试
先要启动 Eureka Server microservice-cloud-05-eureka-6001
再启动 Eureka Client microservice-cloud-03-provider-product-8001
访问: http://localhost:6001/
商品提供者已经注册进 Eureka Server
微服务注册信息完善
指定实例 ID
问题:当前 状态中 含有主机名称
解决:修改 microservice-cloud-03-provider-product-8001 application.yml 文件
访问路径显示 IP 地址
问题:鼠标放在 实例 ID 上,显示的还是主机名,而不是显示 IP 地址
解决:修改 microservice-cloud-03-provider-product-8001 application.yml 文件
Eureka Server 自我保护机制
    自我保护现象
如长时间没有访问、检测不到心跳,或者修改实例名称, eureka 启动自我保护机制
下图红色提示信息:表示已启动了自我保护机制
在某时刻某一个微服务不可用了, Eureka 不会立刻删除,依旧会对该微服务的信息进行保存
什么是自我保护机制
Eureka Server 在一定时间内(默认 90 秒)没有接收到某个微服务的心跳, Eureka Server 会从服务列表将此服务实例注销。但是如果出现网络异常情况(微服务本身是正常的),微服务与Eureka Server 之间无法正常通信,以上行为可能变得非常危险了—— 因为微服务本身其实是正常的,此时本不应该注销这个微服务。
Eureka Server 有一种 自我保护模式 来解决这个问题 —— Eureka Server 在短时间内丢失过多客户端时(可能发生了网络故障),此时Eureka Server 会进入自保护模式,一旦进入该模式, Eureka Server 就会保护服务注册表中的信息,不再删除服务注册表中的数据(也就是不会注销任何微服务)。当网络故障恢复后,该Eureka Server 会 自动退出自我保护模式。
所以, 自我保护模式是一种应对网络异常的安全保护措施。它的架构哲学是宁可同时保留所有微服务(健康的微服务和不健康的微服务都会保留),也不盲目注销任何健康的微服务。使用自我保护模式,可以让Eureka 集群更加的健壮、稳定。
自我保护配置
    在开发阶段建议禁用自我保护模式,默认开启了
          在 eureka server 中配置: (microservice-cloud-05-eureka-6001)
搭建集群版 Eureka Server 服务注册中心
为了避免 Eureka Server 的失效, Eureka Server 高可用环境需要部署两个及以上 Eureka Server ,它们互相向对方
注册。如果在本机启动两个 Eureka 需要 注意两个 Eureka Server 的端口要设置不一样,如下图:
1 、在实际使用时 Eureka Server 至少部署两台服务器,实现高可用。
2 、两台 Eureka Server 互相注册。
3 、微服务需要连接两台 Eureka Server 注册,当其中一台 Eureka 死掉也不会影响服务的注册与发现。
4 、微服务会定时向 Eureka Server 发送心跳,报告自己的状态。
5 、微服务从注册中心获取服务地址以 RESTful 方式发起远程调用
创建两个 Eureka Server 模块
创建 microservice - cloud - 05 - eureka - 6002 ,与 microservice - cloud - 05 - eureka - 6001 创建方式类似
配置 pom.xml
        将 6001 中的 pom.xml 依赖复制到 6002 模块中
主启动类
        将 6001 中的主启动类 复制到 6002 模块中,并将类名重命名。
IP 与域名绑定
        找到 C:\Windows\System32\drivers\etc 目录下的 hosts 文件
IP 与域名绑定进 hosts 文件
Eureka Server 组成高可用,两个 Eureka Server 互相向对方注册,这里需要通过域名访问,这里我们设置两个
Eureka Server 的域名分别为 eureka6001.com eureka6002.com
配置 2 Eureka Server 服务端的 yml 文件
        6001 服务端模块的 application.yml
        6002 服务端模块 的 application.yml , 注意修改端口号 6002         
将服务提供者 注册到 2 Eureka Server 集群中
        修改 microservice-cloud-03-provider-product-8001 中的 application.yml 文件,图示:
完整配置:
效果测试
1. 先启动 2 Eureka Server 集群 (6001 6002)
2. 访问:
http://eureka6001.com:6001/
http://eureka6002.com:6002/
再启动 服务提供者 microservice-cloud-03-provider-product-8001

当前架构效果:服务提供者 8001 已注册进 Eureka 集群中
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JAVA代码搬运工

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值