otter 高可用策略

news2024/12/27 6:07:08

关于otter高可用在设计之初,提供了这样几个基本的需求:

1.网络不可靠,异地机房尤为明显.
2.manager/node的jvm不可靠,需要考虑异常crash情况
3.node的jvm不可靠,需要考虑异常crash的情况
4.数据库不可靠,需要考虑数据库切换,比如binlog获取和数据载入时,都需要考虑数据库HA机制
5.系统发布时,排除正常的jvm关闭和启动

接下来我们一起看看为了实现这些需求,otter研发团队做了哪些方面的努力;

一、部署上

       首先otter manager和node节点分开部署,node节点负责完成真正的同步任务,同时自身汇总同步任务统计数据,将统计数据推送给manager,由manager完成统计数据的落库,node节点除了在首次启用时需要获取manager上的配置信息外,后续的同步任务不再依赖于manager;所以node节点的同步任务可以说是独立于manager了,所以启动后后续的任务理论上不受manager影响。

      其次manager在otter的架构中主要是完成同步任务配置管理、同步进度收集逻辑查阅、数据源维护、系统信息维护、cannal维护等等,相当于一个后台管理系统。

二、完善的异常处理机制(引用otter官方)

      otter调度系统在设计的时候,会有个假定,认为90%的情况都是正常工作的,所以一旦出现异常处理的代价相对比较高,会使用分布式锁机制。

仲裁器设计了三种异常机制指令:

(1)WARNING : 只发送报警信息,不做任何S/E/T/L调度干预
(2)ROLLBACK : 尝试获取分布式锁,避免并发修改,其次修改分布式Permit为false,停止后续的所有S/E/T/L调度,然后删除所有当前process调度信息,通过zookeeper watcher通知所有相关node,清理对应process的上下文,Pipeline的数据存储会通过TTL来进行清理,不需要ROLLBACK干预。完成后,释放锁操作
(3)RESTART : 前面几个步骤和ROLLBACK基本类似,唯一不同点在于,在释放锁之前会尝试修改分布式Permit为true,重新开启同步,然后释放锁.
罗列了一下不同异常对应的处理机制:

两个节点通讯时网络异常,节点发起ROLLBACK
节点执行S/E/T/L模块,比如写数据库出现网络异常,节点发起ROLLBACK
节点发生了CRASH,由manager进行监听,manager发现后发起RESTART

三、manager监控

       manager对node的节点监控室基于zookeeper的发布定于机制,node节点在启动时会在zookeeper上创建node的临时节点信息,manager会订阅node节点变化,若出现临时节点被删除的事件,会触发manager上的异常告警处理机制,在异常处理机制中会尝试重启对应的同步任务。

      manager还支持多种监控配置,比如延迟、Pipeline延迟、Position延迟......,详情可参考我的另外一篇关于otter监控的博文:关于otter监控告警使用-CSDN博客

四、 支持数据库切换

       otter内部配置中称之为主备配置(media配置),为一对主备IP,定义一个groupKey。然后在各个地方使用该groupKey。
       1.比如jdbc url使用group后为:jdbc:mysql://groupKey=xxxx
       2.canal中可以选择HA机制为media,然后填入对应的groupKey即可
       3.切换后需要1分钟或者node重启生效(HA机制需要开启心跳)

在需要切换时,在主备设置列表页面点击切换就可以可以完成对应的操作。

五、otter中node节点的负载均衡机制

        otter支持三种负载均衡机制:

        1)Random : 随机算法

        2)RoundRbin : 轮询算法

        3)Stick : 类似于session stick技术,一旦第一次选择了node,下一次选择会继续使用该node. (有一个好处,资源上下文缓存命中率高).

        注意点:每个node节点,都会在zookeeper中生成Ephemeral节点,每个node都会缓存住当前存活的node列表,node节点消失,通过zookeeper watcher机制刷新每个node机器的内存。然后针对每次负载均衡选择时只针对当前存活的节点,保证调度的可靠性。

        负载均衡机制是node节点在执行一个stage数据处理前,就会提提前获取当前存活的所有node(缓存中获取)节点,然后这些可用的node节点会根据Pipeline配置的负载均衡算法选出最终执行下一个节点的node然后再处理完成后推送给下一个node执行。

       

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2251486.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C底层 函数栈帧

文章目录 一,什么是寄存器 二,栈和帧 前言 我们在学习c语言程序的时候,是不是有很多的疑问,如 1,为什么形参不可以改变实参 2,为什么我们编写程序的时候会出现烫烫烫......这个乱码 3,那些局…

力扣1382:将二叉搜索树便平衡

给你一棵二叉搜索树,请你返回一棵 平衡后 的二叉搜索树,新生成的树应该与原来的树有着相同的节点值。如果有多种构造方法,请你返回任意一种。 如果一棵二叉搜索树中,每个节点的两棵子树高度差不超过 1 ,我们就称这棵二…

亚马逊自研大语言模型 Olympus 即将亮相,或将在 LLM 竞赛中掀起新波澜

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

指针与引用错题汇总

int *p[3]; // 定义一个包含 3 个指向 int 的指针的数组int a 10, b 20, c 30; p[0] &a; // p[0] 指向 a p[1] &b; // p[1] 指向 b p[2] &c; // p[2] 指向 c // 访问指针所指向的值 printf("%d %d %d\n", *p[0], *p[1], *p[2]); // 输出: 10 20 30…

