2018-07-05_01

2018-07-05  本文已影响0人  zxl_king

使用 Eureka 做服务发现

 

邪恶的Sheldon 关注

2017.12.11 09:35* 字数 1934 阅读 856评论 0喜欢 0

Zookeeper 做注册中心的缺陷

Peter Kelley(个性化教育初创公司 knewton 的一名软件工程师)发表了一篇文章说明为什么Zookeeper 用于服务发现是一个错误的做法,他主要提出了三个缺点:

ZooKeeper 无法很好的处理网络分区问题,当网络分区中的客户端节点无法到达 Quorum 时,会与 ZooKeeper 失去联系,从而也就无法使用其服务发现机制。百度

服务发现系统应该是一个 AP 系统,设计上针对可用性;而 ZooKeeper 是一个 CP 系统。

ZooKeeper 的设置和维护非常困难,实际操作的时候也容易出错,比如在客户端重建 Watcher,处理 Session 和异常的时候。

当然, Peter Kelley 提出的这几个问题并不是不能克服的,并不能说明基于 ZooKeeper 就不能做好一个服务发现系统,但是我们可能有更简洁的方案来实现。

Eureka 介绍

什么是 Eureka

官方的介绍在这里Eureka Wiki。Eureka 是 Netflix 开源的一个 Restful 服务,主要用于服务的注册发现。Eureka 由两个组件组成: Eureka 服务器和 Eureka 客户端。 Eureka 服务器用作服务注册服务器。 Eureka 客户端是一个 Java 客户端,用来简化与服务器的交互、作为轮询负载均衡器,并提供服务的故障切换。 Netflix 在其生产环境中使用的是另外的客户端,它提供基于流量、资源利用率以及出错状态的加权负载均衡。

开源: 大家可以对实现一探究竟,甚至修改源代码。

可靠: 经过 Netflix 多年的生产环境考验,使用应该比较靠谱处心。

功能齐全: 不但提供了完整的注册发现服务,还有 Ribbon 等可以配合使用服务。

基于 Java: 对于 Java 程序员来说,使用起来,心里比较有底。

Spring Cloud 可以使用 Spring Cloud,与 Eureka 进行了很好的集成,使用起来非常方便。

Eureka 架构:

Netflix 主要是在 AWS 中使用 Eureka 的,虽然同时也支持本地环境,但是了解 AWS 的一些基础概念对于理解 Eureka 的设计非常有帮助。

上一篇下一篇

猜你喜欢

热点阅读