幼儿饰品瑜伽美体用品微软
投稿投诉
微软创意
爱情通信
用品婚姻
爱好看病
美体软件
影音星座
瑜伽周边
星座办公
饰品塑形
搞笑减肥
幼儿两性
智家潮品

架构与思维高并发下解决主从延时的一些思路

  1回顾下MySQL主从复制
  主从复制,是指建立一个和主数据库完全一样的数据库环境(称为从数据库),并将主库的操作行为进行复制的过程:将主数据库的DDL和DML的操作日志同步到从数据库上,
  然后在从数据库上对这些日志进行重新执行,来保证从数据库和主数据库的数据的一致性。1。1为什么要做主从复制
  1、在复杂的业务操作中,经常会有操作导致锁行甚至锁表的情况,如果读写不解耦,会很影响运行中的业务,使用主从复制,让主库负责写,从库负责读。
  即使主库出现了锁表的情景,通过读从库也可以保证业务的正常运行。
  2、保证数据的热备份,主库宕机后能够及时替换主库,保障业务可用性。
  3、架构的演进:业务量扩大,IO访问频率增高,单机无法满足,主从复制可以做多库方案,降低磁盘IO访问的频率,提高单机的IO性能。
  4、本质上也是分治理念,主从复制、读写分离即是压力分拆的过程。
  5、读写比也影响整个拆分方式,读写比越高,主从库比例应越高,才能保证读写的均衡,才能保证较好的运行性能。读写比下的主从分配方法下:
  读写比(大约)主库从库
  50:5011
  66。6:33。312
  80:2014
  1。2主从复制的原理
  当在从库上启动复制时,首先创建IO线程连接主库,主库随后创建BinlogDump线程读取数据库事件并发送给IO线程,IO线程获取到事件数据后更新到从库的中继日志RelayLog中去,之后从库上的SQL线程读取中继日志RelayLog中更新的数据库事件并应用,
  如下图所示:
  细化一下有如下几个步骤:
  1、MySQL主库在事务提交时把数据变更(insert、delet、update)作为事件日志记录在二进制日志表(binlog)里面。
  2、主库上有一个工作线程binlogdumpthread,把binlog的内容发送到从库的中继日志relaylog中。
  3、从库根据中继日志relaylog重做数据变更操作,通过逻辑复制来达到主库和从库的数据一致性。
  4、MySQL通过三个线程来完成主从库间的数据复制,其中binlogdump线程跑在主库上,IO线程和SQL线程跑在从库上。拥有多个从库的主库会为每一个连接到主库的从库创建一个binlogdump线程。1。3主从延迟的原因
  MySQL主从复制,读写分离是我们常用的数据库架构,但是在并发量较大、数据变化大的场景下,主从延时会比较严重。
  延迟的本质原因是:系统TPS并发较高时,主库产生的DML(也包含一部分DDL)数量超过Slave一个Sql线程所能承受的范围,效率就降低了。
  我们看到这个sqlthread是单个线程,所以他在重做RelayLog的时候,能力也是有限的。
  2几种解决方案2。1最优的系统配置
  优化系统配置(系统级、链接层、存储引擎层),让数据库处在最优状态:最大连接数、允许错误数、允许超时时间、poolsize、logsize等,保证内存、CPU、存储空间的扩容(硬件部分)。
  倒金字塔法则告诉我们,这一块往往是被忽略的,但是又是必不可少的。
  如果MySQL部署在linux系统上,可以适当调整操作系统的参数来优化MySQL性能,下面是对Linux内核参数进行适当调整。
  1TIMEWAIT超时时间,默认是60s2net。ipv4。tcpfintimeout303增加tcp支持的队列数,加大队列长度可容纳更多的等待连接4net。ipv4。tcpmaxsynbacklog655355减少断开连接时,资源回收6net。ipv4。tcpmaxtwbuckets80007net。ipv4。tcptwreuse18net。ipv4。tcptwrecycle19net。ipv4。tcpfintimeout1010打开文件的限制11softnofile6553512hardnofile65535
  MySQL5。5版本之后,默认存储引擎为InnoDB,我们这边列出部分可能影响数据库性能的参数。
  公共参数默认值:
  1maxconnections1512同时处理最大连接数,建议设置最大连接数是上限连接数的80左右,一般默认值为151,可以做适当调整。3sortbuffersize2M4查询排序时缓冲区大小,只对orderby和groupby起作用,建议增大为16M5openfileslimit10246打开文件数限制,如果showglobalstatuslikeopenfiles查看的值等于或者大于openfileslimit值时,程序会无法连接数据库或卡死
  InnoDB参数默认值:
  1innodbbufferpoolsize128M2索引和数据缓冲区大小,建议设置物理内存的70左右(这个前提是这个服务器只用做Mysql数据库服务器)3innodbbufferpoolinstances14缓冲池实例个数,推荐设置4个或8个5innodbflushlogattrxcommit16关键参数,0代表大约每秒写入到ahrefhttps:www。bs178。comrizhitargetblankclassinfotextkey日志a并同步到磁盘,数据库故障会丢失1秒左右事务数据。1为每执行一条SQL后写入到ahrefhttps:www。bs178。comrizhitargetblankclassinfotextkey日志a并同步到磁盘,IO开销大,执行完SQL要等待ahrefhttps:www。bs178。comrizhitargetblankclassinfotextkey日志a读写,效率低。2代表只把ahrefhttps:www。bs178。comrizhitargetblankclassinfotextkey日志a写入到系统缓存区,再每秒同步到磁盘,效率很高,如果服务器故障,才会丢失事务数据。对数据安全性要求不是很高的推荐设置2,性能高,修改后效果明显。7syncbinlog189innodbfilepertableON10是否共享表空间,5。7版本默认ON,共享表空间idbdata文件不断增大,影响一定的IO性能。建议开启独立表空间模式,每个表的索引和数据都存在自己独立的表空间中,可以实现单表在不同数据库中移动。11innodblogbuffersize8M12ahrefhttps:www。bs178。comrizhitargetblankclassinfotextkey日志a缓冲区大小,由于ahrefhttps:www。bs178。comrizhitargetblankclassinfotextkey日志a最长每秒钟刷新一次,所以一般不用超过16M
  2。2数据库层做合理分治
  数据库分区是永恒的话题,主从延迟一定程度上是单台数据库主服务操作过于频繁,使得单线程的SQLthread疲于应付。可以适当的从功能上对数据库进行拆分,分担压力。
  数据库拆分可以参考我的这篇文章《分库分表》,这边就不赘述。2。3从库同步完成后响应
  假如你的业务时间允许,你可以在写入主库的时候,确保数据都同步到从库了之后才返回这条数据写入成功,当然如果有多个从库,你也必须确保每个从库都写入成功。当然,这个方案对性能和时间的消耗是极大的,会直接降低你的系统吞吐量,不推荐。
  2。4适当引入缓存
  可以引入redis或者其他nosql数据库来存储我们经常会产生主从延迟的业务数据。当我在写入数据库的同时,我们再写入一份到redis中。
  读取数据的时候,我们可以先去查看redis中是否有这个数据,如果有我们就可以直接从redis中读取这个数据。当数据真正同步到数据库中的时候,再从redis中把数据删除。如下图:
  这边还需注意两点,很重要哟,面试必问:
  1、虽然一定程度上缓解延迟的问题,但如果遇到高并发的情况,对Redis的频繁删除也不合理,所以需要结合场景综合考虑,比如定期删除缓存。
  2、高并发情况下可能存在slave还没同步,又有新的值写进来了,这时候MasterSlave还在排队中,但是Cache已经被更新了。所以如果对Redis进行删除,可能会误删除最新的缓存值,导致读取到的数据是旧的。
  如上图情况,对一个值分别更新1,2,3,主从同步按照顺序进行,刚同步完1,Cache就更新到3了,这时候如果把Cache删除了,读请求就会走到从库去读,读到了1,数据就会出现短暂不一致了。
  所以这个地方也需要注意,可以同时将唯一键(比如主键)也做保存,删除之前做一个判断,避免误删。或者干脆不实时删除缓存,低峰值期再来处理。2。5多线程重放RelayLog
  MySQL使用单线程重放RelayLog,那能不能在这上面做解法呢,比如使用多线程并行重放RelayLog,就可以缩短时间。但是这个对数据一致性是个考验。
  需要考虑如何分割RelayLog,才能够让多个数据库实例,多个线程并行重放RelayLog,不会出现不一致。比如RelayLog包含这三条语句给学生授予学分的记录,你就不知道结果会变成什么。可能是806甚至是721。1updatetscoresetscore721wherestucode374532;2updatetscoresetscore806wherestucode374532;3updatetscoresetscore899wherestucode374532;
  解法就是:
  相同库表上的写操作,用相同的线程来重放RelayLog;不同库表上的写操作,可以并发用多个线程并发来重放RelayLog。
  设计一个哈希算法,hash(dbname)threadnum,表名称hash之后再模上线程数,就能很轻易做到,同一个库表上的写操作,被同一个重放线程串行执行,做到提效的目的。
  这其实也是一种分治的思维,类似上面直接对数据库进行拆分。2。6少量读业务直连主库
  业务量不多的情况下,不做主从分离。既然主从延迟是由于从库同步写库不及时引起的,那我们也可以在有主从延迟的地方改变读库方式,由原来的读从库改为读主库。当然这也会增加代码的一些逻辑复杂性。
  这边需要注意的是,直接读主库的业务量不宜多,而且是读实时一致性有刚性需求的业务才这么做。否则背离读写分离的目的。2。7适当的限流、降级
  任何的服务器都是有吞吐量的限制的,没有任何一个方案可以无限制的承载用户的大量流量。所以我们必须估算好我们的服务器能够承载的流量上限是多少。
  达到这个上限之后,就要采取缓存,限流,降级的这三大杀招来应对我们的流量。这也是应对主从延迟的根本处理办法。3总结
  上面提到了多种方案都是可以讨论,每个方法都有弊端和优势,根据实际情况进行选型。在面试的过程中,也经常遇到候选人跟我讨论的。
  另外,mysql5。6之后,可以按照库并行复制。mysql5。7之后,提供了基于GTID并行复制的能力。可以参考学习下。
  作者:翁智华
  出处:https:www。cnblogs。comwzh2010p15311086。html

