“数据”是一个公司的核心资产,数据丢失或不可用则将是一个严重事故。如何做到高可用,其实三个核心点: 冗余,可用,扩容
冗余一般都是复制机制将数据分发在不同的机器上,保证数据非单点存储
可用保证服务不中断,当master挂了,能自动切到salve 上
扩容一般当数据存储容量不足,可通过分片或分区来往外增加增加容量空间
- MYSql
1.镜像,基本冗余保证了,但当服务不可用时需要手动切换另外一台。
2.镜像+KeppLive , 冗余有了,也能自动切了,但Kepplive 挂了呢?
3.PCX或MHA , 冗余有了,能自动切,但不能扩容,机器至少三台
4.MYCat中间件 ,支持分片扩容。
以上4种方案可组合使用,没有最好,只有适合不适合。
- Reids
1.主从模式,冗余有了,无法自动切
2.主从+哨兵 ,可以自动切了
3.Codis , 集群并支持动态扩容
- RabbitMQ
镜像+集群 冗余有了,能自动切,但没有扩容的好方案,目前知道就 元数据结构或队列中全量数据的同步。
- KafKa
有分区,可以动态扩容,增加新的Broker 或 Partition即可,集群就不必说了必须有的。
以上简单总结,欢迎探讨。
更多精彩文章,请关注公众号: