zookeeper广泛用于分布式服务中,比如选举。这里简单介绍下,算是入门。
我们知道zookeeper的结构是树形结构
1.集群host启动后的监听/master节点的删除事件
2.各服务器host尝试创建master,成功则把自己的信息存在master上,失败则读取master节点信息
3.服务注册:各服务器host在/serverList节点下创建子节点,并把自己的信息存在节点上
4.服务发现:服务消费者方查询/serverList子节点列表,获取服务提供方各个host信息
这个就是利用zookeeper选举的基本思路。
不过上边的方案还是有问题的:即惊群效应。当服务的机器数量比较多的时候,触发了选举,此时大量的请求进入zookeeper会产生比较大的压力。
改进思路还是用zookeeper的临时顺序节点:多个机器同时向该根路径下创建临时顺序节点,没抢到Leader的节点都监听前一个节点的删除事件,这样在前一个节点删除后进行重新抢主。这样一般只会有一个机器去选举成为leader,如果多个机器同时挂掉,参与选主的机器也不会太多。
基于这个思路,recipes提供了两种实现选举的方案:LeaderLatch与LeaderSelector。成为leader后都有对应的Listener回调。
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();
文章浏览阅读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
文章浏览阅读1.1k次。μC/OS-Ⅱ移植的要点在哪里?初始化任务堆栈时有两个返回地址是怎么回事?其中一个永远用不到,可以省略吗?…… 这些问题是移植μC/OS-Ⅱ的初学者常会遇到的问题,我也是μC/OS-Ⅱ的初学者,因需要曾两次移植μC/OS-Ⅱ,能体会遇到这些问题时的茫然,现在基本上明白了移植时遇到的一些问题和一点通用原理,就想把这些东西尽可能用通俗易懂的方式写下来,希望有助于广大初学者学习μ_μc/os ii移植msp430
文章浏览阅读322次。视觉SLAM是通过两帧或多帧图像来估计自身的位姿变化,再通过累积位姿变化计算当前位置。视觉SLAM不仅解决了移动机器人“我在哪里”的关键问题,而且在传感器自身定位、路径规划及场景理解等问题中都有关键作用。而无人自转旋翼机是无人机与自转旋翼机的创新结合。目前旋翼无人机可以用于摄像、货物运送、勘测等领域。随着无人机承担的任务日益多样,这就对无人机的路径规划和避障技术提出了更高的要求。基于此,深蓝学院特邀高飞副研究员和高翔博士,进行为期两天的线上直播分享,通过丰富的课程,您将进一步学习自主旋翼无人机和视觉_无人机 路径规划 深蓝
文章浏览阅读1.1k次。首先需求是用户提出导出excel数据需使用水印备注其用途;其实就是在导出excel的同时带有自定义文字水印的导出。那么我们首先想到的肯定是以一个什么样的思路去解决该问题,首先查找poi导出excel有没有相关技术可以直接导出文字水印,可想而知我写了这篇博客,当然是没有一步走成的方法那么我们开始换一种思路,大家都知道图片可以添加文字水印和图片水印,那么既然图片可以添加文字水印,可能就可以想到exce..._java导出excel水印不显示中文怎么解决
文章浏览阅读3.9k次,点赞7次,收藏20次。手动反爬虫,禁止转载:原博地址 https://blog.csdn.net/lys_828/article/details/122135788(CSDN博主:Be_melting) 知识梳理不易,请尊重劳动成果,文章仅发布在CSDN网站上,在其他网站看到该博文均属于未经作者授权的恶意爬取信息项目7:利用 Dash实现宝可梦能力图表和可视化雷达图7.1 项目完成功能预览项目完成后的预览界面如下。页面分为上下两个部分,上面是展示两列,左侧一列放置宝可梦的图片和介绍信息,右侧一例放置宝可梦能力的可视化雷_如何搭建diy宝可梦网站
文章浏览阅读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 用外面的值
文章浏览阅读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
文章浏览阅读195次。InputOutputSample Input5 5 23 13 44 51 45 34 1 11 43 0 2Sample Output383题意:有一张图上有\(n\)个点,两两之间有一条边,现在切断\(m\)条边,求剩下的图中有多少种不同的生成树。题解:生成树计数做这道题,需要三个预备知识:\(Kirchhoff\)矩阵首先先构造两..._uva10766:organising the organisation kuangbin
文章浏览阅读1.8w次,点赞83次,收藏9次。大家好,我是几何心凉,欢迎来到我的付费专栏系列,本专栏将深入介绍 Vue 3 和 Vite,以及如何在 TypeScript 的帮助下构建现代化的 Web 应用程序。Vue 是一个流行的 JavaScript 框架,它允许开发人员构建高性能的用户界面,并且具有丰富的生态系统。Vue 3 是 Vue 框架的最新版本,引入了一些重要的新特性,例如基于函数的组件 API,增强的响应性系统和更好的 TypeScript 支持。_csdn付费专栏
文章浏览阅读3.3w次,点赞297次,收藏1.0k次。为了实现多端兼容,综合考虑编译速度、运行性能等因素,uni-app约定了如下开发规范:页面文件遵循Vue单文件组件规范组件标签靠近小程序规范,详细见uni-app组件规范接口能力(js api)靠近微信小程序规范,但需将前缀wx替换为uni,详见uni-app接口规范数据绑定及事件处理同Vue.js规范,同时补充了App以及页面的生命周期为兼容多端运行,建议使用flex布局进行开发。_uniapp开发小程序
文章浏览阅读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 只能输入数字和小数点
文章浏览阅读4.8k次。原文来自11区民间整合的Mugen主程序报错汇总,同时加入了千寻网站平时收集的常见报错,源地址:http://mugenbinran.web.fc2.com/error.html以下皆为机翻,有空会慢慢修正翻译加载初始场景报错报错关键字:dojo.def 或 stage0.def原因:程序以debug模式运行且调用了debug场景解决方法:1、在mugen.cfg文件内找到[Debug]下的Sta..._mugen报错