再也不要只说“集群“”这两个字了
概述
集群这个名词的出现让我们一聊技术张口就是这个集群,那个集群感觉很高大上,最近上了一堂课觉得之前都没学好集群的概念。
集群解决了什么问题
- 单点故障
- 分担压力
单点故障
说白了就是你设备也好、应用也好出问题了,业务不出问题,保业务,这里着重说单点故障,分压这个大多数都是负载均衡,再加上应用的无状态性解决,聊起来好多,我们就着重一点,解决单点故障大多数分为:
- 应用集群
应用一般就是搞主备,使用keeplive或者headbeat,大不了LVS之类的。 - 数据库集群
主要说下数据库,业务数据的核心,场景是当一台数据库挂了保证数据正常,业务不挂,这里有几个名词:
– 强一致性
常用的是一主一备模式,主库的数据同步到备库。
每一条数据必须2个数据库都OK了才能插入下一条数据,如果只有一个OK,数据库就不可写入了,细品下。
– 弱一致性
弱一致性就是只要主库OK就好了,至于备库数据同步完整不管他了。
思考
那这里就引发一个问题如何保证数据一致,业务又能不断呢?
这里首先要分析下数据库有哪些原因:
1、计算资源故障,如内存溢出、cpu爆表或者数据库服务器坏了
这类故障通过增加计算资源或者应用主备就可以解决。
2、硬盘损坏
这里就引出了hdfs的概念,hdfs可以保证在损坏一部分磁盘的情况下保证数据的完整性,所有很多公有云和数据库的底层都是分布式存储,具体看下图:
用户像master传入一份数据,master把数据通过算法拆分到3个节点上,这样随便哪个挂了数据依然还在,特别是磁盘的吞吐量增大,去掉了IO瓶颈,当然怕master挂了,可以多搞几个master,在搞个负载均衡,完美。