当前位置: 首页 > 科技观察

谈异地多居实践及设计思考点总结

时间:2023-03-18 20:47:35 科技观察

Introduction总结梳理异地多居项目整体推进过程中的一些注意事项和设计要点。一、引导事项概要1、多活动的原因多活动的原因,大致可以归纳为以下三类。高可用架构部署整体业务容灾单机房容量限制2.多活指导总结多活涉及到公司业务的方方面面。总体来说,有两个主要部分:业务改造和基础设施中间件改造。核心环节是自成一体的,可以逻辑分割。呼叫可以尽可能地汇聚在本单元内。流量段逻辑可以尽可能的平衡。中间件多活架构改造升级业务改造,支持多活方案。活动是公司的重要战略,要统一思想,把多活动项目作为重中之重来推进。有意识地对接公司级战略项目设置的思考和理解首席架构师级别建议对接部门负责人,负责整体架构方案和结果例如:首席架构师对带头生有不低于60%的绩效考核权限各部门部门负责人作为部门领导,需要全面推进各业务线接口人的建立并负责业务线的所有对接推广事务,并对业务线的推广结果负责业务线或部门。不低于60%的绩效考核权项目架构师和业务负责人每周例会,例会,及时跟进问题和进展。各领导梳理的问题对外沟通前,先对内部门对接,提高沟通效率4、抓核心环节确保核心环节先多活,以免严重拖延进度。例如:优惠券存货扣款先扣款,由中央机房统一管理运营。如果没有实时性要求,不要做多主流量切换。二、多活动规则和流量选择1.路由因子选择和映射路由因子选择:需要根据公司的业务场景进行选择。常见的路由因素包括区域和用户ID。路由因子与机房映射:区域因子:将区域号与机房映射,例如:001->unit-a用户因子:将UID与机房映射,例如:123456与机房号进行hash和映射到unit-a2。请求被分配到正确的机房。一个请求有多活规则后,如何将请求路由到正确的机房,总结如下:多域名终端服务切换:直接将请求路由到正确的机房。反向代理层转发:转发属于远程机房流量在网关层转发:转发属于远程机房流量整个切换闭环过程3.RPC跨机房调用能力1.在注册中心架构图中注册节点时,需要同时注册机房信息。定义路由功能,供业务选择是否跨机房呼叫。发布时需要注意新旧版本,是否存在流量倾斜。四、消息跨机房复制1、复制插件管理与监控。将其他机房的流量汇聚到一个机房消费。通过复制器插件跨机房复制消息。通过管理平台对复制器进行监控和管理。2、流量隔离和动态订阅。通过不同topic进行流量隔离,避免重复复制问题。二、存储的双向同步1、Redis双向同步Redis双向同步对于活动比较多的公司来说是不需要的。如果可以作为非常短期的到期,则不需要同步。但是,有些会存放更长的时间。如果业务转型成本巨大,需要提供双向复制能力。有很多解决方案,其中一些更改了源代码。下面介绍一个RedisSyncer,java实现。有关详细信息,请参阅下面的github链接。https://github.com/TraceNature/redissyncer-server可以根据实际场景修改,主要功能有:断点续传数据同步数据迁移数据校验实现原理:复制器伪装成从节点复制数据进入辅助键识别流量来源,避免重复复制的问题。注意事项:是否需要redis双向复制提前规划,过滤短时间内无效的key复制,例如:小于3秒不再同步batchwrite,提高性能2、MySql的双向同步远程多活通常需要双向同步数据库下面是阿里开源的otter,可以基于它进行二次定制开发。https://github.com/alibaba/otter解决循环复制的原理:通过事务表解决数据循环复制的问题,在复制数据时,同时向事务表写入一条数据。在同一个事务中同步数据时,只有同步不再在事务表中需要提供其他外围工具将数据发送到远程机房:提供数据校验工具提供数据纠错工具提供DDL双向同步提供数据冲突策略注意事项:统一关系型数据库存储多个数据库PostgreSQL、MySql等建议统一为一个例如周边工具可以交给DBA开发。另外,在存储侧流量切换时需要提供数据库写禁止功能,避免流量切换过程中数据不一致和写禁止。实现可以通过sql动态拼接一个大的时间戳来实现。6.其他改造事项除了中间件和业务核心服务的改造,还有一些其他的改造事项,例如:发布系统支持不同机房在CMDB中发布资源和应用识别监控系统支持不同机房流量识别其他存储相关(ES、Hbase等)尽量不要照搬VII.流量切换流程1.流量切换的大体流程A机房到B机房的流量切换大体流程图如下:@1多活规则中心下发禁写通知和禁写时间基线@2数据库SDK收到对禁写数据库的写入和更新@2双向复制器收到禁写时间基线,不再复制@3双向复制器上报复制完成状态@4多活规则中心发送流量切换通知@5Nginx&Gateway层收到B机房的流量切换并上报切换完成状态@6后,多活规则中心发出取消写禁的通知2.注意流量切换的问题。部分流量切换问题场景一:切掉某个区域10%的流量场景二:切掉某个用户在某个场景下10%的流量。当部分流量切换时,禁止数据库设计判断部分流量切换时replicator完成的判断和备选方案。监控思考本文转载自微信公众号“瓜农老梁”,可通过以下二维码关注。转载本文请联系瓜农老梁公众号。