vscode ctrl+/注释不了css

方式一.全部禁用插件排查问题. 方式二.打开首选项的json文件,注释掉setting.json,排查是哪一行配置有问题. 我的最终问题:需要将 "*.vue": "vue",改成"*.vue": "html", "files.associations": { // "*.vue": &qu…

医疗知识图谱的问答系统详解

一、项目介绍 该项目的数据来自垂直类医疗网站寻医问药,使用爬虫脚本data_spider.py,以结构化数据为主,构建了以疾病为中心的医疗知识图谱,实体规模4.4万,实体关系规模30万。schema的设计根据所采集的结构化数据生成&…

上传镜像docker hub登不上和docker desktop的etx4.vhdx占用空间很大等解决办法

平时使用docker一般都在Linux服务器上,但这次需要将镜像上传到docker hub上,但是服务器上一直无法登录本人的账号,(这里的问题应该docker 网络配置中没有开代理的问题,因服务器上有其他用户使用,不可能直接…

大型复杂项目管理怎么结合传统与敏捷

大型复杂项目管理需要综合运用传统的瀑布模型与敏捷方法,两者各具优势,可以在不同的项目阶段和需求下发挥最大效能。首先,在项目的初期阶段,传统方法的详细规划和需求分析能够帮助确保项目方向正确、资源充足;敏捷方法…

PVE中VLAN的设置要点

使用这个拓扑进行连接无法直接访问PVE PVE 设置如下: 核心重点:PVE 的 vmbr0 接口直接绑定了 enp2s0,这会导致 VLAN 流量无法正确处理,因为 PVE 没有专门为 VLAN 3 配置接口。 1.vmbr0 和 vmbr0.3 都是绑定在物理接口 enp2s0 上&…

网络安全防范技术

1 实践内容 1.1 安全防范 为了保障"信息安全金三角"的CIA属性、即机密性、完整性、可用性,信息安全领域提出了一系列安全模型。其中动态可适应网络安全模型基于闭环控制理论,典型的有PDR和P^2DR模型。 1.1.1 PDR模型 信息系统的防御机制能抵抗…

.net —— Razor

文章目录 项目地址一、创建一个Razor项目1.1 创建项目1.2 创建项目所需文件夹1.3 配置项目二、创建Category页面2.1 创建Category的展示页面2.2 增删改2.2.1 创建Edit的razor视图项目地址 教程作者:教程地址:代码仓库地址:所用到的框架和插件:dbt airflow一、创建一个Razo…

学习视频超分辨率扩散模型中的空间适应和时间相干性(原文翻译)

文章目录 摘要1. Introduction2. Related Work3. Our Approach3.1. Video Upscaler3.2. Spatial Feature Adaptation Module3.3. Temporal Feature Alignment Module3.4. Video Refiner3.5. Training Strategy 4. Experiments4.1. Experimental Settings4.2. Comparisons with …

Netty的心跳机制怎么实现的?

大家好,我是锋哥。今天分享关于【Netty的心跳机制怎么实现的?】面试题。希望对大家有帮助; Netty的心跳机制怎么实现的? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Netty 的心跳机制用于维持客户端和服务器之间的…

深度学习:自然语言处理

一、引言 自然语言处理作为人工智能领域的关键分支,致力于使计算机能够理解、分析和生成人类语言。近年来,随着深度学习技术的迅猛发展,自然语言处理取得了前所未有的突破,一系列创新技术和应用不断涌现,极大地推动了…

Android 系统之Init进程分析

1、Init进程流程 2、Init细节逻辑 2.1 Init触发shutdown init进程触发系统重启是一个很合理的逻辑,为什么合理? init进程是android世界的一切基石,如果android世界的某些服务或者进程出现异常,那么会导致整个系统无法正常使用…

轻量化的长时间序列预测模型

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…

【Vue3】从零开始创建一个VUE项目

【Vue3】从零开始创建一个VUE项目 手动创建VUE项目附录 package.json文件报错处理: Failed to get response from https://registry.npmjs.org/vue-cli-version-marker 相关链接: 【VUE3】【Naive UI】<NCard> 标签 【VUE3】【Naive UI】&…

win10中使用ffmpeg的filter滤镜

1 给视频加文字水印 1.1 添加播放时间 ffmpeg -i input.mp4 -vf "drawtextfontfileC\\:/Windows/fonts/consola.ttf:fontsize30:fontcolorwhite:timecode00\:00\:00\:00:rate25:textTCR\::boxcolor0x000000AA:box1:x20:y20" -y output.mp4 在视频的x20:y20位置添加t…

【AI系统】昇腾 AI 架构介绍

昇腾 AI 架构介绍 昇腾计算的基础软硬件是产业的核⼼,也是 AI 计算能⼒的来源。华为,作为昇腾计算产业⽣态的⼀员,是基础软硬件系统的核⼼贡献者。昇腾计算软硬件包括硬件系统、基础软件和应⽤使能等。 而本书介绍的 AI 系统整体架构&#…

Pareidoscope - 语言结构关联工具

文章目录 关于 Pareidoscope安装使用方法输入格式语料库查询 将语料库转换为 SQLite3 数据库两种语言结构之间的关联简单词素分析关联共现和伴随词素分析相关的更大结构可视化关联结构 关于 Pareidoscope Pareidoscope 是一组 用于确定任意语言结构之间 关联的工具&#xff0c…