zookeeper选举master了解_hosttype=master-程序员宅基地

技术标签: zookeeper  分布式  

zookeeper广泛用于分布式服务中,比如选举。这里简单介绍下,算是入门。

基本概念

我们知道zookeeper的结构是树形结构

1.集群host启动后的监听/master节点的删除事件
2.各服务器host尝试创建master,成功则把自己的信息存在master上,失败则读取master节点信息
3.服务注册:各服务器host在/serverList节点下创建子节点,并把自己的信息存在节点上
4.服务发现:服务消费者方查询/serverList子节点列表,获取服务提供方各个host信息

这个就是利用zookeeper选举的基本思路。

不过上边的方案还是有问题的:即惊群效应。当服务的机器数量比较多的时候,触发了选举,此时大量的请求进入zookeeper会产生比较大的压力。

改进思路还是用zookeeper的临时顺序节点:多个机器同时向该根路径下创建临时顺序节点,没抢到Leader的节点都监听前一个节点的删除事件,这样在前一个节点删除后进行重新抢主。这样一般只会有一个机器去选举成为leader,如果多个机器同时挂掉,参与选主的机器也不会太多。

recipes实现

基于这个思路,recipes提供了两种实现选举的方案:LeaderLatch与LeaderSelector。成为leader后都有对应的Listener回调。

LeaderLatch

LeaderLatch配合LeaderLatchListener使用

示例:

public class LeadLatchMain {
    public static void main(String[] args) throws Exception {

        List<LeaderLatch> leaders = new ArrayList<LeaderLatch>();
        for (int i = 0; i < 10; i++) {
            RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 3);
            CuratorFramework client = CuratorFrameworkFactory.builder()
                    .connectString("172.16.59.154:2181").sessionTimeoutMs(5000).connectionTimeoutMs(5000).retryPolicy(retryPolicy)
                    .namespace("base")
                    .build();

    
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/hustzw07/article/details/105108605

智能推荐

1.3.7 Wooden Sticks_1.3.7 wooden sticks-程序员宅基地

文章浏览阅读358次。Wooden SticksTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 2565 Accepted Submission(s): 995 Problem DescriptionTher_1.3.7 wooden sticks

μC/OS-Ⅱ的移植要点小谈_μc/os ii移植msp430-程序员宅基地

文章浏览阅读1.1k次。μC/OS-Ⅱ移植的要点在哪里?初始化任务堆栈时有两个返回地址是怎么回事?其中一个永远用不到,可以省略吗?…… 这些问题是移植μC/OS-Ⅱ的初学者常会遇到的问题,我也是μC/OS-Ⅱ的初学者,因需要曾两次移植μC/OS-Ⅱ,能体会遇到这些问题时的茫然,现在基本上明白了移植时遇到的一些问题和一点通用原理,就想把这些东西尽可能用通俗易懂的方式写下来,希望有助于广大初学者学习μ_μc/os ii移植msp430

超硬核直播课 | 自主旋翼无人机主流算法、视觉SLAM基础_无人机 路径规划 深蓝-程序员宅基地

文章浏览阅读322次。视觉SLAM是通过两帧或多帧图像来估计自身的位姿变化,再通过累积位姿变化计算当前位置。视觉SLAM不仅解决了移动机器人“我在哪里”的关键问题,而且在传感器自身定位、路径规划及场景理解等问题中都有关键作用。而无人自转旋翼机是无人机与自转旋翼机的创新结合。目前旋翼无人机可以用于摄像、货物运送、勘测等领域。随着无人机承担的任务日益多样,这就对无人机的路径规划和避障技术提出了更高的要求。基于此,深蓝学院特邀高飞副研究员和高翔博士,进行为期两天的线上直播分享,通过丰富的课程,您将进一步学习自主旋翼无人机和视觉_无人机 路径规划 深蓝

java poi 水印_java解决poi导出excel文字水印,导出excel不可操作问题-程序员宅基地

文章浏览阅读1.1k次。首先需求是用户提出导出excel数据需使用水印备注其用途;其实就是在导出excel的同时带有自定义文字水印的导出。那么我们首先想到的肯定是以一个什么样的思路去解决该问题,首先查找poi导出excel有没有相关技术可以直接导出文字水印,可想而知我写了这篇博客,当然是没有一步走成的方法那么我们开始换一种思路,大家都知道图片可以添加文字水印和图片水印,那么既然图片可以添加文字水印,可能就可以想到exce..._java导出excel水印不显示中文怎么解决

【Dash搭建可视化网站】项目7: 利用 Dash实现宝可梦能力图表和可视化雷达图联动_如何搭建diy宝可梦网站-程序员宅基地

文章浏览阅读3.9k次,点赞7次,收藏20次。手动反爬虫,禁止转载:原博地址 https://blog.csdn.net/lys_828/article/details/122135788(CSDN博主:Be_melting) 知识梳理不易,请尊重劳动成果,文章仅发布在CSDN网站上,在其他网站看到该博文均属于未经作者授权的恶意爬取信息项目7:利用 Dash实现宝可梦能力图表和可视化雷达图7.1 项目完成功能预览项目完成后的预览界面如下。页面分为上下两个部分,上面是展示两列,左侧一列放置宝可梦的图片和介绍信息,右侧一例放置宝可梦能力的可视化雷_如何搭建diy宝可梦网站

java高级开发--foreach_java foreach 用外面的值-程序员宅基地

文章浏览阅读120次。原始数组的输出用for循环完成:public class TestFor { public static void main(String[] args) { int[] data = new int[] {1,2,3,4,5}; for (int i = 0; i < data.length; i++) { System.o..._java foreach 用外面的值

随便推点

MT6853平台camera上电基本流程_imgsensor_hw_power_sequence-程序员宅基地

文章浏览阅读1.1k次,点赞4次,收藏13次。mt6853-master\drivers\misc\mediatek\imgsensor\src\common\v1_1\imgsensor.c初始化kernelmodule_init(imgsensor_init);static int __init imgsensor_init(void){ PK_DBG("[camerahw_probe] start\n"); //注册一个平台驱动gimgsensor_platform_driver if (platform_driver_regis_imgsensor_hw_power_sequence

Organising the Organisation(uva10766)(生成树计数)-程序员宅基地

文章浏览阅读195次。InputOutputSample Input5 5 23 13 44 51 45 34 1 11 43 0 2Sample Output383题意:有一张图上有\(n\)个点,两两之间有一条边,现在切断\(m\)条边,求剩下的图中有多少种不同的生成树。题解:生成树计数做这道题,需要三个预备知识:\(Kirchhoff\)矩阵首先先构造两..._uva10766:organising the organisation kuangbin

一目了然凉哥为大家倾力打造的付费专栏_csdn付费专栏-程序员宅基地

文章浏览阅读1.8w次,点赞83次,收藏9次。大家好,我是几何心凉,欢迎来到我的付费专栏系列,本专栏将深入介绍 Vue 3 和 Vite,以及如何在 TypeScript 的帮助下构建现代化的 Web 应用程序。Vue 是一个流行的 JavaScript 框架,它允许开发人员构建高性能的用户界面,并且具有丰富的生态系统。Vue 3 是 Vue 框架的最新版本,引入了一些重要的新特性,例如基于函数的组件 API,增强的响应性系统和更好的 TypeScript 支持。_csdn付费专栏

uniapp从入门到精通(全网保姆式教程)~ 别再说你不会开发小程序了_uniapp开发小程序-程序员宅基地

文章浏览阅读3.3w次,点赞297次,收藏1.0k次。为了实现多端兼容,综合考虑编译速度、运行性能等因素,uni-app约定了如下开发规范:页面文件遵循Vue单文件组件规范组件标签靠近小程序规范,详细见uni-app组件规范接口能力(js api)靠近微信小程序规范,但需将前缀wx替换为uni,详见uni-app接口规范数据绑定及事件处理同Vue.js规范,同时补充了App以及页面的生命周期为兼容多端运行,建议使用flex布局进行开发。_uniapp开发小程序

React Native只支持输入数字和小数点 并且保留两位小数_react-native 只能输入数字和小数点-程序员宅基地

文章浏览阅读1.3k次。overMaxLength(text) { // 只支持输入数字和小数点 const numberReg = new RegExp(/^[0-9.]*$/); if(!numberReg.test(text)) { text = text.substring(0, text.length - 1); console.log('texttexttex..._react-native 只能输入数字和小数点

mugen linux主程序,Mugen主程序报错汇总-程序员宅基地

文章浏览阅读4.8k次。原文来自11区民间整合的Mugen主程序报错汇总,同时加入了千寻网站平时收集的常见报错,源地址:http://mugenbinran.web.fc2.com/error.html以下皆为机翻,有空会慢慢修正翻译加载初始场景报错报错关键字:dojo.def 或 stage0.def原因:程序以debug模式运行且调用了debug场景解决方法:1、在mugen.cfg文件内找到[Debug]下的Sta..._mugen报错