欢迎来到天天文库
浏览记录
ID:38688795
大小:985.08 KB
页数:44页
时间:2019-06-17
《异地多活 IDC 机房架构》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、异地多活IDC机房架构荔枝FM架构师刘耀华内容问题与需求系统理论系统调研架构设计最佳实践Q&A问题与需求分析单一机房架构问题数据安全•机房不可用时数据无法访问业务可用•机房不可用时业务停止性•因网络连通性,不同地域的用户响应用户的请求响应延迟不同多机房备份保留重要的用户与系统数据,以保证数据安全提高系统可用性,当某一机房发生故障时能尽快地切换都另一机房继续提供服务。提高系统访问性能,按用户地域来合理分配距离最近,访问最佳的机房。系统理论CAP理论——UniversityofCalifornia,BerkeleycomputerscientistEricBrewer,一致性(
2、Consistency)所有节点都能访问同一份最新的数据副本可用性(Availability)每个请求都能接收到一个响应,无论响应成功或失败,而不应该是网络超时、连接断开等非服务程序答复。分区容忍性(Partitiontolerance)除了整个网络的故障外,其他的故障(集)都不能导致整个系统无法正确响应。CAP三选二原则CAP原理指的是,这三个要素最多只能同时实现两点,不可能三者兼顾。AC模型:(可用性+强一致性)-分区容忍MySqlCluster集群Availability:Mysql集群内部分节点失效,操作仍可执行。Consistence:Partition:Mysql提供两
3、阶段提交事务方Mysql各节点无法脱离集群独立式,保证各节点数据强一直性。工作。CP模型:(一致性+分区容忍)-可用性Redis客户端哈希/Twemproxy集群Availability:当Redis某节点失效,其节点里的所有数据都无法访问Consistence:Partition:各Redis节点无共享数据,所以各Redis节点独立服务,互不影响。不存在节点间数据不一致问题。AP模型:(可用性+分区容忍)-强一致性Cassandra集群Availability:当少于一定数量的节点失效时,集群服务不受影响。Consistence:Partition:各节点间的数据非实时强一直性。数
4、据在多个节点中备份,单个节只要求数据在部分节点写入成功点失效不会影响整个集群服务。后即可,其余节点异步同步。CAP数据库模型互联网行业模型不同的业务类型要求不同的CAP模型:CA适用于支付、交易、票务等业务要求数据强一致性的行业;(宁愿业务不可用,也不能出现脏数据或数据错乱)而互联网则对严格一致性要求不太高,但对业务可用性要求较高。因此一般都采用高可用+分区容忍+弱一致性架构。(+A+P-C),并衍生出BASE模型。BASE理论eBay的架构师DanPritchett源于对大规模分布式系统的实践总结,在ACM上发表文章提出BASE理论。BASE是指基本可用(BasicallyA
5、vailable)、软状态(SoftState)、最终一致性(EventualConsistency)。BASE模型基本可用(BasicallyAvailable)基本可用是指分布式系统在出现故障的时候,允许损失部分可用性,即保证核心可用。服务降级BASE模型软状态(SoftState)软状态是指允许系统存在中间状态,而该中间状态不会影响系统整体可用性——临时数据不一致。全局锁v.s数据多版本BASE模型最终一致性(EventualConsistency)最终一致性,就是不保证在任意时刻任意节点上的同一份数据都是相同的。但是随着时间的迁移,不同节点上的同一份数据总是在向趋同的方向
6、变化。数据一致性模型强一致性(串行)线性一致性(时钟同步)序列一致性(全局序列号)因果一致性(关联进程间同步,不相关进程则最终一致)最终一致性(窗口期数据不一致)最终一致性根据互联网业务特性,最后选择最终一致性。系统业务调研服务器系统当前服务端系统架构连接管理Socket代理Nginx接入层……业务层App服务Web服务主播后台上传系统……服务总线数据层数据中心账号管理审核系统……存储层分布式文件DataBaseMemCachedRedis系统……业务数据分析主传输线后备传输类型数据量优先级路线路资源文件大低公网机房专线数据小高机房专线公网架构设计硬件物理架构系统架构数据存储(Data
7、Store)系统数据存储系统DataStore主机房DS服务器失效从机房DS服务器失效脑裂问题运维与监控最佳实践数据切分先纵再横先按业务进行垂直拆分再按ID哈希进行水平拆分按业务拆分按ID哈希拆分数据只改不删记录在数据库中删除后很难恢复尽量做删除标记,而不是物理删除善用异步处理异步响应能提高系统使用效率,避免线程挂起死等。异步会增加编程复杂度,提供简单易用的异步接口所有外部的IO操作都有可能因操作缓慢而阻塞:e.g.写硬
此文档下载收益归作者所有