1、什么是Eureka
1.Eureka是netflix的一个子模块,也是核心模块之一,Eureka是一个基于REST的服务,用于定位服务,以实现云端中间层服务发现和故障转移。服务注册与发现对于微服务架构来说是非常重要的,有了服务发现和注册,只需要使用服务的标识符,就可以访问到服务,而不需要修改服务,而不需要修改服务调用的配置文件了。
2.Eureka的作用
1 Eureka采用了C-S的设计架构。Eureka Server作为服务注册功能的服务器,它是服务注册时中心。
而系统中的其他微服务,使用eureka的客户端连接到eureka server并维持心跳连接。这样系统的维护人员就可以通过eureka server来监控系统中各个微服务是否正常运行。SpringCloud的一些其他模块就可以通过eureka server来发现系统中的其他微服务,并执行相关的逻辑。
2.Eureka Server提供服务注册服务。各个节点启动后,会在Eureka Server中进行注册,这样Eureka server中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到。
3.Eureka client是一个java客户端,用于简化eureka server的交互,客户端同时也具备一个内置的,使用轮询负载算法的负载均衡器。在应用启动后,将会向Eureka Server发送心跳。如果Eureka Server在多个心跳周期内没有接收到某个节点的心跳,Eureka Server将会从服务注册表把这个服务节点移除。
4. Eureka服务治理机制
- 服务注册中心:服务端,提供注册与发现功能。
- 失效剔除时间间隔默认60s(eviction-interval-timer-in-ms=60 * 1000)
- 自我保护
- renew 15分钟之内低于85%,不过期,不剔除
- 需要客户端负载均衡,重试等
- 服务提供者:
- 注册
- 续约(续约间隔时间默认30s,失效时间默认90s)
- eureka.instance.lease-renewal-interval-in-seconds=30
- eureka.instance.lease-expiration-duration-in-seconds=90
- 取消租约(下线):重启或关闭
- 服务消费者
- 获取服务列表(registryFetchIntervalSeconds默认30s)
2. 什么是Zookeeper
ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。 Zookeeper是hadoop的一个子项目。在分布式应用中,由于工程师不能很好地使用锁机制,以及基于消息的协调机制不适合在 某些应用中使用,因此需要有一种可靠的、可扩展的、分布式的、可配置的协调机制来统一系统的状态。
1. Zookeeper设计目标
① 简单的数据结构:共享的树形结构,类似文件系统,存储于内存;
② 可以构建集群:避免单点故障,3-5台机器就可以组成集群,超过半数正常工作久能对外提供服务;
③ 顺序访问:对于每个读请求,zookeeper会分配一个全局唯一的递增编号,利用这个特性可以实现高级协调服务;
④ 高性能:基于内存操作,服务于非事务请求,适用于读操作为主的业务操作。3台zk集群能达到13W QPS
2. 哪些场景需要用到zk?
① 数据发布订阅 ② 负载均衡 ③ 命名服务 ④ Master选举 ⑤ 集群管理 ⑥ 配置管理 ⑦ 分布式队列 ⑧ 分布式锁