【ZooKeeper高手实战】ZooKeeper 集群读写性能及生产环境参数配置

这篇具有很好参考价值的文章主要介绍了【ZooKeeper高手实战】ZooKeeper 集群读写性能及生产环境参数配置。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

🌈🌈🌈🌈🌈🌈🌈🌈
欢迎关注公众号(通过文章导读关注:【11来了】),及时收到 AI 前沿项目工具及新技术 的推送
发送 资料 可领取 深入理解 Redis 系列文章结合电商场景讲解 Redis 使用场景中间件系列笔记编程高频电子书
文章导读地址:点击查看文章导读!
🍁🍁🍁🍁🍁🍁🍁🍁
zk并发写性能怎么样,Zookeeper,zookeeper,分布式,云原生

ZooKeeper 集群读写性能及生产环境参数配置

zk 中的 Observer 节点在集群中到底发挥着什么作用?

zk 集群其实是适合 写少读多 场景的,因为整个集群只有 1 个 Leader 可以写,对于集群的读性能,可以通过 添加 Observer 节点来增强

Observer 节点Observer 是只读的、不参与 Leader 选举、也不参与 ZAB 协议同步时过半 Ack 的环节,只是单纯的接收数据,同步数据,达到数据顺序一致性的效果

Observer 的作用就是提供读服务,当读并发请求过高时,可以通过不断添加 Observer 节点来分散读请求的压力

那这里可能大家就会有问题了:既然想要增强读的性能,多添加点 Follower 节点不就可以了吗?

其实不行的,zk 是适合于 小集群部署 的,这是因为在集群中 Leader 完成写请求是需要经过半数以上的 Follower 都 Ack 之后,才可以成功写入的,如果集群中 Follower 过多,会大大增加 Leader 节点等待 Follower 节点发送 Ack 的时间,导致 zk 集群性能很差,因此 zk 集群部署一般都是 3 台或者 5 台机器

如下图,zk 集群部署为 1 主 2 从,通过添加 Observer 可以不断提升读性能:

zk并发写性能怎么样,Zookeeper,zookeeper,分布式,云原生

zk 集群的性能瓶颈在哪里呢?

瓶颈在于 Leader 的 写性能,如果 zk 集群挂掉的话,那么很有可能就是 Leader 的写入压力过大,这对一个公司的技术平台打击是巨大的,因为像 kafka 之类的技术都是强依赖 zk 的,dubbo + zk 去做服务框架的话,当服务实例达到上万甚至几十万时,大量服务的上线、注册、心跳的压力达到了每秒几万甚至十万,单个 Leader 抗几万的请求还行,十几万的话 zk 单个 Leader 是扛不住这么多的写请求的

想要提升 Leader 的 写性能,目前来说也就是提升部署 zk 的机器性能了,还有一种方式也就是将 dataLogDir 目录挂载的机器上配置 SSD 固态硬盘,以此来提升事务日志 写速度 来提升写性能(这个在后边将 zk 核心参数 dataLogDir 时会讲到)!

zk 集群推荐机器配置:

zk 作为 基础架构类别 的系统,对于部署的机器要求还是比较高的

推荐配置:3 台机器,8 核 16G 或者 16 核 32G,三台机器的小集群每秒抗十几万的并发读是没有问题的

zk 版本选择一般使用 3.4.5 版本

不同机器配置所能承载的并发量都是不同的:

在 3 台机器组成的 zk 集群中,1 个 Leader 抗几万 并发写 是可以的,每秒抗 5~10 万的 并发读 是没有问题的

zk 集群中,写性能无法提升,读性能提升可以通过添加 Observer 节点来实现

如何合理设置 ZooKeeper 的 JVM 参数以及内存大小?

JVM 参数设置的话,主要设置三个方面:堆内存栈内存Metaspace 区域的内存

机器如果有 16G 的内存:

  • 堆内存可以分配 10G
  • 栈内存可以分配每个线程的栈大小为 1MB
  • Metaspace 区域可以分配个 512MB

垃圾回收器的话,如果是大内存机器,建议使用 G1,并且记得设置 G1 的参数(生产环境参数配置),G1 参数的设置是很重要的,包括对于 GC 日志写入位置以及 OOM 内存快照存储位置,这都是事故后分析所需要的,必须要设置:

  • Region 的大小
  • 预期的 GC 停顿时间
  • 设置 GC 日志写入哪里:方便可以监控 GC 情况
  • 如果发生 OOM,将 dump 出来的内存快照放到哪个目录:可以在发生 OOM 时,通过分析堆内存快照迅速找出来问题

建议在 zk 启动之后,在运行高峰期时,使用 jstat 观察一下 jvm 运行的情况:新生代对象增长速率、Young GC 频率、老年代增长速率、Full GC 频率

这里简单说一下,怎么使用 jstat 来查到 zk 中 jvm 的运行情况

首先,要通过 ps -ef | grep zookeeper 来查出来 zk 的进程 id

再去使用 jstat -gc <进程id> 250 100 来查看 jvm 运行情况,250 100 表示采样间隔为 250 ms,采样数为 100,输出如下:

zk并发写性能怎么样,Zookeeper,zookeeper,分布式,云原生

