微服务架构中常用的解决方案,总结了传统服务发现方案

此外Consul和Etcd都非常适合容器环境,因为Docker容器启动、停止都会发送事件(Event),基于事件通知机制非常便于将服务实例从Consul或Etcd上注册、注销。 Zookeeper Zookeeper提供分布式协调...


此外Consul和Etcd都非常适合容器环境,因为Docker容器启动、停止都会发送事件(Event),基于事件通知机制非常便于将服务实例从Consul或Etcd上注册、注销。

Zookeeper

Zookeeper提供分布式协调服务,在分布式系统中常被用于配置管理、名字服务、分布式锁及组管理,通常运行在一组节点上实现容错(当运行在n个节点上时能容忍n/2个节点同时故障)。代理(Agent)会在每个运行服务的节点上启动,获取节点地址并将该服务实例注册到服务注册中心。架构上Consul包括两类组件:Server、Agent,服务注册信息保存在Server上,通过Raft共识算法保证多个Server间数据线性强一致,保证服务注册中心高可用;将所有Agent作为集群节点,使用Gossip协议进行组关系管理和故障探测,当有Agent加入(启动)或离开(故障)集群时其他Agent会得到通知,实现服务健康检查和监视功能。Etcd自身的高可用特性,基于TTL提供基本的服务健康检查,基于监听机制及时感知服务实例变化现金棋牌娱乐网址,使Etcd成为微服务架构中常用服务发现解决方案。其核心是一个基于Raft共识算法具备线性强一致性的Key-Value存储系统作为服务注册中心现金棋牌娱乐网址,并提供代理(Agent)机制一方面用于协调服务注册现金棋牌娱乐网址,一方面提供服务健康检查。这个过程看起来很神奇,实际上Gossip协议能在几秒内将消息传遍有上百节点的集群。依赖Zookeeper自身的高可用及临时节点提供的健康检查和监听机制来实现具备容错能力的服务发现机制。

Gossip协议常用于集群组关系管理和故障检测,每个节点都通过一个或多个引导节点加入集群,引导节点有集群中所有节点列表,每个节点都从自己所知节点列表中随机选择一组节点周期性地发送多播消息,最终集群中所有节点都能知道其他节点。每当服务实例启动就会在Zookeeper中注册一个临时节点,而当服务实例故障或下线该临时节点会被Zookeeper自动删除,如果有其他服务依赖这个服务可以设置监听该服务实例对应的临时节点,当临时节点被删除时, 十大靠谱网赌平台依赖该服务的其他服务会获得通知。

如何通过Zookeeper来实现服务发现?Zookeeper使用临时节点(ephemeral node)来实现服务注册和基本的健康检查功能。

实际开发过程中建议使用Apache Curator来替代Zookeeper原生客户端库, PT电子游戏平台Apache Curator通过封装Zookeeper原生API, 网上真人博彩提供更高抽象层次API让Zookeeper使用起来更加容易和可靠,重庆ssc大神交流群而且提供专用于实现服务发现的API。

Consul

Consul是一个成熟的服务发现解决方案。将SRV记录注册到DNS服务器上, 十大靠谱网赌平台通过DNS解析流程进行解析。但是DNS存在两个问题:一是当服务实例启动之后将SRV记录注册到DNS服务器上比较难,需要手动维护;二是DNS严重依赖缓存,服务使用方无法及时知道一个服务实例是否已经停止。mDNS最大的问题就是要求网络基础设施支持IP多播(IP multicast),对于云环境来说显然是无法满足的,而且mDNS也无法解决DNS缓存问题。

总结

其实对于服务发现来说线性强一致性并不是唯一必须的,最终一致性在数据传播足够快的情况下一样能满足需求,实践中Gossip协议即使在大型集群也能快速传播数据并收敛到最终一致,将服务实例作为Gossip集群节点,现金棋牌娱乐网址使用CRDT(conflict-free replicated data type)存储服务注册信息通过Gossip快速传播实现集群中所有节点状态最终一致,每个节点都存储全部服务注册信息,这样就不需要单独的服务注册中心,这种方式实现的方案叫去中心化方案,有关去中心化服务发现方案留作下次分享。

Etcd

Etcd是一个基于Raft共识算法具备线性强一致性(linearizable)的Key-Value存储系统,可以为每个Key设置TTL(time to live),当TTL过后相应Key会自动过期失效。而且Etcd提供监听机制,允许为Key设置监听器当该Key发生变化时,监听器能及时获取通知。

。Akka、Riak、Cassandra都使用Gossip协议维护集群成员列表和故障探测。基于Etcd构建服务发现解决方案将Etcd作为服务注册中心,服务实例注册就是在Etcd中构建一个Key-Value记录,由服务实例自身或代理负责设置并定期更新其关联Key的TTL,如果服务实例故障其对应Key就会在TTL之后过期失效,相当于将该故障服务实例注销,通过定时心跳以达到监控健康状态的效果。

DNS与mDNS都具备良好的容错能力,但缺乏服务健康检查和变化通知机制。

注册或注销服务实例一般有两种选择:

服务发现方案

DNS

DNS(Domain Name System)是一种通过解析域名获取IP和端口的机制。

mDNS

mDNS(multicast DNS即组播DNS)是一种零配置的服务发现机制,在内部网络中经常使用,每个服务都有一个内置的mDNS响应程序,从而不需要单独的服务注册中心

很多人都知道摩洛哥讨厌西班牙,是因为西班牙占着地中海南岸的休达、梅利利亚两座城市。摩洛哥始终认为这两座城市是摩洛哥的。

《复联4》之后,漫威电影宇宙将变得更宏大,多元。

中美敲定新一轮经贸磋商日程 全球市场闻声而动

直接数字合成技术(DDS)是一种频率合成技术,用于产生周期性波形。目前,从低频到上百MHz的正弦波、三角波产生,绝大多数采用的是DDS芯片完成,甚至于买来的信号源,皆是采用DDS实现。

9月2日,以“知识产权与时代同行”为主题的第十届中国知识产权年会在杭州开幕。记者从年会上获悉,近年来,尤其是党的十八大以来,中国知识产权事业驶入了发展的快车道,实现了大发展、大跨越、大提升。现如今,中国每年的专利、商标申请量稳居世界首位,通过《专利合作条约》途径提交的专利申请量和通过《商标国际注册马德里协定》提交的商标申请量,已经分别位居全球第二位和第三位,知识产权创造质量、保护效果、运用效益和国际影响力也在不断提升。

,,

相关文章