毕竟啥才是互联网架构“高可用”
4. 【处事层>缓存层】的高可用 【处事层〗】稻缓存层】的高可用,是通过缓存数据的冗余来实现的。 缓存层的数据冗余又有几种方法:第一种是操作客户端的封装,service对cache举办双读可能双写。 缓存层也可以通过支持主从同步的缓存集群来办理缓存层的高可用题目。 以redis为例,redis自然支持主从同步,redis官方也有sentinel哨兵机制,来做redis的存活性检测。 自动妨碍转移:当redis主挂了的时辰,sentinel可以或许探测到,会关照挪用方会见新的redis,整个进程由sentinel和redis集群共同完成,对换用方是透明的。 说完缓存的高可用,这里要多说一句,营业对缓存并不必然有“高可用”要求,更多的对缓存的行使场景,是用来“加快数据会见”:把一部门数据放到缓存里,假如缓存挂了可能缓存没有掷中,是可以去后端的数据库中再取数据的。 这类应承“cache miss”的营业场景,缓存架构的提议是: 将kv缓存封装成处事集群,上游配置一个署理(署理可以用集群冗余的方法担保高可用),署理的后端按照缓存会见的key程度切分成多少个实例,每个实例的会见并不做高可用。 缓存实例挂了屏障:当有程度切分的实例挂掉时,署理层直接返回cache miss,此时缓存挂掉对换用方也是透明的。key程度切分实例镌汰,不提议做re-hash,这样轻易激发缓存数据的纷歧致。 5. 【处事层>数据库层】的高可用 大部门互联网技能,数据库层都用了“主从同步,读写疏散”架构,以是数据库层的高可用,又分为“读库高可用”与“写库高可用”两类。 6. 【处事层>数据库层“读”】的高可用 【处事层〗】稻数据库读】的高可用,是通过读库的冗余来实现的。 既然冗余了读库,一样平常来说就至少有2个从库,“数据库毗连池”会成立与读库多个毗连,每次哀求会路由到这些读库。 自动妨碍转移:当读库挂了的时辰,db-connection-pool可以或许探测到,会自动的举办妨碍转移,将流量自动迁徙到其他的读库,整个进程由毗连池自动完成,对换用方是透明的(以是说DAO中的数据库毗连池是很重要的基本组件)。 7. 【处事层>数据库层“写”】的高可用 【处事层〗】稻数据库写】的高可用,是通过写库的冗余来实现的。 以mysql为例,可以配置两个mysql双主同步,,一台对线上提供处事,另一台冗余以担保高可用,常见的实践是keepalived存活探测,沟通virtual IP提供处事。 自动妨碍转移:当写库挂了的时辰,keepalived可以或许探测到,会自动的举办妨碍转移,将流量自动迁徙到shadow-db-master,因为行使的是沟通的virtual IP,这个切换进程对换用方是透明的。 五、总结 高可用HA(High Availability)是漫衍式体系架构计划中必需思量的身分之一,它凡是是指,通过计划镌汰体系不能提供处事的时刻。 要领论上,高可用是通过冗余+自动妨碍转移来实现的。 (编辑:河北网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |