Zookeeper简介

对HTTP服务的远程调用算法

 
Apache
Square
Netflix
组件
HttpClient
OkHttp
Feign

RestTemplate 是 Spring 提供的用来访问 REST 服务的客户端,利用了 JDK 或HttpClient 、OkHttp 等来实现 http 远程调用服务器

ClientHttpRequestFactory接口的主要实现类网络

 
JDK
Apache
OkHttp3
 
SimpleClientHttpRequestFactory
HttpComponentsClientHttpRequestFactory
OkHttp3ClientHttpRequestFactory

HTTP 和 RPC 框架的区别框架

HTTP RPC
成熟稳定、使用实现简单、被普遍支持、兼容性良好、防火墙友好、 消息的可读性高。因此 http 协议在开放 API、跨平台的服务间调用、对性能要求不苛刻的场景中有着普遍的使用。
高效的网络传输模型(常使用 NIO 来实现),以及针对服务调用场景专门设
计协议和高效的序列化技术
注册中心的实现
Dubbo 体系中的 Zookeeper、Spring Cloud 中的 Eureka 和 Consul
 
分布式一致性的本质,就是在分布式系统中,多个节点就某一个提议如何达成一致
 
zookeeper 的设计
    防止单点故障 , 常见的解决单点问题的方式就是集群
集群须要知足的功能
1. 集群中要有主节点和从节点(也就是集群要有角色)
2. 集群要能作到数据同步,当主节点出现故障时,从节点可以顶替主节点继续工做, 数据必需要主节点保持一直
3. 主节点挂了之后,从节点如何接替成为主节点? 是人工干预?仍是自动选举
Leader 角色
    Leader 服务器是整个 zookeeper 集群的核心,主要的工做任务有两项
        1. 事物请求的惟一调度和处理者,保证集群事物处理的顺序性
        2. 集群内部各服务器的调度者
Follower 角色
    Follower 角色的主要职责是
        1. 处理客户端非事物请求(查询)、转发事物请求(更新、删除、新增)给 leader 服务器
        2. 参与事物请求 Proposal 的投票(须要半数以上服务器经过才能通知 leader commit 数据; Leader 发起的提案,要求 Follower 投票)
        3. 参与 Leader 选举的投票
数据同步
要实现各个节点的数据 一致性,就势必要一个 leader 节点负责协调和数据同步操做
分布式事务的数据一致性
    
Observer 角色
Observer 是 zookeeper3.3 开始引入的一个全新的服务器角色,从字面来理解,该角色充当 了观察者的角色。
观察 zookeeper 集群中的最新状态变化并将这些状态变化同步到 observer 服务器上。Observer 的工做原理与 follower 角色基本一致,而它和 follower 角色惟一的不一样在于observer 不参与任何形式的投票,包括事物请求 Proposal 的投票和 leader 选举的投票。简单来讲,observer 服务器只提供非事物请求服务,一般在于不影响集群事物处理能力的前提下提高集群非事物处理的能力
leader 选举
当 leader 挂了,须要从其余 follower 节点中选择一个新的节点进行处理,这个时候就须要涉 及到 leader 选举
集群组成
    一般 zookeeper 是由 2n+1 台 server 组成,每一个 server 都知道彼此的存在。每一个 server 都维护的内存状态镜像以及持久化存储的事务日志和快照。对于 2n+1 台 server,只要有 n+1台(大多数)server 可用,整个系统保持可用。一个 zookeeper 集群若是要对外提供可用的服务,那么集群中必需要有 过半 的机器正常工做而且彼此之间可以正常通讯,所以 3 台机器构成的 zookeeper 集群,可以在挂掉一台机器后依然正常工做。一个 5 台机器集群的服务,可以对 2 台机器怪调的状况下进行容灾。若是一台由 6 台服务构成的集群,一样只能挂掉 2 台机器。所以,5 台和 6 台在容灾能力上并无明显优点,反而增长了网络通讯负担。系统启动时,集群中的 server 会选举出一台server 为 Leader,其它的就做为 follower(这里先不考虑 observer 角色)。 一个节点要成为集群中的 leader,须要有超过半数的节点支持,这个涉及到 leader 选举算法。同时也涉及到事务请求的提交投票
相关文章
相关标签/搜索