1、一致性,分为强一致性、弱一致性、最终一致性。属于哪个一致性等级,与数据库多副本状态下的读写成功所需的最小化副本数有关。最常用的一致性协议有paxos、raft。
若采用强一致性,则又分为两种情况:读写分离、读写不分离。读写分离情况下,无论读或写都需要大多数副本成功才认为读写成功;读写不分离情况下,写需要大多数副本写成功才返回成功,读只能读主副本,也能保证读到的数据是最新的。
写并发高的情况,通过合理策略进行数据分片(甚至二次分片),把数据打散,避免热点盘。在主机配置和网络带宽有限的情况下,写数据量大到一定程度是无法避免性能瓶颈的,事先可以通过分片避免热点盘,事中可以扩容。所以一般建议根据应用系统的交易量来规划设计数据库,可以一定程度上避免高并发写带来瓶颈。
读并发高的情况,还是选择强一致性的数据库吧。
交易类系统我们选用的是高性能事务型分布式数据库。分析类系统对实时事务处理要求不高,会选择HBase这类建数仓。管理类系统,得看是哪类,如果是实时监控类的管理系统对性能要求高可以上,其他的管理系统为了节约成本可以选择普通数据库。
2、系统架构并没有很复杂,反而更利于运维管理,一般分布式数据库都有管理节点和计算节点,对于管理员来说维护复杂度反而下降了,不用每个业务系统维护一套了。
数据分片时,业务和技术听谁的,这个难以回答,每家企业有自己的做事策略。
领头羊当然是有的。