一、zk基础-分布式系统存在的问题以及解决方式+ZK是什么

一、分布式基础

1、分布式存在的问题

1、并发问题(分布式锁)
2、缺乏全局时钟
3、通信异常
4、网络分区(脑裂)
5、三态(超时态)

2、解决分布式存在问题的理论

2.1、CAP理论
  • 一致性:一致性是数据在多个副本之间是否能够保证一致的特性
  • 可用性:可用性指系统提供服务必须一直处于可用状态,对于用户的操作请求总是能够在有限的时间访问结果
  • 分区容错性:以实际效果而言,是对通信时效的要求,系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况

CAP原则的精髓就是要么AP,要么CP,要么AC,但是不存在CAP。如果在某个分布式系统中数据无副本, 那么系统必然满足强一致性条件, 因为只有独一数据,不会出现数据不一致的情况,此时C和P两要素具备,但是如果系统发生了网络分区状况或者宕机,必然导致某些数据不可以访问,此时可用性条件就不能被满足,即在此情况下获得了CP系统,但是CAP不可同时满足

2.2、BASE理论:BASE是对CAP中一致性和可用性权衡的结果
  • Basically Avaliable 基本可用
    这绝不等价于系统不可用,以下两个就是“基本可用”的典型例子:
    响应时间上的损失:正常情况下,一个在线搜索引擎需要0.5秒内返回给用户相应 的查询结果,但由于出现异常(比如系统部分机房发生断电或断网故障),查询结果的响应时间增加到了1~2秒。
    功能上的损失:正常情况下,在一个电子商务网站上进行购物,消费者几乎能够顺利地完成每一笔订单,但是在一些节日大促购物高峰的时候,由于消费者的购物行为激增,为了保护购物系统的稳定性,部分消费者可能会被引导到一个降级页面。

  • Softstate 软状态
    既允许系统中的数据存在中间状态,既系统的不同节点的数据副 本之间的数据同步过程存在延时,并认为这种延时不会影响系统可用性;

  • Eventuallyconsistent 最终一致性
    所有的数据在经过一段时间的数据同步后,最终能够达到一个一致的状态;

二、ZK基础

1、特性

1.1、会话

客户端与服务端的一次会话连接,本质是 TCP 长连接,通过会话可以进行心跳检测和数据传输,会话状态:CONNECTING、CONNECTED、RECONNECTING、RECONNECTED、CLOSE

  • 一旦客户端开始创建 Zookeeper 对象,那么客户端状态就会变成 CONNECTING状态
  • 同时客户端开始尝试连接服务端,连接成功后,客户端状态变为 CONNECTED
  • 通常情况 下,由于断网或其他原因,客户端与服务端之间会出现断开情况,一旦碰到这种情况, Zookeeper 客户端会自动进行重连服务,同时客户端状态再次变成 CONNCTING
  • 直到重新连 上服务端后,状态又变为 CONNECTED

在通常情况下,客户端的状态总是介于CONNECTING和CONNECTED 之间。但是,如果出现诸如会话超时、权限检查或是客户端主动退出程序等情况,客户端的状态就会直接变更为 CLOSE 状态

1.2、zk数据模型

ZooKeeper 的视图结构和标准的 Unix 文件系统类似,其中每个节点称为“数据节点”或 ZNode, 每个 znode 可以存储数据,还可以挂载子节点,因此可以称之为“树” 第二点需要注意的是,每一个 znode 都必须有值,如果没有值,节点是不能创建成功的。
在这里插入图片描述

1.3、节点类型

Znode 有两种类型:

  • 短暂(ephemeral)(create -e /app1/test1 “test1” 客户端断开连接 zk 删除 ephemeral 类型节 点)
  • 持久(persistent) (create -s /app1/test2 “test2” 客户端断开连接 zk 不删除 persistent 类型 节点)
  • PERSISTENT
    持久
  • PERSISTENT_SEQUENTIAL(持久序列/test0000000019 )
    持久有序列
  • EPHEMERAL
    临时
  • EPHEMERAL_SEQUENTIAL
    临时有序列

在分布式系统中,顺序号可以被用于为所有的事件进行全局排序,这样客户端可以通过 顺序号推断事件的顺序

1.4、节点状态属性

在这里插入图片描述

1.5、ACL 保障数据的安全

ACL 机制,表示为 scheme : id : permissions,第一个字段表示采用哪一种机制,第二个 id 表示用户,permissions 表示相关权限(如只读,读写,管理等)。

  • world: 它下面只有一个 id, 叫 anyone, world:anyone 代表任何人,zookeeper 中对所有人有权 限的结点就是属于 world:anyone 的
  • auth: 它不需要id, 只要是通过authentication的user都有权限(zookeeper支持通过kerberos 来进行 authencation, 也支持 username/password 形式的 authentication)
  • digest: 它对应的 id 为 username:BASE64(SHA1(password)),它需要先通过 username:password 形式的 authentication
  • ip: 它对应的 id 为客户机的 IP 地址,设置的时候可以设置一个 ip 段,比如 ip:192.168.1.0/16, 表示匹配前16个bit的IP段

分布式系统存在问题
CAP、Base理论
ZK特性:会话、ACL、数据模型、节点类型、节点状态

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值