范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

架构必备读写分离

  1. 问题&分析
  在读多写少的互联网业务场景,往往"读"性能会成为第一个瓶颈。
  随着业务的发展,数据库负载越来越高,逐渐成为系统的瓶颈。面对"读"性能瓶颈,大致有以下几种解题思路:提升 DB 配置从而获取更高的性能。使用更 NX 的机器,升级 DB 的 CPU、内存、磁盘等;使用更多的 DB 来分担读压力。对 DB 进行"拆分",一个 DB 实例负责数据写入,一组 DB 实例负责数据查询,也就是常说的读写分离;将 读 压力转移到其他存储引擎。比如引入读性能更高的 Cache,让 Cache 挡在 DB 前面,降低落到 DB 上的请求量;
  上面三种方案各具千秋,但性价比最高的仍旧是"读写分离方案":方案一,升级硬件资源,简单粗暴,主要是金钱上的考量;另外,硬件是存在天花板的,金钱不能解决一切问题;方案三,缓存是提升读性能的一大杀器,追求性能的同时需要做很多事,比如调整逻辑代码、进行一致性保障、增加运维成本等,同时也为系统引入更多的复杂性。落地效果非常不错。但有时,杀鸡焉用牛刀?方案二,中规中矩介于两者之间,无需过量的金钱投入,也无需过早的引入太多复杂性2. 读写分离
  以数据库部署架构为基础,对数据操作进行分离,主节点主要处理写请求,从节点主要处理读请求。
  通过引入多个副本来分散读请求,从而实现 读请求 的水平扩展。主副本 与 从副本 间的数据一致就是通过 "复制" 来完成。
  读写分离架构有几个非常重要的概念:主副本。也称主节点,可以接受 读&写请求;从副本。也称从节点,只能处理 读请求;复制。主副本 与 从副本 间 基于"复制"技术实现数据同步;路由。基于路由规则将请求分发至整个集群(主副本 + 从副本)
  以最常见的MySQL主从架构为例:
  image
  通过扩展 Slave 可以实现 读请求 的水平扩展,核心流程如下:应用将写请求路由到 Master 节点;Master 节点完成写入后(事务提交),将变更写入到 Binlog;Slave 节点从 Master 节点获取 Binlog,并执行变更(涉及中继日志和并发复制),保持与 Master 数据一致;应用将读请求路由到 Slave 节点,从 Slave 中获取数据;
  备注:Slave 过多会加重 Master 的压力,可通过多级复制或分区进行解决。
  读写分离架构可以方便的对读请求进行扩展,看似美好,但需要解决两个问题:数据同步。如何保障主从副本间的数据一致性,通常情况下由存储引擎的"复制"机制来保障;请求路由。何时操作主副本,何时操作从副本,如何在多个副本间做负载均衡?2.1. 复制模式
  复制模式主要解决数据同步问题。通常比想象中的复杂,在此只对 单主复制 进行介绍,对于多主复制,由于过于复杂,并不在讨论范围。2.1.1. 同步复制
  同步复制架构如图所示:
  image
  核心流程:主节点处理完请求后,将复制信息同步到所有节点;待所有节点返回后,再向用户返回最终结果;
  特点:优点强一致性保障,应用写入成功后,从节点与主节点间就达成了一致,不存在数据延时问题缺点影响写入性能。写性能 = Master + Max(Slave)影响可用性。某个 Slave 异常,直接影响写入,导致写入流程被中断
  常见应用场景:在实际开发中,该方案很少使用,特别是在 CAP 最终一致性思想的影响下TiDB 等 NewSQL 内部通过一致性协议保障 强一致,基于 NRW 理论保障可用性,这块非常复杂,不在讨论范围2.1.2. 异步复制
  异步复制架构如下:
  image
  核心流程:主节点处理完请求后,直接返回处理结果;从节点通过异步方式从主节点获取信息;
  特点优点:写入性能好缺点:存在数据丢失风险
  应用场景数据安全性要求低,性能要求高的场景,如 日志记录 等极端情况下的"饮鸩止渴",如 秒杀、大促场景2.1.3. 半同步复制
  半同步复制是同步复制和异步复制的结合体,架构如下:
  image
  核心流程主节点处理完请求后,对部分节点进行同步复制,等待其复制完成后,在向应用返回最终的处理结果;其他剩余节点进行异步复制
  特点在性能和一致性间做平衡
  应用场景满足大多数业务场景。2.2. 路由模式
  路由模式,主要决定请求如何分发到众多的数据库节点。2.2.1. 应用路由
  在应用层使用代码对请求进行分发,整体架构如下:
  image
  核心流程:为每个数据库节点构建一个DataSource,结合 ORM 框架,构建不同的 DAO应用代码根据业务场景,调用不同的 DAO 实现,完成读写操作多个从节点 DataSource 可以封装为 一个聚合 DAO,内嵌负载均衡算法,在不同的 从库 间进行路由
  特点:优点:简单,使用编码实现,掌控力最强缺点:对系统存在极大的侵入性,需要修改大量的逻辑代码
  场景:存在于老的项目或需要极致掌控力的场景2.2.2. 智能数据源
  将多个 DataSource 封装为一个具有路由功能的 SmartDataSource,整体架构如下:
  image
  核心设计如下:每一个数据节点对应一个 DataSource将多个 DataSource 封装为一个 SmartDataSourceSmartDataSource 自动解析 SQL,根据 SQL 类型自动完成请求路由应用程序仅于 SmartDataSource 进行通信
  特点:优点:对程序没有侵入性,无需调整代码,只需替换底层 DataSource 即可缺点:集群情况下,需要配置中心进行统一协调
  场景:特别使用于高性能场景2.2.3. Proxy 路由
  将 SmartDataSource 核心功能抽取到单独的服务,整体架构如下:
  image
  核心设计:将 SmartDataSource 的职能抽取到单独的服务向下管理多个数据库节点向上暴露标准的 jdbc 接口,供应用程序使用
  特点:优点。便于管理,所有的管理动作全部收口到 Proxy 层;缺点。增加一层网络开销,对性能有一定的影响;
  场景:使用于管理场景通常情况下,会在配置中心的基础上,综合使用智能路由和Proxy路由两种模式:
  智能路由。用于应用程序,追求极致的性能;
  Proxy路由。用于数据库管理,追求管理的便利性;
  配置中心。为智能路由和Proxy路由提供统一的配置信息。   3. 延时挑战
  应用程序集成读写分离后,最主要的挑战便是:复制延时。所以,在系统设计时,需要对特定场景进行特殊处理。3.1. 更新场景,强制切主
  对于更新场景,为了避免 主从延时导致的 写覆盖问题,通常使用强制切主策略。
  写覆盖的根源,见下图:
  image
  由于存在主从延时,所加载的 聚合根 不一定是最新的数据,因此,后续的修改 和 保存,都是在过期数据上执行,导致写丢失。
  备注:乐观锁保护下,不会出现写丢失情况;
  面对这种场景,最简单的策略便是:强制切主。具体流程如下:
  image
  直接从 Mater 进行加载,避免 Slave 查询到过期数据。
  SmartDataSource 和 Proxy 都提供了强制切主的设置方式,在此不做过多介绍。   3.2. 根据 version 进行智能路由
  如果下游能拿到最新版本的 version,便可以根据 version 智能的获取数据。
  以领域事件场景为例,问题描述如下:
  image
  核心流程如下:业务完成后,将变更更新至 DB,Master 更新完成后,直接返回处理结果;Slave 启动异步同步,但完成时间不可控;业务发送 领域事件 至 Topic;下游业务监听消息后,从 Slave 查询数据,如果Slave 尚未同步完成,则出现获取不到或获取过期数据的问题
  针对这个场景,可以引入 version 进行数据验证,基于 Version 的流程如下:
  image
  核心流程如下:业务完成后,将业务变更和version变更更新至 DB,Master 更新完成后,直接返回处理结果;Slave 启动异步同步,但完成时间不可控;领域事件包含当前的最新 version,将其发送至 Topic;下游业务监听消息后,先从 Slave 获取数据,并比对两者的 version如果大于等于 msg 中的 version,则直接使用;否则 从 Master 中进行加载,然后执行业务逻辑
  备注:步骤4 中 version 管理应该封装在服务接口,对外提供统一的带 version 参数的接口;
  时间戳是一种特殊的version,可以使用数据表的 update_time 作为 version。   3.3. 读己之写
  读己之写,简单说就是:保存完数据后,理解读取数据。
  由于复制延时的存在,通常无法立即读取刚写入的数据,问题流程如下:
  image
  核心流程:业务基于 Master 完成操作直接返回,异步并将变更复制到从节点UI跳转至下一个页面,该页面会读取最新数据(详情页、列表页)由于存在主从复制延时,可能无法获取最新数据3.3.1. 主动延时
  最简单的解法便是,在完成数据更新操作后,UI 主动sleep几秒,然后在进行下一步操作。
  image
  整体流程如下:在跳转新页面前,增加 loading 页,主动等待主从完成同步在系统压力大时,仍旧无法从根源上解决该问题由于其简单性,在项目中也大量使用3.3.2. UI 动态添加
  主动等待对用户存在一定的伤害,可以使用动态添加方案提升用户体验。
  image
  核心点包括:更新请求处理完成后,直接返回最新的数据,包括新增数据或修改后的数据;前端获取数据后,直接在 UI 上进行操作,如将其 append 到 Table 中 或 直接渲染 详情页;3.3.3. 智能切主
  UI主动添加只是一种障眼法,用户刷新页面,仍旧可能看不到最新数据,可以试试强制切主
  image
  根据规则,决定是否强制切主,如下:根据业务场景,"我的 xxx" 强制切主,其他请求 默认走 Slave时间间隔,请求时携带时间戳或版本,对请求进行切主判断4. 小结
  简单回顾,本文概要介绍了"读写分离"的方方面面,主要设计读写分离是提升系统读性能的重要手段落地读写分离,需要解决复制 和 路由 技术问题由于复制延时的存在,对特殊的业务场景进行治理

