zookeeper原理

Dubbo学习笔记

杀马特。学长 韩版系。学妹 提交于 2020-02-12 15:49:05
目录 一、分布式基本知识 1.1) 架构演变 1.2)、分布式基本概念 二、RPC简介 2.1) RPC概念 2.2) RPC核心模块 三、Dubbo原理简介 3.1) Dubbo简介 3.2) 核心功能 3.3) 原理简介 四、Dubbo安装部署 4.1) Zookeeper安装 4.2) Dubbo监控平台部署 一、分布式基本知识 1.1) 架构演变 先给出dubbo官方的图,图片表示了架构的演变。然后我说一下自己的理解。 应用最开始是单体应用,即一个应用包括了所有应用模块。 随后就是垂直应用架构,也就是将系统拆分为多个应用模块。 随后就是RPC架构,之前的垂直应用架构其实可以说是在一个进程内的通讯,而RPC就是一种进步,RPC是进程之间的通讯,远程过程调用就是这么来的。 有了RPC之后,虽然可以实现进程之间的通讯,但是服务器集群后的服务器资源利用有些时候容易造成浪费,比如有个系统,一般情况都是不能很好地预估需要分配多少机器的,很容易造成一种情况就是业务访问很频繁的模块分配了不足的机器,而访问不是很频繁的模块分配了太多的机器,这种情况就不能实现资源的很好利用,所以针对这种情况就有了SOA(Service Oriented Architecture)的出现,SOA其实就是一个服务注册中心,可以实现资源调度,合理地分配资源,提高资源调度,是一个治理中心。 1.2)、分布式基本概念

分布式锁

懵懂的女人 提交于 2020-02-10 18:29:04
https://www.cnblogs.com/austinspark-jessylu/p/8043726.html 分布式锁的几种实现方式 目前几乎很多大型网站及应用都是分布式部署的,分布式场景中的数据一致性问题一直是一个比较重要的话题。分布式的CAP理论告诉我们“任何一个分布式系统都无法同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance),最多只能同时满足两项。”所以,很多系统在设计之初就要对这三者做出取舍。在互联网领域的绝大多数的场景中,都需要牺牲强一致性来换取系统的高可用性,系统往往只需要保证“最终一致性”,只要这个最终时间是在用户可以接受的范围内即可。 在很多场景中,我们为了保证数据的最终一致性,需要很多的技术方案来支持,比如分布式事务、分布式锁等。有的时候,我们需要保证一个方法在同一时间内只能被同一个线程执行。在单机环境中,Java中其实提供了很多并发处理相关的API,但是这些API在分布式场景中就无能为力了。也就是说单纯的Java Api并不能提供分布式锁的能力。所以针对分布式锁的实现目前有多种方案。 针对分布式锁的实现,目前比较常用的有以下几种方案: 基于数据库实现分布式锁 基于缓存(redis,memcached,tair)实现分布式锁 基于Zookeeper实现分布式锁

Zookeeper的选举机制原理

血红的双手。 提交于 2020-02-10 15:42:17
三个核心选举原则: (1)Zookeeper集群中只有超过半数以上的服务器启动,集群才能正常工作; (2)在集群正常工作之前,myid小的服务器给myid大的服务器投票,直到集群正常工作,选出Leader; (3)选出Leader之后,之前的服务器状态由Looking改变为Following,以后的服务器都是Follower。 zookeeper选举 来源: CSDN 作者: devcy 链接: https://blog.csdn.net/devcy/article/details/104247149

ZooKeeper原理解析

♀尐吖头ヾ 提交于 2020-02-07 11:16:27
文章目录 1.ZooKeeper介绍 1.1文件系统 1.2监听机制 1.3监听工作原理 1.4ZooKeeper典型应用场景 1.4.1命名服务 1.4.2配置管理 1.4.3集群管理 1.4.4分布式锁 1.4.5队列管理 2.ZooKeeper特点 3.Zookeeper原理解析 3.1集群角色描述 3.2Paxos 算法概述(ZAB 协议) 3.2.1ZooKeeper的全新集群选主 3.2.2ZooKeeper的非全新集群选主 3.3数据同步 3.4ZooKeeper工作流程 3.4.4Leader工作流程 3.4.2Follower工作流程 3.4.3Observer工作流程 1.ZooKeeper介绍 ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是 Google 的 Chubby 一个开源的实现。它提供了简单原始的功能,分布式应用可以基于它实现更高级的服务,比如 分布式同步,配置管理,集群管理,命名管理,队列管理 。它被设计为易于编程,使用文 件系统目录树作为数据模型。服务端跑在 java 上,提供 java 和 C 的客户端 API。 1.1文件系统 ZooKeeper 的命名空间就是 ZooKeeper 应用的文件系统,它和 linux 的文件系统很像,也是树 状,这样就可以确定每个路径都是唯一的,对于命名空间的操作必须都是绝对路径操作

