摘要:
原始sql: update a set a.x=x where a.xid in (select b.xid from b inner join c on b.xxx = c.xxx) and a.xdate='xxxxxxxx' 现象 sql 执行中,b表会偶尔提示锁超时。 处理过程: 已知 my 阅读全文
摘要:
架构重构的定义: 代码重构 定义:对软件代码做任何改动以增加可读性或者简化结构而不影响输出的结果 目的:增加可读性、增加可维护性、增加可扩展性 关键点: 不影响输出、不修改错误、不增加新功能 架构重构 定义:通过调整系统结构(4R)来修复系统质量问题而不影响整体系统能力 目的:修复质量问题(性能、可 阅读全文
摘要:
Gossip协议 流行病协议,流言协议 分布式网络,无集中管理节点;节点间点对点传播信息。 P2P,BITCOIN,REDIS CLUSTER 等等 简单: 扩展性:网络节点可任意增加或修改 容错性:无中心节点,任意节点宕机不影响协议运行 去中心化:任意节点都能发送消息 最终一致性问题: 需要花费一 阅读全文
摘要:
Es集群设计技巧 节点可以配置为不同角色,通过选举master实现集群管理 Coordinating:协调节点;Master:管理节点;Data:数据存储节点; 数据是按照索引分片的,不是按照节点分片。为了保证高可用,每个分片可以有多个副本 bully和 raft算法 master和data混合部署 阅读全文
摘要:
Redis Sentinel 设计技巧 哨兵的作用 监控redis节点的状态 可以通过api进行集群状态通知 实现故障自动切换 为client提供了master发现功能,当发生master切换时通知client raft算法 双节点架构(注意quorum ,majority配置) 单节点redis异 阅读全文
摘要:
zookeeper设计步骤 设计path 节点的路径 选择znode类型 普通节点、临时节点等 设计znode数据 节点中的数据 设计watch 节点的监听事件以及对应的处理 ZK实现主备切换架构 1、设计2个临时节点 master slave 2、master节点挂掉时 slave升级master 阅读全文
摘要:
传统网络模型 PPC和prefork 简单 fork代价高 性能低、父子进程通信要用IPC 监控统计等实现起来会比较复杂、OS上线问切换会限制上线文连接数 一般为几百 TPC和prethread 实现简单、无需IPC线程间通信即可、无需fork创建线程代价低 线程互斥和共享比ppc更复杂、某个线程异 阅读全文
摘要:
一个原理 粒度 cap关注的粒度是数据而不是系统,需要根据不同业务的数据特点设计异地多活 延迟 cap是忽略网络延迟的,但是实际工程中不可能做到0延迟 分区容忍 C A只能去一个是指在发生分区的时候,正常运行的系统CA同时满足 补救 需要为分区恢复后做准备,包括人工修复数据 三大原则 只保证核心业务 阅读全文
摘要:
业务定制型异地多活 按照业务优先级排序,优先保证核心业务异地多活,根据核心业务的流程和数据,设计定制化的异地多活架构 对基础设施无强要求 不通用,难扩展 CRC32 业务通用型异地多活 通过配套服务来支持异地多活,无需按照业务优先级排序来挑选某些业务实现异地多活,只需判断业务是否可以异地多活 对硬件 阅读全文
摘要:
同城多中心 同城双中心 同城 相距50KM以上 光纤互联 机房间网络延迟小于2ms 本质:逻辑上可以当做一个机房,可以应对机房级别灾难 技巧:多光纤通路 同一个集群部署在两个机房,单光纤容易发生脑裂 同城三中心 跨城双中心基本架构 不同城市 光纤互联 城市级别灾备,用户分区、异地多活 近邻城市 选择 阅读全文