第238次(Eureka)
学习主题:Eureka
1. 创建consumer服务
(1) 创建一个Maven的jar项目。
(2) 修改POM文件,添加Eureka启动器。
<dependency>
(3) 修改POM文件,添加Spring Boot的Web启动器。
<dependency>
(4) 修改全局配置文件,添加注册中心集群配置。
spring.application.name=eureka-consumer
server.port=9091
#设置服务注册中心地址,指向另一个注册中心
eureka.client.serviceUrl.defaultZone=http://eureka1:8761/eureka/,http://eureka2:8761/eureka/
(5) 在Service中通过LoadBalancerClient完成对服务的调用。
package
(6) 创建Controller,在Controller中注入Service对象。
package
2. 在consumer中调用provider服务
(1) 启动Consumer服务。
(2) 测试Consumer服务,查看调用Provider所返回的数据。
3. Eureka架构图原理
(1) 请描述Eureka架构原理。
![ef35006a402b6c591d4ac42231198628.png](https://i-blog.csdnimg.cn/blog_migrate/13aa73ce6edf0b5eb9c4f98a5b8e355d.png)
Register(服务注册):把自己的 IP 和端口注册给 Eureka。
Renew(服务续约):发送心跳包,每 30 秒发送一次。告诉 Eureka 自己还活着。
Cancel(服务下线):当 provider 关闭时会向 Eureka 发送消息,把自己从服务列表中删除。防止 consumer 调用到不存在的服务。
Get Registry(获取服务注册列表):获取其他服务列表。
Replicate(集群中数据同步):eureka 集群中的数据复制与同步。
Make Remote Call(远程调用):完成服务的远程调用。
4. 什么是CAP定理
(1) 什么是CAP原则?
答:CAP 原则又称 CAP 定理,指的是在一个分布式系统中,Consistency(一致性)、Availability(可用性)、Partition tolerance(分区容错性),三者不可兼得
(2) C、A、P分别表示什么?
如上
(3) CA、CP、AP分别表示什么含义?
CA:如果想避免分区容错性问题的发生,一种做法是将所有 的数据(与事务相关的)都放在一台机器上。虽然无法100%保 证系统不会出错,但不会碰到由分区带来的负面效果。当然 这个选择会严重的影响系统的扩展性。
CP:相对于放弃〃分区容错性〃来说,其反面就是放弃可用性。 一旦遇到分区容错故障,那么受到影响的服务需要等待一定 时间,因此在等待时间内系统无法对外提供服务
AP:这里所说的放弃一致性,并不是完全放弃数据一致性, 而是放弃数据的强一致性,而保留数据的最终一致性。以网 络购物为例,对只剩下一件库存的商品,如果同时接受了两 个订单,那么较晚的订单将被告知商品告罄
5. ZooKeeper与Eureka的区别
(1) Zookeeper与Eureka有哪些区别?
![97722faa8a3ae87da8fccd1ecc14c724.png](https://i-blog.csdnimg.cn/blog_migrate/a34e1d0df01ab57c6aabf74f5df54cbc.jpeg)
6. Eureka的服务自我保护
(1) 什么是自我保护模式?
答:一般情况下,微服务在Eureka上注册后,会每30秒发送心跳包,Eureka通过心跳来判断服务是否健康,同时会定期删除超过90秒没有发送心跳服务
(2) 为什么要启动自我保护?
答:因为同时保留〃好数据”与"坏数据"总比丢掉任何数据要更好,当网络故障恢复后, 这个Eureka节点会退出"自我保护模式
7. 关闭Eureka的服务自我保护
(1) 如何关闭自我保护?
修改 Eureka Server 配置文件
#关闭自我保护:true 为开启自我保护,false 为关闭自我保护
eureka.server.enableSelfPreservation=false
#清理间隔(单位:毫秒,默认是 60*1000)
eureka.server.eviction.interval-timer-in-ms=60000
8. 服务的优雅停服
(1) 如何实现优雅停服?
不需要再 Eureka Server 中配置关闭自我保护
需要再服务中添加 actuator.jar 包
修改配置文件:
#启用 shutdown
endpoints.shutdown.enabled=true
#禁用密码验证
endpoints.shutdown.sensitive=false
(2) 访问优雅停服的URI是什么?
答:http://hostName:port/shutdown
9. 开启Eureka注册中心的安全认证
(1) 实现Eureka安全认证的步骤是什么?
在 Eureka Server 中添加 security 包
<dependency>
修改 Eureka Server 配置文件
#开启 http basic 的安全认证
security.basic.enabled=true
security.user.name=user
security.user.password=123456
修改访问集群节点的 url
eureka.client.serviceUrl.defaultZone=http://user:123456@eureka2:8761/eureka/
(2) 如果开启安全认证,注册中心在集群环境下各个节点访问时,如何传递用户名与密码?
如上