让你5分钟认识ZooKeeper的原理

冷暖自知 提交于 2020-02-07 11:15:10
前言 ZooKeeper 是一个开源的分布式协调服务,由雅虎创建,是 Google Chubby 的开源实现。分布式应用程序可以基于 ZooKeeper 实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、分布式锁和分布式队列等功能。 1、简介 ZooKeeper 是一个开源的分布式协调服务,由雅虎创建,是 Google Chubby 的开源实现。分布式应用程序可以基于 ZooKeeper 实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、分布式锁和分布式队列等功能。 2、基本概念 本节将介绍 ZooKeeper 的几个核心概念。这些概念贯穿于之后对 ZooKeeper 更深入的讲解,因此有必要预先了解这些概念。 2.1 集群角色 在 ZooKeeper 中,有三种角色: Leader Follower Observer 一个 ZooKeeper 集群同一时刻只会有一个 Leader,其他都是 Follower 或 Observer。 ZooKeeper 配置很简单,每个节点的配置文件(zoo.cfg)都是一样的,只有 myid 文件不一样。myid 的值必须是 zoo.cfg中server.{数值} 的{数值}部分。 zoo.cfg 文件内容示例: ZooKeeper 在装有 ZooKeeper

zookeeper简述和我对zookeeper的理解

六月ゝ 毕业季﹏ 提交于 2020-02-06 18:18:49
前面10来篇针对于redis进行了一系列的回顾和学习,接下来需要针对zookeeper做一些理论上的学习和集群搭建以及代码操作。 理论书籍有两本值得深入学习: 从Paxos到Zookeeper 分布式一致性原理与实践 zookeeper分布式过程协同技术详解 笔者有第一本书,但是没看完,我理解的zookeeper应该是分布式协同中间件,也就是说借助于网络框架,为集群以及分布式系统做配置管理和协议信息同步功能。 zookeeper可以用来很好的学习拜占庭将军问题,以及ACID,BASE理论,两阶段提交协议等相关理论和实践。 笔者对于zookeeper也不是很了解或者很懂,下面粗浅的说一下zookeeper的用处 1.zookeeper可以做很多服务中间件的协调组件,比如hadoop,kafka,hbase.可以协调不同集群节点的状态。 2.可以做很多服务中间的配置数据存储,比如集群节点存储,集群信息存储,dubbo. 3.可以做分布式锁或者分布式id生成器,这个是由于zookeeper的实现机制而带来的优势。 zookeeper在大型分布式系统中我们可能并不能明确的感受他的作用,比如我们要学dubbo,那为啥要先搭建zookeeper呢,这就是比较尴尬的地方,比如我要搭建kafka集群,也需要先搭建zookeeper集群,但是搭建完之后配置完数据之后就可以学习相关服务框架了

Kafka原理

泄露秘密 提交于 2020-02-05 09:13:46
Kafka有两种模式: 点对点模式:消费者主动从Kafka中定时轮询的拉取数据,一条数据只会发送给customer group中的一个customer进行消费。 发布订阅者模式:kafka主动推送数据到所有订阅了该类信息的客户端。 Kafka中通过控制Customer的参数{group.id}来决定kafka是什么数据消费模式,如果所有消费者的该参数值是相同的,那么此时的kafka就是队列模式,数据只会发送到一个customer,此时Kafka类似于负载均衡;否则就是发布订阅模式; 在队列模式下,可能会触发Kafka的Consumer Rebalance kafka是依赖Zookeeper的,kafka中节点的状态信息和消费者的消费消息的状态信息会保存在zookeeper中,且zookeeper只保存这两点信息 kafka中存在几个概念:Broker、Topic、Partition Broker:为一个节点,每开启一个kafka服务就会有一个Broker Topic:为主题。kafka中消息是分类别的,kafka是通过topic来为消息分类的,每一个topic代表着一种消息类型。同一个topic可以存在于多个Broker中 Partition:为分区,分区存在于topic中,每个topic中会存在多个分区。在Kafka中分区是操作的最小单元

