内容简介:保证同一纬度查询写入尽量在一个机房选取router增加nginx 的dynamic_req_add key cityid $city_id
机房流量划分:
保证同一纬度查询写入尽量在一个机房
切流控制点:
- DNS:DNS缓存,切流量无法立刻生效 流量无法通过DNS完全切干净,有剩余流量(对应入网框架中,在httpdns中改,有一点点本地缓存,webapp无法用httpdns)
- LVS(无法根据业务需求流量划分的)
- ROUTEr(改nginx)。内部调用(inrouter同上、thrift本来就是service的ip直接服务发现时改,用同一份)
- 业务代码
选取router
增加nginx 的dynamic_req_add key cityid $city_id
dynamic_req $upstream_name default_liddc=xx upstreamm_name=xx port=xx;
机房下线:
先DNS去掉,router配置去
数据同步。本质是双机房要保持全量数据
mysql 主从
redis 见 https://segmentfault.com/a/11...
为什么 redis 不能和 mysql 一样用主从集群分机房?mysql本身主从延时就大,不像redis这种本身作为缓存的东西,机房间链路不稳定,如果主从复制配置同步或者命令延时就拒绝写/集群夸机房影响稳定。同步全部异步,基本用mq,否则要加丢失数据补齐太复杂。
mq。写入双写或消费双订阅。
切换过程中,因为重试等会有点问题。无法做到的。。。
机房迁移,迁移过程中双活。或维持上期双活
收敛配置,增加双机房配置
机器ready
功能验证。QA测
性能验证。指定url压测
数据同步
代码里用小流量测试
DNS改50
DNS彻底改
残余流量:旧route中IP配成新机房的VIP(不配为IP的原因是故障摘除方便,要一直持续发半年)
双活下机房迁移(有三活)
如果数据同步支持三活,没问题。如果只支持双活,可以:
验证C功能:A与B做双活,C读A的redis
数据切C:A与B断双活,B与C做双活,A读C redis
故障应对:C有问题后,流量切回A,A读Credis, C与B同步数据
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 无需公网IP就能异地组网?
- OPPO异地多活实践——缓存篇
- OPPO 异地多活实践:缓存篇
- 异地多活:MySQL实时双向(多向)复制实践
- 携程异地多活:MySQL 实时双向(多向)复制实践
- 最易懂的数据库异地多活方案
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Design and Analysis of Distributed Algorithms (Wiley Series on P
Nicola Santoro / Wiley-Interscience / 2006-10-27 / USD 140.95
This text is based on a simple and fully reactive computational model that allows for intuitive comprehension and logical designs. The principles and techniques presented can be applied to any distrib......一起来看看 《Design and Analysis of Distributed Algorithms (Wiley Series on P》 这本书的介绍吧!