二、同城双活 同城双活是在同城或相近区域内建立两个机房。同城双机房距离比较近,通信线路质量较好,比较容易实现数据的同步复制 ,保证高度的数据完整性和数据零丢失。 3、同城双活方案评估 优势 服务同城双活,数据同城灾备,同城不丢失数据情况下跨机房级别容灾。 两地三中心方案评估 优势 服务同城双活,数据同城灾备,同城不丢失数据情况下跨机房级别容灾。 同城双活和两地三中心建设方案建设复杂度都不高,两地三中心相比同城双活有效解决了异地数据灾备问题,但是依然不能解决同城双活存在的多处缺点,想要解决这两种架构存在的弊端就要引入更复杂的解决方案去解决这些问题 下图展示了RPC注册中心路由寻址过程,和同城双活有一定的差异性。
前言今天老板让我写一篇腾讯云云原生的微服务项目部署实践,还要实现同城双活。 听说ChatGPT已经“出圈”了,无所不能,还可以帮人写文章,刚好最近比较懒,看看他能否帮我写完这篇实践,并教会我实现同城双活部署。 图片同城双活改造基础资源的部署,可能对ChatGPT来说有些简单,接下来,给他一些挑战,给我们提供一个应用层的跨区高可用方案。 我们希望只用一套TKE集群实现同城双活,最大程度的节约成本。 从接入层、应用层到数据层,快速地搭建出云上同城双活架构,从而避免单可用区故障,可能导致的访问中断。Excellent!
,基于TKE集群本身的健康检查机制等,保证了进程的高可用 TCM详细资料参考:https://cloud.tencent.com/document/product/1261/62928 架构设计方案 同城双活需求分析 使用了TCM产品,只需要考虑数据面的高可用建设,即业务程序的同城双活。 这种架构模式下,有两个技术点需要解决: 接入层的流量负载均衡 逻辑层的set部署,即可用区内流量闭环 设计方案 适合上面同城双活的集群部署模式,如下图一、图二所示。 图二 建设要求 一个服务网格+一个TKE集群 一个服务网格+两个TKE集群 部署模式 承载双活业务的
高可用的一些解决方案 高可用,从发展来看,大致经过了这几个过程: 冷备 双机热备 同城双活 异地双活 异地多活 在聊异地多活的时候,还是先看一些其他的方案,这有利于我们理解很多设计的缘由。 其他的高可用方案还可以参考各类数据库的多种部署模式,比如mysql的主从、双主多从、MHA;redis的主从,哨兵,cluster等等。 同城双活 前面讲到的几种方案,基本都是在一个局域网内进行的。 同城双活其实和前文提到的双机热备没有本质的区别,只是“距离”更远了,基本上还是一样(同城专线网速还是很快的)。双机热备提供了灾备能力,双机互备避免了过多的资源浪费。 双活的机器必须部署到同城,距离更远的城市作为灾备机房。灾备机房是不对外提供服务的,只作为备份使用,发生故障了才切流量到灾备机房;或者是只作为数据备份。原因主要在于:距离太远,网络延迟太大。 异地双活 同城双活可以应对大部分的灾备情况,但是碰到大面积停电,或者自然灾害的时候,服务依然会中断。
网上关于Elastic Job的较高级的博文甚少,本文试图结合自身实践的一些经验,大致讲解其方案原理,并延伸至同城双机房的架构实践。 - 同城双活模式 - 以上这样改造后,针对定时任务就已经解决了两个问题: 1、定时任务能实现在两个机房下的高可用; 2、任务能优先调度到指定机房。 我们能否再进一步做到同城双活呢?也就是,B机房也会承担一部分的流量?例如10%? 以上两种方案都能实现让A、B两个机房都有流量(有任务在被调度),从而实现所谓的双活。 以下针对上面抛出来的方案一,给出一个双活的示意代码和架构。 注:这里任意一个机房不可用了,任务均能在另外一个机房调度,这里增强的只是对于不同任务做针对性的优先调度实现双活: public class ActiveStandbyESJobStrategy extends
而且整天见各类技术文章,不是双活,就是多活,不是同城,就是异地,现在又出来个多云,好复杂。 下面我就谈谈我的理解: 首先,这么多名词是什么含义,要搞清楚,然后再看适不适合。 准确点,就是物理距离上的时延问题,这个无论是双活、多活,还是同城、异地,都绕不开的痛苦问题。 既然要双活,必然会选择另一个跟当前机房有一定距离的机房(同城或异地),而且距离必须得拉开才有意义,如果都在一个园区里面,就没有任何容灾意义了。 讲到这里,我想多活就不用讲了,时延这个问题解决不了,多活就是扯淡,至于同城和异地,我想看明白的读者,也知道怎么选择了,其实一样,还是取决于时延。 一个合理的建设节奏应该是,同城双活—异地双活—两地三中心(同城双活+异地多活),因为你要解决的问题的复杂度和难度也是在逐步上升的,不可能一蹴而就。
而且整天见各类技术文章,不是双活,就是多活,不是同城,就是异地,现在又出来个多云,好复杂。 下面我就谈谈我的理解: 首先,这么多名词是什么含义,要搞清楚,然后再看适不适合。 准确点,就是物理距离上的时延问题,这个无论是双活、多活,还是同城、异地,都绕不开的痛苦问题。 既然要双活,必然会选择另一个跟当前机房有一定距离的机房(同城或异地),而且距离必须得拉开才有意义,如果都在一个园区里面,就没有任何容灾意义了。 讲到这里,我想多活就不用讲了,时延这个问题解决不了,多活就是扯淡,至于同城和异地,我想看明白的读者,也知道怎么选择了,其实一样,还是取决于时延。 一个合理的建设节奏应该是,同城双活—异地双活—两地三中心(同城双活+异地多活),因为你要解决的问题的复杂度和难度也是在逐步上升的,不可能一蹴而就。
一、容灾介绍 同城双活和异地多活都是典型的系统容灾部署方案,对于企业来说,尤其是大型互联网公司,比较重要的系统一般都会做容灾,采用同城双活,甚至异地多活的架构方案进行部署。 对于同城双活和异地多活来说,都是容灾的不同方案,它们对技术、部署成本、运维成本、网络带宽、网络稳定性等的要求都不一样。 四、同城双活 同城双活方案是将系统部署在同一个城市的不同机房中,这种方案能够做到机房级别的容灾,而不能做到城市级别的容灾。 五、异地多活 一般情况下,系统做同城双活容灾方案就够了,如果系统的业务发展到了淘宝级别,就需要考虑异地多活了。 还有一点需要说明的是:如果同城双活架构方案能够满足需求,就不要轻易尝试异地多活架构,实际上,异地多活架构过于复杂,很少有公司能够搭建出真正的异地多活架构。
针对上述挑战,在大厂有近十年存储架构设计经验的腾讯云高级解决方案架构师邱浩将于7月31日11:00-12:00,在深圳华侨城洲际酒店马德里2厅为您带来《腾讯云原生同城双活解决方案》的分享。 主题:腾讯云原生同城双活解决方案 时间:7月31日 11:00—12:00 讲师:腾讯云高级解决方案架构师邱浩 · 解决思路 · 腾讯云基于内部高可用架构的多年沉淀,推出云原生同城双活解决方案,在资源高效利用 、业务零改造、运维低代价的前提下,将部署在单个数据中心的业务,在线升级为同城双活架构,进而提升业务的连续性。 · 成果展现 · 1、业务零改造代价实现同城双活架构。 2、单数据中心故障恢复速度快,且不增加运维复杂度。 3、方案已协助数个电商平台在线升级为同城双活架构。 2、了解腾讯云云原生同城双活解决方案及价值。 3、了解常用数据库及中间件跨数据中心架构的实现原理。
今天主要从三个方面进行分享: 美菜网消息队列的历史 基于 RocketMQ 我们做了那些事情 同城双活的选型和思考 美菜网消息队列的历史 ---- 美菜网历史上是多套 MQ 并存,Kafka 用于大数据团队 同城双活的选型和思考 ---- 背景: 1、保证数据可靠性,如果所有数据都在一个机房,一旦这个机房出了问题,数据有丢失的风险。 2、机房的扩容,单机房毕竟容量有限,多个机房可以分担流量。 方案选型: 1、同城冷备,备用一套服务存在但不对外提供服务,当另一套服务有问题时进行切换,但是真的出了问题,我们是否敢切流量呢? 2、同城双活,平时就是双机房对外提供服务,出问题的时候切掉故障机房,真正实现容灾的目的。
GameDay目标:验证业务同城双活容灾架构的有效性 Step 1.使用云顾问绘制业务云上架构图(图1) Step 2.使用云顾问-混沌演练实施故障注入(图2) 场景1:CLB健康检查可用性验证 结论:
当然在现阶段,通过建设相对低风险低投入的同城双活,积累更多基础能力的同时锻炼团队,选择最合适当下的方案,解决目前排在第一位的问题,怎么想都觉得还是一件挺划算的事儿。 画一幅简图来区分下我们这次同城双活的方案和业界异地双活方案的差异。 下面分别介绍:交易应用侧双活改造项目范围交易侧默认所有服务均参与同城双活改造,一方面内部应用之间的调用关系复杂,区分处理梳理工作量极高;另一方面快速的业务迭代也会改变互相之间的依赖关系,维护这套逻辑成本太高 交易依赖方应用双活改造仅仅依靠交易侧应用,无法完成所有的P0链路,如下单时依赖供应链侧时效。强依赖的外域服务同样纳入了同城双活改造范围。其改造点基本一致,不再赘述。 中间件RTO同城双活要求中间件在单个可用区出问题的时候,仍能对外提供服务。其设计目标的RTO为以下:主要组件双活改造方案DLB - 自研流量网关DLB是无状态组件,在两个可用区对等部署。
l建议使用波分设备来构建两数据中心的同城网络。l以太网交换机和FC交换机同时连接到波分设备,两个数据中心通过级联的方式互联。 网络双活核心技术 网络双活核心技术分析: 网络层双活主要通过SDN技术实现网络自动化部署,通过VXLAN构建跨数据中心大二层网络、通过EVPN技术实现跨数据中心互联,三大技术相辅相成共同实现网络层双活 网络安全层技术 网络双活核心技术分析: 双活数据中心网络安全防护建议最新等级保护2.0相关要求部署相关的安全设备进行整体安全防护。
最近恰好在搞异地双活,以下是一个梳理: 基本概念 1、异地容灾。这仅仅是一个冷备的概念。也就是在平时正常的时候,另外一个机房只是当做备份。 2、异地双(多)活。 业务以及基础组件异地双活方案 业务实例异地双活 业务实例的异地双活。这个相对来说要简单一些,只要做到无状态,再如果通过docker这些容器结束,基本上是相对来说容易一些。 同步可以通过客户端双写,或者服务端复制。双写更加容易。 Redis的异地双活 Redis 的异地双活。就是分别在每个机房搭建一套Redis集群。 在支付宝微博答复中,有一个新名词——“异地多活”。在传统了灾备方案中,一般提的都是同城灾备、异地灾备、两地三中心。 中国银行业,只有某国有大行在去年6月份实现了上海同城两个数据中心的双活,是“同城双活”,还没有实现“异地多活”,而且在灾难真正发生时,切换效果如何,还有待验证。
解决了双机房ES"读"的问题,再来看“写”的问题,可能有同学说了,这还不简单,直接双写就行了吧,一份数据,向A、B机房的ES集群各写一份。 听想来貌似可行,但是有一些细节问题 : 1、双写并非原子操作,如果A机房的ES集群写成功了,B机房的ES集群没写成功,该怎么办? 2、当B机房的ES挂了,双写不进去时,过一段时间又恢复后,故障期间的数据,B机房的ES集群怎么补进去?如果手动事后补数据,虽然可行,但是毕竟麻烦。 当然,这个方案的提前是MQ本身是高可用的,不过这个不难做到,已经有一些rocket mq双机房多活的案例,不在本文讨论范围,大家可以自行搜索。
存储层双活本质上是HyperMetro通过数据双写和DCL机制实现存储层数据的双活,两个数据中心同时对主机提供数据读写的能力。(即2端存储做集群、数据双写、数据一致性回滚)。 数据双写机制:应用服务器下发I/O请求时,可同时下发到本端Cache和远端Cache,从而保证本端Cache与远端Cache的变更数据一致性。 同时双活可以通过另一端存储系统的数据,对坏数据进行修复,保证两个数据中心的数据一致。
一、容灾介绍 同城双活和异地多活都是典型的系统容灾部署方案,对于企业来说,尤其是大型互联网公司,比较重要的系统一般都会做容灾,采用同城双活,甚至异地多活的架构方案进行部署。 对于同城双活和异地多活来说,都是容灾的不同方案,它们对技术、部署成本、运维成本、网络带宽、网络稳定性等的要求都不一样。 四、同城双活 同城双活方案是将系统部署在同一个城市的不同机房中,这种方案能够做到机房级别的容灾,而不能做到城市级别的容灾。 五、异地多活 一般情况下,系统做同城双活容灾方案就够了,如果系统的业务发展到了淘宝级别,就需要考虑异地多活了。 还有一点需要说明的是:如果同城双活架构方案能够满足需求,就不要轻易尝试异地多活架构,实际上,异地多活架构过于复杂,很少有公司能够搭建出真正的异地多活架构。
为了给用户提供更稳定可靠的使用体验,在2023年Q2开始,乐元素运维、业务团队联合腾讯云售后专家和技术专家,基于针对乐元素旗下休闲游戏产品《开心消消乐》展开同城双活改造项目,目的是了解并改善业务容灾部署状况 在此次演练之前,乐元素已经对业务架构部署进行了全面优化,不仅完成了线上环境的全面容器化升级,还完成了双活改造,以确保系统在任一可用区或链路发生故障时,均具备可快速恢复的应急预案。 考虑到实际业务场景和多活架构的复杂程度,业务运维团队联合腾讯云的售后专家、高可用服务专家,精心设计了涵盖接入层、应用层和数据层的故障演练方案。 客户收益 乐元素在本次同城双活演练中,成功应对了一系列关键业务的容灾挑战,并对系统的整体可用性和可靠性进行了全面验证,达到演练目标。在此次演练中,客户主要取得了以下两方面收益: 1.
根据应用的工作模式来划分将应用分为B/S类(浏览器/服务器模式)、C/S类(客户端/服务器模式)。
文章目录 一、 双进程守护保活原理 二、 双进程守护保活完整源码 1、AIDL 接口 2、本地前台服务 Service 3、远程前台服务 Service 4、清单配置 5、启动两个服务 5、执行效果 三、 源码资源 一、 双进程守护保活原理 ---- 双进程守护拉活 , 使用 JobScheduler 拉活 和 系统 Service 机制拉活 两种拉活方式 , 结合起来使用 ; 双进程机制拉活 , 比之前的 广播拉活 , 系统 Service 机制拉活 , 账户同步拉活 , JobScheduler 机制拉活 , 成功率都要高 , 可靠性比较高 , 但是也存在失败的情况 ; JobScheduler / 通信内容 } } " 本地前台进程 " LocalForegroundService 在 onCreate 方法中开启前台服务 , 提权 , 参考 【Android 进程保活】 android.permission.FOREGROUND_SERVICE 权限 : <uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> 二、 双进程守护保活完整源码