这些参数的含义为:文章来源地址https://www.toymoban.com/news/detail-832772.html

  • S0C:年轻代中第一个survivor(幸存区)的容量 (单位kb)
  • S1C:年轻代中第二个survivor(幸存区)的容量 (单位kb)
  • S0U :年轻代中第一个survivor(幸存区)目前已使用空间 (单位kb)
  • S1U :年轻代中第二个survivor(幸存区)目前已使用空间 (单位kb)
  • EC :年轻代中Eden的容量 (单位kb)
  • EU :年轻代中Eden目前已使用空间 (单位kb)
  • OC :Old代的容量 (单位kb)
  • OU :Old代目前已使用空间 (单位kb)
  • MC:metaspace的容量 (单位kb)
  • MU:metaspace目前已使用空间 (单位kb)
  • CCSC:压缩类空间大小
  • CCSU:压缩类空间使用大小
  • YGC :从应用程序启动到采样时年轻代中gc次数
  • YGCT :从应用程序启动到采样时年轻代中gc所用时间(s)
  • FGC :从应用程序启动到采样时old代(全gc)gc次数
  • FGCT :从应用程序启动到采样时old代(全gc)gc所用时间(s)
  • GCT:从应用程序启动到采样时gc用的总时间(s)

到了这里,关于【ZooKeeper高手实战】ZooKeeper 集群读写性能及生产环境参数配置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ZooKeeper集群环境搭建

    🥇🥇【大数据学习记录篇】-持续更新中~🥇🥇 个人主页:beixi@ 本文章收录于专栏(点击传送):【大数据学习】 💓💓持续更新中,感谢各位前辈朋友们支持学习~💓💓 ZooKeeper集群由多个服务器节点组成,其中包括一个Leader节点和多个Follower节点。Leader节点负责处理所有

    2024年02月10日
    浏览(47)
  • Linux实战——Zookeeper集群安装部署

    ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。 除了为Hadoop和HBase提供协调服务外,Zookeeper也被其它许多软件采用作为

    2023年04月09日
    浏览(41)
  • 生产环境ES集群扩容及优化

    ES集群优化 具体详情请看官方文档建议:https://www.elastic.co/guide/en/elasticsearch/reference/7.5/restart-cluster.html 1.先把elasticsearch的服务停掉 2.修改jvm.options配置文件下最大、最小内存限制 3.重启elasticsearch 4.配置 5.可供使用的查询地址

    2024年02月12日
    浏览(44)
  • MySQL 性能调优及生产实战篇(二)

    在上篇博文:构建优化之城:MySQL 数据建模、数据类型优化与索引常识全面解析 提到了数据建模方案及数据类型的优化方案,简要说明了一些索引的基本知识及分类、技术名词,该篇博文会从以下几点来对 MySQL 调优部分进行分析: 索引数据结构、优化细节 大数据量查询优化

    2024年02月05日
    浏览(42)
  • ZooKeeper+HBase分布式集群环境搭建

    安装版本:hadoop-2.10.1、zookeeper-3.4.12、hbase-2.3.1 一、zookeeper 集群搭建与配置 1. 下载zookeeper安装包 2. 解压移动zookeeper 3. 修改配置文件(创建文件夹) 4. 进入conf/ 5. 修改zoo.cfg文件 6. 进入/usr/local/zookeeper-3.4.12/zkdatas/这个路径下创建一个文件,文件名为myid ,文件内容为1 7. 拷贝到

    2024年02月08日
    浏览(48)
  • CentOS7环境ZooKeeper集群的安装

    目录 前提条件 步骤 ZooKeeper集群规划 下载解压 配置环境变量 配置服务器编号 配置zoo.cfg 分别启动zk服务 查看zk状态 进入zk客户端命令行测试 zk集群启动停止脚本 拥有3台CentOS7机器,并且都安装好jdk8 ZooKeeper集群规划 node2 node3 node4 zk zk zk 下载解压 下载 apache-zookeeper-3.5.7-bin.ta

    2024年02月04日
    浏览(48)
  • k8s集群生产环境的问题处理

    2 k8s上的服务均无法访问 执行命令 kubectl get pods -ALL ,k8s集群中的服务均是running状态 1 kuboard 网页无法访问 kuboard无法通过浏览器访问,但是查看端口是被占用的

    2024年02月12日
    浏览(41)
  • k8s实战案例之部署Zookeeper集群

    zookeeper是一个开源的分布式协调服务,由知名互联网公司Yahoo创建,它是Chubby的开源实现;换句话讲,zookeeper是一个典型的分布式数据一致性解决方案,分布式应用程序可以基于它实现数据的发布/订阅、负载均衡、名称服务、分布式协调/通知、集群管理、Master选举、分布式锁

    2024年02月08日
    浏览(53)
  • 【RabbitMQ 实战】09 客户端连接集群生产和消费消息

    下面的链接是最快最简单的一种集群部署方法 3分钟部署一个RabbitMQ集群 上的的例子中,没有映射端口,所以没法从宿主机外部连接容器,下面的yml文件中,暴露了端口。 每个容器应用都映射了宿主机的端口,分别是5602,5612,5622 docker compse文件如下 通过docker-compose up命令,

    2024年02月07日
    浏览(39)
  • 尝试CentOS8---部署集群(生产环境7.9为好)

    通过网络将很多服务器集中起来,提供同一种服务,在客户端看来就像是只有一个服务器 启动3台虚拟机,禁用selinux和firewalld,挂载光盘文件并配置yum扩展源,安装vim、bash-completion net-tools软件包 此方案需要准备三台主机,一台lvs调度器,2台web服务器,具体要求如下所示 给

    2023年04月21日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包