`
tangkuo
  • 浏览: 100336 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

eureka---开 始就被设计成高可用与可伸缩的Service发现服务,这两个特点也是Netflix公司开发所有平台的两个特色

阅读更多
(注:Eureka由两个组件组成:Eureka服务器和Eureka客户端。Eureka服务器用作 服务注册服务器。Eureka客户端是一个java客户端,用来简化与服务器的交互、作为轮询负载均衡器,并提供服务的故障切换支持。

首先,在Eureka平台中,如果某台服务器宕机,Eureka不会有类似于ZooKeeper的选举leader的过程;客户端请求会自动切换 到新的Eureka节点;当宕机的服务器重新恢复后,Eureka会再次将其纳入到服务器集群管理之中;而对于它来说,所有要做的无非是同步一些新的服务 注册信息而已。所以,再也不用担心有“掉队”的服务器恢复以后,会从Eureka服务器集群中剔除出去的风险了。Eureka甚至被设计用来应付范围更广 的网络分割故障,并实现“0”宕机维护需求。当网络分割故障发生时,每个Eureka节点,会持续的对外提供服务(注:ZooKeeper不会):接收新 的服务注册同时将它们提供给下游的服务发现请求。这样一来,就可以实现在同一个子网中(same side of partition),新发布的服务仍然可以被发现与访问。

  但是,Eureka做到的不止这些。正常配置下,Eureka内置了心跳服务,用于淘汰一些“濒死”的服务器;如果在Eureka中注册的服务, 它的“心跳”变得迟缓时,Eureka会将其整个剔除出管理范围(这点有点像ZooKeeper的做法)。这是个很好的功能,但是当网络分割故障发生时, 这也是非常危险的;因为,那些因为网络问题(注:心跳慢被剔除了)而被剔除出去的服务器本身是很”健康“的,只是因为网络分割故障把Eureka集群分割 成了独立的子网而不能互访而已。

  幸运的是,Netflix考虑到了这个缺陷。如果Eureka服务节点在短时间里丢失了大量的心跳连接(注:可能发生了网络故障),那么这个 Eureka节点会进入”自我保护模式“,同时保留那些“心跳死亡“的服务注册信息不过期。此时,这个Eureka节点对于新的服务还能提供注册服务,对 于”死亡“的仍然保留,以防还有客户端向其发起请求。当网络故障恢复后,这个Eureka节点会退出”自我保护模式“。所以Eureka的哲学是,同时保 留”好数据“与”坏数据“总比丢掉任何”好数据“要更好,所以这种模式在实践中非常有效。

  最后,Eureka还有客户端缓存功能(注:Eureka分为客户端程序与服务器端程序两个部分,客户端程序负责向外提供注册与发现服务接口)。 所以即便Eureka集群中所有节点都失效,或者发生网络分割故障导致客户端不能访问任何一台Eureka服务器;Eureka服务的消费者仍然可以通过 Eureka客户端缓存来获取现有的服务注册信息。甚至最极端的环境下,所有正常的Eureka节点都不对请求产生相应,也没有更好的服务器解决方案来解 决这种问题时;得益于Eureka的客户端缓存技术,消费者服务仍然可以通过Eureka客户端查询与获取注册服务信息,这点很重要。

  Eureka的构架保证了它能够成为Service发现服务。它相对与ZooKeeper来说剔除了Leader节点的选取或者事务日志机制,这 样做有利于减少使用者维护的难度也保证了Eureka的在运行时的健壮性。而且Eureka就是为发现服务所设计的,它有独立的客户端程序库,同时提供心 跳服务、服务健康监测、自动发布服务与自动刷新缓存的功能。但是,如果使用ZooKeeper你必须自己来实现这些功能。Eureka的所有库都是开源 的,所有人都能看到与使用这些源代码,这比那些只有一两个人能看或者维护的客户端库要好。

  维护Eureka服务器也非常的简单,比如,切换一个节点只需要在现有EIP下移除一个现有的节点然后添加一个新的就行。Eureka提供了一个 web-based的图形化的运维界面,在这个界面中可以查看Eureka所管理的注册服务的运行状态信息:是否健康,运行日志等。Eureka甚至提供 了Restful-API接口,方便第三方程序集成Eureka的功能。

  结论

  关于Service发现服务通过本文我们想说明两点:1、留意服务运行的硬件平台;2、时刻关注你要解决的问题,然后决定 使用什么平台。Knewton就是从这两个方面考虑使用Eureka替换ZooKeeper来作为service发现服务的。云部署平台是充满不可靠性 的,Eureka可以应对这些缺陷;同时Service发现服务必须同时具备高可靠性与高弹性,Eureke就是我们想要的!




http://blog.csdn.net/defonds/article/details/36678783


   参考资料

    https://github.com/Netflix/eureka/wiki/Building-Eureka-Client-and-Server
    https://github.com/Netflix/eureka/wiki/Configuring-Eureka
    http://git-scm.com/download/linux
    http://www.gradle.org/installation
    http://www.javacodegeeks.com/2012/08/how-to-install-gradle.html
    http://wiki.openkm.com/index.php/Configure_Tomcat_service_linux



Netflix的Eureka

Eureka是Netflix的中间层,用于负载均衡和服务发现。在应用服务中既存有服务器组件,也有智能客户端。服务器和客户端都采用java语言编写,这就意味着理想的应用场景是用于采用java编写的服务,或者是与JVM兼容的语言编写的服务。

Eureka服务器用于注册服务。他们推荐在AWS每个可用的区域运行一个Eureka服务器,通过它来形成聚簇。服务器通过异步模式互相复制各自的状态,这意味着在任意给定的时间点每个实例关于所有服务的状态是有细微差别的。

服务的注册由客户端组件处理。服务嵌入在客户端应用程序代码中。在运行时,客户端注册服务并周期性的发送心跳来更新它的租约。

服务的发现也由智能客户端来处理。它从服务器端检索当前注册的信息并把它们缓存在本地。客户端周期性能刷新它的状态同时处理负载均衡和失效备援。

Eureka在设计时就考虑了失败时的恢复。它依托强一致性提供良好的可用性,可在运行在多种不同的失败场景中。如果聚簇中有分片,那么Eureka就转入自我保护模式。它允许在分片期间过行服务的发现和注册,当分片结束时,聚簇中的成员会把它们的状态再次合并起来。


http://www.oschina.net/translate/service-discovery-in-the-cloud?cmp&p=1


分享到:
评论

相关推荐

    spring-cloud-starter-netflix-eureka-server-1.4.5.RELEASE.jar

    spring-cloud-starter-netflix-eureka-server-1.4.5.RELEASE.jar

    springcloud-Netflix-eureka demo 可做参考

    本项目"springcloud-Netflix-eureka demo"提供了一个基于Spring Boot搭建的基础服务框架,旨在帮助开发者理解和学习如何使用Eureka进行服务注册与发现,以及Ribbon客户端负载均衡。 首先,我们来看Eureka。Eureka是...

    Python 编写的 eureka 客户端python-eureka-client-main

    这个名为`python-eureka-client`的项目正是为了解决Python应用在Spring Cloud环境下如何与Eureka服务器交互的问题。本文将深入探讨Python Eureka客户端的功能、用法以及其在实际应用中的价值。 1. **Eureka简介** ...

    eureka-service-two.zip

    Eureka是Netflix公司开源的一个基于REST的服务发现组件,它是Spring Cloud生态体系中的关键角色,主要负责服务的注册与发现。Eureka采用了客户端-服务器架构,客户端(服务提供者)向服务器(服务注册中心)注册自己...

    spring-cloud-netflix-eureka-server-2.0.4.RELEASE.jar

    Eureka修改增加页面操作,用于多人开发测试操作流程。可以更好的进行协调操作,只需要替换本地仓库的jar包就行

    spring-cloud-netflix-eureka-server-1.4.5.RELEASE.jar

    spring-cloud-netflix-eureka-server-1.4.5.RELEASE.jar

    spring-cloud-netflix-eureka-client-1.4.5.RELEASE.jar

    spring-cloud-netflix-eureka-client-1.4.5.RELEASE.jar

    eureka-server.zip

    Eureka是Netflix公司开源的一个基于REST的服务发现框架,它是Spring Cloud微服务架构中的重要组件,主要负责服务的注册与发现。"eureka-server.zip"是一个包含Eureka服务注册中心的压缩包,通过解压并运行其中的文件...

    eureka-client-1.1.136.zip

    Eureka是Netflix开发的一个开源服务注册与发现组件,它在分布式系统中扮演着关键角色,帮助微服务架构中的各个服务能够互相找到并通信。 描述 "durian.zip,爪哇榴莲" 看似与主要的IT主题不直接相关,可能是一种比喻...

    SpringCloud-2.0-eureka-service-10000.zip

    在微服务架构中,服务发现是至关重要的一个环节,SpringCloud作为主流的微服务框架,提供了丰富的组件来支持这一功能,其中Eureka便是用于服务注册与发现的核心组件。本文将深入探讨SpringCloud 2.0版本下Eureka服务...

    springcloud-eureka-server.zip

    在分布式微服务架构中,服务治理扮演着至关重要的角色,而SpringCloud Eureka Server正是这样一款专为解决服务注册与发现问题而设计的组件。本文将围绕"springcloud-eureka-server.zip"这个项目,深入探讨Spring...

    spring-cloud-starter-eureka-server-1.4.5.RELEASE.jar

    spring-cloud-starter-eureka-server-1.4.5.RELEASE.jar

    eureka-server.rar

    Eureka是Netflix开发的一款服务发现组件,它是Spring Cloud微服务架构中的重要组成部分。Eureka Server作为服务注册中心,负责管理各个服务实例的注册与发现,从而实现服务间的通信。在这个"eureka-server.rar...

    eureka-0.0.1-SNAPSHOT_Eureka!_eurekajar_

    Eureka是Netflix公司开源的一个基于Java的微服务发现组件,它是Spring Cloud生态体系中的关键一环,用于实现服务的注册与发现。Eureka的主要功能包括服务注册、服务查询以及健康检查,它帮助构建高可用、分布式系统...

    spring cloud eureka(免费下载)

    - 添加必要的依赖,包括`spring-cloud-starter-netflix-eureka-server`,这是Eureka服务注册中心的核心依赖,以及`spring-boot-starter-test`用于测试。 - 在`pom.xml`文件中,设置`spring-cloud.version`属性为`...

    Python库 | py_eureka_client-0.9.8-py3-none-any.whl

    Eureka是Netflix开发的服务发现框架,它允许分布式系统中的各个组件能够互相找到并通信。这个Python库使得Python开发者也能方便地集成Eureka的功能。 **1. Eureka简介** Eureka是Netflix开源的一个基于REST的服务...

    spring cloud netflix eureka ribbon 示例

    3. **eureka-service**:这个可能指的是Eureka Server,它是整个系统的核心,负责维护服务注册和发现的机制。 为了实现这个示例,我们需要配置以下几个步骤: 1. 在服务提供者(eureka-provider)的配置文件中,配置...

    Eureka简介与Eureka Server-代码部分.zip

    Eureka是Spring Cloud框架中的一个核心组件,主要负责服务注册与发现。在微服务架构中,Eureka扮演着举足轻重的角色,帮助各个服务实例互相...同时,这也有助于你在实际开发中解决服务发现、容错和负载均衡等相关问题。

    eureka服务注册发现demo

    在分布式系统中,服务治理是不可或缺的一环,而Eureka是Netflix公司开源的一款服务注册与发现组件,它在Spring Cloud框架中被广泛应用。本篇将深入解析基于Eureka的SpringCloud服务注册与发现的示例("eureka服务...

Global site tag (gtag.js) - Google Analytics