Zookeeper--产生原因及功能

1、分布式存在的问题

  • 问题一:大的任务一台机器解决不了
    • 40TB文件
    • 普通一台机器:32TB,无法存储
  • 问题二:即使一台机器能解决,但是性能比较差
    • 40TB文件:写速度1s/1TB
    • 特殊一台机器:64TB,可以存储40s
    • 分布式集群存储:16TB x 4 台,总共64TB ,可以存储10s:高并发的
  • 解决:分布式
    • 通过分布式的资源整合,将存储或者计算交给多台机器并行处理
    • 分布式存储:利用多台机器的硬盘进行整体,作为一个整体
    • 分布式计算:利用多台机器的CPU和内存作为一个整体
    • 分布式网站:利用多台机器的web容器均衡的负载,作为一个网站服务的整体
  • 大数据中:越快越好
    • 数据的价值会随着时间的流逝而逐渐降低
  • 分布式本身存在的问题
    在这里插入图片描述
  • node4宕机了 ,主服务就没有了
    • 整个分布式集群就瘫痪了
    • 没有服务能接受请求以及管理所有的任务
  • 如果产生了两个主服务怎么办?
    • 如果同一时刻出现了 两个主服务,功能一模一样,客户端请求谁?谁来负责管理? 在这里插入图片描述
  • 在这样的分布式架构中,如果我们需要更改代码的配置怎么办?
    • 总共有100台机器
    • 如果不做分布式管理:就需要手动替换100台机器的代码
  • 即使我们将代码都更改了,如何保证这100台机器的代码配置是一样的?
  • 假设:100台机器的代码配置的JDBC连接属性都必须是一致的
    • 突然,公司要更换数据库集群,地址发生改变,需要修改jdbc配置
  • 问题
    • 数据一致性问题
    • 分布式同步锁问题
    • 单节点故障

2、Zookeeper的设计思想

基于分布式架构的树形文件系统

  • 只用于存储关键性的数据,不用于存储大数据
  • 类似于索引数据、配置信息等等
    • 索引:类似于新华字典的目录
      • 你想查找一个字,如果没有目录,你要一页一页翻
      • 如果有目录,根据规则找到这个字所在那一页,快速找到这个字
  • 为别的分布式服务提供服务

3、Zookeeper的功能

一致性服务

存放共同配置

  • 将所有重要的可能产生变化的配置存储在Zookeeper中
  • 所有的分布式节点,在需要读取这个配置的时候,直接从Zookeeper中读取这个配置
  • 如果要修改,只要更改Zookeeper中的配置即可在这里插入图片描述

注册中心

  • 所有功能相同的服务节点,都要向zookeeper进行注册,才能实现应用在这里插入图片描述

命名服务

构建整体,统一入口
在这里插入图片描述

  • 将统一功能节点构建一个统一的命名,作为一个整体,在zookeeper中将两个主服务构建成一个整体
  • 等客户端请求的时候,先请求zookeeper,zookeeper中会记录谁是工作的,谁是备份的,将请求转发给工作状态的节点在这里插入图片描述

分布式锁

  • 两个主服务
  • 如果有一个主服务是工作状态的,另一个主服务能不能是工作状态的?
    • 不能
  • 所有的主服务向Zookeeper进行注册,并且参加选举,会选举出一个工作的主服务,一旦选举成功
  • 其他的主服务是不允许作为工作状态的,只能成为备份状态
    选举的过程
  • 第一种方式:抢注谁创建成功,谁就是主服务临时节点
    • 所有的主服务都会一起到zookeeper中创建一个文件
    • 谁创建成功,谁就是工作状态,其他的就是备份状态
      -
  • 第二种方式:排号大家都创建一个文件,这个文件按照创建的先后顺序编号,谁的编号最小,谁就是工作状态,其他的是备份状态有序临时节点在这里插入图片描述
  • 备份的什么时候会自动变成工作状态呢?
    • 所有的备份服务都会监听工作状态所创建的那个文件
    • 如果工作状态的服务故障了,这个文件会自动消失
    • 如果这个文件自动消失,那么所有的备份服务会重新选举

选举

  • 保证集群中选举出一个工作的主服务
  • 如果工作的主服务故障了,要从多个备份的主服务中选举出一个新的工作主服务

数据发布订阅

  • 将一些关键性的数据,很多程序都想要的数据存储在Zookeeper中
  • 生产者:负责往Zookeeper中写入数据
  • 消费者:负责从Zookeeper中读取数据

总结

  • 统一化的数据一致性:关键性的数据共享的数据保持一致
  • 注册中心
  • 选举:谁是主节点?帮别的工具中的服务选举
  • 命名服务:请求谁?
  • 分布式锁:不能同时是主节点啊?
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值