王安治今晚输球3大败笔王怡连续2场失误,葛钰1分钟没给女足U17世界杯今晚结束了小组赛最后1轮的争夺,面对卫冕冠军西班牙,中国女足尽管三军用命,最终还是0比1不敌对手,惨遭淘汰。而在比赛过程中,主帅王安治的3个用人细节堪称球队输球最大马内晒苏格拉底奖这一认可令我满心欢喜,感谢祖国人民和支持者直播吧10月19日讯塞内加尔前锋马内在本届金球奖获评第2名,同时还因为慈善行为获得了首届苏格拉底奖。他也在不久前发文感谢。马内晒出了自己手捧苏格拉底奖的照片,并表示言语无法表达当我新疆主帅阿的江,妻子年过50仍气质十足,女儿阿迪娜,太美了悄然间,202223赛季CBA联赛已经拉开帷幕。四轮比赛战罢,新疆队取得了3胜1负的不错战绩。随着阿不都沙拉木伤愈归队,新疆队的整体实力,又将提升不少。休赛期,新疆队签下了朱旭航和WTT冠军赛刚刚发生首日连爆2冷,女乒两位一姐一轮游,木原晋级北京时间2022年10月19日,WTT澳门冠军赛首日激情开打,今天有16场比赛,中国国乒有7位国手参赛,首轮就是32进16的每轮淘汰制,很残酷,没有缓冲余地,输一场就出局,所以,爆英特尔A770M显卡跑分出炉,比RTX2060高63ETAPrime对搭载英特尔A770M显卡的蝰蛇峡谷NUC进行了测试,在3DMarkTimeSpy测试中,A770M的图形分达到了10770分,与幻影峡谷搭载的RTX2060相比有华为Mate50,国家收藏了大家好呀,我是果子!上个月,华为发布了暌违两年的终极旗舰Mate50系列,作为华为的当家旗舰,Mate50系列可谓浑身都是亮点。图片来源华为官网除了首发自家的XMAGE移动影像方案多图预警!带你直观感受山东11家新增4A级景区的美据山东省文化和旅游厅最新消息,以下11家旅游景区达到国家4A级旅游景区标准要求,拟确定为国家4A级旅游景区。现予公示,公示期自2022年10月17日至25日。11个幸运儿花落哪些地他曾任青海省委书记,62岁被调往山东任省委书记兼省长,享年99岁这位干部是一名老战士,在战场上与敌人殊死搏杀过,也在地方党委工作过,军政实践经验丰富。建国后,他全身心地投入到社会主义建设中,带领人民群众摆脱贫困落后,逐步走向富强兴旺,他的名字叫赢京龙共创赢京东(龙岩)数字经济产业园厦门招商会圆满结束10月18日下午,由龙岩市高新经济开发区主办,京东(龙岩)数字技术有限公司承办的京东(龙岩)数字经济产业园招商推介会活动在厦门波特曼七星湾酒店隆重举行。活动以迎京龙共创赢为主题,展山东居民医保缴费上涨,人均筹资标准最低960元!另需关注五件事山东居民医保缴费上涨,人均筹资标准最低960元!另需关注五件事2023年度的城乡居民医保缴费已经开始,各地也纷纷发布了集中缴费通知,居民需要在年底以前完成缴费,今年的缴费标准相比去9695!CBA惊魂一战!山东加时掀翻广东,马尚2次力挽狂澜失绝杀北京时间10月19日,CBA常规赛第四轮迎来了一场强强对话,山东迎战广东。这场比赛,双方4节战成90平。经过残酷的加时赛,山东9695险胜广东。山东进行了针对性补强,留住高诗岩,签
冬奥会出圈,麒盛科技如何领跑千亿级数字化睡眠赛道?2023年3月21日,随着主题为良好睡眠,健康同行的第23个世界睡眠日来临,睡眠健康问题也越来越被关注。近日,由人民网人民健康主办的2023年健康中国人系列圆桌座谈在北京举行。以促春分至田园美春花相伴采茶忙3月20日,茶农在宜昌市夷陵区太平溪镇桃花满园的生态茶园里采摘春茶。随着春分时节到来,夷陵区乡村生态茶园里套栽的桃树花开满枝,茶农在粉红花朵与翠绿茶叶中忙着采摘春茶,茶乡处处呈现美2次爆冲突!杨鸣28分狂胜复仇李楠,郭艾伦1549,得分王空砍2双头条创作挑战赛10577!卫冕冠军辽宁男篮主场以28分优势,狂胜了江苏男篮,杨鸣成功复仇,赢得十分过瘾。不过,这场比赛打得十分火爆,2次爆发冲突。辽宁男篮此役全民皆兵,多达7人得分React好房租客项目项目搭建与整体布局目录项目准备项目整体布局首页模块城市选择模块一项目准备1。1项目介绍好客租房移动Web端项目介绍本项目是一个在线租房项目,实现了类似链家等项目的功能,解决了用户租房的需求核心业务在阿里VP贾扬清被曝将离职创业建大模型基础设施,已锁定首轮融资杨净丰色发自凹非寺量子位公众号QbitAI又一AI大牛,投身大模型浪潮。量子位最新获悉,一家新的AI公司正在酝酿当中,瞄准AIInfra(AI架构)方向。即便低调行事,它却水下火爆内乡县开展吴垭石头村文旅项目推进会春暖花又开,旅游热起来。日前,河南省内乡县委书记张智广,县委副书记县长孙红鑫带领县直乡镇相关单位主要负责人,深入中国景观村落内乡县乍曲镇吴垭石头村,就当地文旅项目推进情况进行现场办总投资1亿美元!江苏宝陞智能物流仓储项目开工中国台湾网3月21日讯近日,江苏宝陞智能物流仓储项目开工仪式在淮安市淮阴区举行。据悉,该项目计划总投资约1亿美元,占地约122亩,项目正常达产后,可实现年税收1800万元左右。淮安四川南充蓬安台企全力拼经济抓生产助力地方发展南充佳美食品有限公司。(中国台湾网发)中国台湾网3月21日讯公司二期项目计划于今年二季度开工,四季度投产,力争3年内产值突破15亿元。近日,位于四川南充蓬安的台资企业佳美食品有限公大满贯比赛落幕!马龙王楚钦参加晚宴,大头的画亮了!在结束新加坡大满贯比赛后,马龙王楚钦孙颖莎陈梦则急忙赶赴上海参加了某品牌商的新品发布会,不得不说现在国乒球员的人气都非常高,上海球迷在得知莎头要来参加活动后,便举办了声势浩大的接机趣头条宣布从纳斯达克退市股票将在当地时间3月23日暂停交易Tech星球3月21日消息,趣头条于3月14日收到了纳斯达克关于将股票退市的决定函,根据上市规则,上市公司的市值至少为100万美元时,该公司无法重新获得180天宽限期后合规。该公司中国积极财政政策提升效能2022年预算执行情况总体良好央视网消息财政部昨天(3月20日)发布的2022年中国财政政策执行情况报告显示,2022年,积极的财政政策提升效能,更加注重精准可持续,全年全国预算执行情况和经济发展状况基本匹配,