Dubbo的使用及原理浅析.

随声附和 提交于 2020-02-04 04:10:19
Dubbo的使用及原理浅析. 前面几个博文中关于SSM 框架已经搭建完成, 这里来讲下项目中使用到的Dubbo以及自己了解到的关于Dubbo的一些知识. Dubbo是什么? Dubbo是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提供3,000,000,000+次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。 Dubbo[]是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。 其核心部分包含: 远程通讯: 提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。 集群容错: 提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持。 自动发现: 基于注册中心目录服务,使服务消费方能动态的查找服务提供方,使地址透明,使服务提供方可以平滑增加或减少机器。 Dubbo能做什么? 透明化的远程方法调用,就像调用本地方法一样调用远程方法,只需简单配置,没有任何API侵入。 软负载均衡及容错机制,可在内网替代F5等硬件负载均衡器,降低成本,减少单点。 服务自动注册与发现,不再需要写死服务提供方地址,注册中心基于接口名查询服务提供者的IP地址,并且能够平滑添加或删除服务提供者。 Spring集成

ZooKeeper学习笔记及应用场景梳理

守給你的承諾、 提交于 2020-01-31 23:53:38
官网文档地址: https://zookeeper.apache.org/doc/r3.5.4-beta/zookeeperOver.html 概述 Zookeeper从设计模式角度来理解:是一个基于观察者模式设计的分布式服务管理框架, 它负责存储和管理大家都关心的数据, 然后接受观察者的注册, 一旦这些数据的状态发生变化, Zookeeper就将负责通知已经在Zookeeper上注册的那些观察者做出相应的反应 , 从而实现集群中类似Master/Slave管理模式。 Zookeeper 是一个分布式的服务框架,主要用来 解决分布式集群中应用系统的协调和一致性问题 ,它能提供基于类似于文件系统的目录节点树方式的数据存储,但是 Zookeeper 并不是用来专门存储数据的,它的作用主要是用来维护和监控你存储的数据的状态变化。如:统一命名服务、状态同步服务、集群管理、分布式应用配置管理等。 它能够为分布式应用提供高性能和可靠地协调服务,使用ZooKeeper可以大大简化分布式协调服务的实现,为开发分布式应用极大地降低了成本。协同服务很难正确运行,经常出现竞争危害和死锁。ZooKeeper 的目的就是降低协同服务实现与维护的成本。 架构及原理 集群架构 Zookeeper集群是由一组Server节点组成,这一组Server节点中存在一个角色为Leader的节点

zookeeper分布式协调工具工作原理以及选举流程

此生再无相见时 提交于 2020-01-29 11:38:37
1、zookeeper一致性原理 一致性概念:强一致性、弱一致性、最终一致性 为了保证主从节点的数据一致性,Zookeeper 采用了 ZAB 协议 ,这种协议非常类似于一致性算法 Paxos 和 Raft 什么是 ZAB Zookeeper Atomic Broadcast,有效解决了 Zookeeper 集群崩溃恢复,以及主从同步数据的问题。 # ZAB 协议定义的三种节点状态 Looking :选举状态。 Following :Follower 节点(从节点)所处的状态。 Leading :Leader 节点(主节点)所处状态。 # 最大 ZXID 最大 ZXID 也就是节点本地的最新事务编号,包含 epoch 和计数两部分。epoch 是纪元的意思,相当于 Raft 算法选主时候的 term。 # ZAB 的崩溃恢复 假如 Zookeeper 当前的主节点挂掉了,集群会进行崩溃恢复。ZAB 的崩溃恢复分成三个阶段: Leader election 选举阶段,此时集群中的节点处于 Looking 状态。它们会各自向其他节点发起投票,投票当中包含自己的服务器 ID 和最新事务 ID(ZXID)。 接下来,节点会用自身的 ZXID 和从其他节点接收到的 ZXID 做比较,如果发现别人家的 ZXID 比自己大,也就是数据比自己新,那么就重新发起投票,投票给目前已知最大的 ZXID