他是德国首都球队大腿,本赛季独造10球,依然落选了世界杯阵容比利时国家队公布了世界杯的大名单,二混子巴舒亚伊再度入选,而本赛季状态不错的卢克巴基奥却落选。看起来马丁内斯还是喜欢用老人,以他们的经验在大赛争取好成绩。江湖人称快乐男孩的巴舒……海兰德轰下29分,掘金1分优势客场力擒独行侠北京时间2022年11月21日8时30分,NBA常规赛比赛打响。独行侠坐镇主场迎战掘金。【两队首发阵容】独行侠:芬尼史密斯,布洛克,丁威迪,鲍威尔,东契奇掘金:乔丹……适合秋冬干皮用的8款大牌护肤品推荐,永远的常青树冬天到了,很多人都开始经不住干冷秋风的摧残,脸颊开始干燥起皮了,粉底液开始卡粉没那么服帖了!所以需要换上一些适合秋冬的护肤品。今天cdf会员购(幺青马SJTV)就分享一些都是很……多喝水和少喝水的人,有什么不一样?对比其实很直观水是生命之源,每天补充足够的水分对人体健康有促进作用,不断加强血液循环,又让代谢速度加快,排泄出有害物质,相比那些长时间缺水或者饮水方法不正确的人来说会比较健康。而关于爱喝水跟……有些话很打脸,却很真实好看的皮囊你玩不起,有趣的灵魂看不上你。如果吼叫能解决问题,驴将统治世界。请你控制情绪,温柔说话!屏蔽力是一个人最顶级的能力,任何消耗你的人和事,多看一眼都是你的不……退钱哥启程去卡塔尔看世界杯,待一个月预计花费10万元左右还记得因为当年的一句话:对得起我们吗?XXX,退钱而出圈的退钱哥吗?在2016年俄罗斯世界杯亚洲区预选赛上,国足因为门将的一次冒失的出击丢球,最终以0:1败给了叙利亚国家足球队……三年之约!强强强超3600件5G专利,引领5G技术和标准体系构建;125万个5G基站,织就一张覆盖范围广、覆盖程度深的全球最大5G精品网;5。57亿5G套餐用户,彰显优质服务的良好口碑;超1。……广东队最新消息杜锋战术被吃透,徐杰发挥最稳定,三分集体失准杜锋战术被吃透。北京时间10月17日,CBA新赛季的比赛如火如荼进行,广东男篮目前的战绩是1胜2负,排名倒数第二,这个排名也是广东男篮近二十年来最差的开局,出现这种问题原……满眼治愈!出片率100!上海这里的深秋美景上新啦如果说有什么色彩能代表秋天那一定是金黄色银杏、稻田、枫叶直接把大自然的饱和度拉满呈现出一幅幅会动的油画最近在上海有一个地方的秋季美景已经悄悄……篮网2连胜,西蒙斯克服心魔,回归正轨,杜兰特三巨头大战恩比德本文前言篮网队两连胜,勇士队两连胜,湖人队三连胜,最近篮网、湖人和勇士终于开始找到了赢球的节奏和状态。不知不觉,篮网队战绩8胜9负,篮网队已经从东部倒数升到了东部第九名。……95后年轻妈妈背着1岁宝宝上3000元的班,评论区里我看了另有这样一个视频,视频里一个95后的年轻宝妈背着1个1岁的宝宝在办公桌前忙前忙后工作。她说:带着一岁宝宝工作也是为了我们能早日买房,我找了大概两天,之前人家都不要我们,那天……王宝强带新女友出镜,身份曝光背景不简单,她会成为第二个马蓉吗9月23日,王宝强现身于一档农业节目,节目中,王宝强穿着经典短T,下半身穿着宽松的灰裤子,同时脚上还穿上了黑色橡胶雨靴,站在稻田中,宛然一副农民的模样。当主持人调侃王宝强……
白条猪肉批发价周环比上涨7。4本报太原讯据山西省商务厅市场监测显示,上周(10月1723日)全省生活必需品供应充足,价格稳中略升,具体监测情况如下:粮食类:粮食类零售均价5。48元公斤,周环比微涨0。……在闲鱼上买二手裙装的方法和注意事项裙装可以买二手的吗?答案是肯定的,尤其是像汉服、牛仔裙及各种秋冬季节的比较厚的裙子,只要干净整洁不是太旧我觉得都是可以的,首先是省钱,而且也促进了环保,我们知道生产一条像牛仔裙……羊了个羊创始人分走3个亿蕾哈娜回归曾因《羊了个羊》火了的游戏上市公司吉比特,日前披露前三季度利润分配方案。这家公司前三季度归母净利润为10。12亿元,拟每10股派发140元现金,其实控人卢竑岩将拿走其中超过3亿……飞利浦HuePlay显示器灯带上市,1399元起IT之家10月18日消息,9月份,Signify(原飞利浦照明)推出了适用于PC显示器的全新飞利浦HuePlay渐变灯条,可连接在显示器后面,提供氛围灯效。现在,该系列H……愿有光阴如坐禅,拟将人生逝风烟的确,不经现实中的道听途说,不足以踌躇满志。作为一群缺心眼的傻蛋,半推半就、狐疑不决之中被骗了过来。还记得几个月前的搬迁动员大会上,跟众多虾兵蟹将一样,在意向书最下面一栏选择考……江苏宝应大黑马19岁进建行,今掌中企500强,资产总计2。8宝应县,隶属江苏省扬州市,地处江苏省中部、长江三角洲北翼、里下河平原西北部,扬州市北缘,属宁镇扬同城化外围圈层。2021年,宝应县地区生产总值841。41亿元,比上年增长7。5……长江源头出问题!夏季雨减少?中科院热带火山喷发后有影响中科院发布新研究成果,长江源头出问题了,这对未来的长江以及其他的河流来说,这可能会带来负面影响。当然,很多人可能想到,2022年的长江变化非常极端化,都这样了,还有什么负……明日天气预报荆门2022年09月21日天气预报,小雨,北风转【来源:综合自中国气象局】荆门09月21日(周三)天气预报,天气现象小雨,风向风力:北风转西风3级。最高气温20摄氏度,最低气温15摄氏度。感冒指数:少发,无明显降……人民币中间价调贬378个基点,机构称短期仍有继续调整的风险9月26日,人民币兑美元中间价报7。0298,下调378点;上一交易日中间价6。9920,上一交易日官方收盘价7。1104,上日夜盘报收7。1298。中国央行今日开展7天……克莱伯森安东尼需要学习菲戈,卡塞米罗的调度能力有进步在曼联击败奥莫尼亚的比赛中,麦克托米奈替补出场取得了进球。前巴西球星克莱伯森评价了红魔的巴西球员,他希望安东尼找到学习的榜样和动力。克莱伯森表示:安东尼需要学习菲戈,这个孩子的……16!欧战惨案夜20分钟连丢3球,意甲2。7亿劲旅创耻辱北京时间9月16日凌晨,欧联杯小组赛第2轮继续进行,F组迎来一场卡位战,由丹麦球队中日德兰主场迎战意甲劲旅拉齐奥。据统计,中日德兰全队身价只有4860万欧元,拉齐奥则是2。7亿……申真谞对中国棋手23连胜,柯洁吐槽没法下了申真谞比阿法狗还厉在今天下午进行的一场万众瞩目的第23届农心杯的中韩主将决战中,韩国主将申真谞中盘击败了中国主将柯洁,提前将中国队淘汰出了最后的冠亚军争夺战之中。这样中国队就在本届农心杯的整体比……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网