人们的需求越来越多,越来越高,所以消费和服务出现爆发式增长,伴随着技术架构从单机程序到集群部署,再到SOA,微服务的兴起,设计理论层出不穷。人们对网上购物的热情不减,有需求就有市场,成为了每个企业努力的方向,所以对购物平台以及其配套措施的压力显著增加。除了互联网之外,还有传统的ERP企业也在面临着转型,所谓穷则思变,不变就没有出路。传统ERP最先考虑的是如何减低开发和维护成本,所以SASS和PASS的建设成为了首选,也是所有国内外企业争相争夺的宝地。
传统的单机模式,对于架构师和程序员来说,了解一下MVC,多线程就可以解决了;但是如果上升到分布式,那么复杂度成几何级别增加;分布式带来的问题数不胜数,分布式之后,数据的一致性成了最大的问题;其次就是如何解决数据集中统计和查询的问题,数据分布到多个地方汇总起来还是相当复杂的;接着考虑的是数据如何存储问题,如何存储数据与CAP如何选择息息相关,技术方案也参差不齐;比如,可以选择传统的数据库集群方案进行存储,以数据库中间件来协调集群之间的数据读写以及调度,还可以选择NoSql方案,将数据库存储到NoSql数据库之后再转到RDBMS进行转存,也可以选择NewSQL方案,这个相当于NoSQL和RDBMS的联合体,NoSQL的问题在于没有事务,RDBMS集群的问题在于协调问题。数据存储完之后,还要考虑如何进行海量查询问题,以前都是一个数据库的情况,SQL就可以处理,但是分布式之后,数据需要分布式传输,然后按指定规则清洗,再按业务规则汇总之后输出到某个地方才能查询。不同的存储方式对数据库的查询效率也是不一样的,传统的RDBMS以行式存储数据库为准,这种查询方式是基于磁盘的,通常以索引为主,不适合分布式查询;如果以列式存储数据,数据具备天然的横向扩展性,查询起来更得心应手,效率当然更高。
分布式事务
分布式数据一致性问题有很多方案,分布式事务是其中一个;一致性分为强一致性和最终一致性,说到这两个概念,就需要提到CAP理论问题,CAP就是从一致性,可用,已经分区三个角度考量分布式方案的。按照这个理论,所有系统不可能同时具备CAP三个特性;对于强一致性来说,具备的是CA;对于最终一致性来说,一般是具备CP两个特性;强一致性的方案有2PC,3PC等,但是这些一般停留在理论阶段,真正使用的很少,因为缺陷实在是太多了。实战中,其实最多考虑的还是最终一致性事务方案,比如TCC,SOGA,消息队列等方案。
高可用存储方案
分布式的其中一个好处就是解决程序的单点问题,保证系统高可用的运行,这也是分布式系统的优势之一。高可用方案很多,从传统的集群,镜像集群,到现在的PAXOS,RAFT等方案都可以进行选择。最常见的还是主备模式,因为这种模式是最简单的,但是两台服务器的稳定性还是相对偏弱的,所以目前很多系统都选择了PAXOS和RAFT作为主流的高可用方案。
分布式存储
大多数企业考虑到成本问题,都会选择开源的方案。传统的主流的RDMBS方案当然是首选MySQL和PostgreSQL,很多企业在这种数据库上搭建了自己的分布式式存储系统。这两种数据库最大的好处就是支持事务的;对于很多互联网企业可能优先选择的还是NoSQL方案,因为NoSQL存储速度较快,对于并发要求较高的互联网企业一般会牺牲掉事务来换取高并发需求。但是对于NoSQL来说也是很麻烦,后期的数据转存很统计以及数据的迁移都是较大的问题。所以基于前两者的不足,出现了他们的结合体NewSQL方案,代表有CockroachDB和TIDB等。最近几年分布式数据库得到了突飞猛进的发展。
分布式系统很复杂,最早的理论可以追溯到上个世纪五六十年代。正因为其复杂,所以上手门槛很高,一般没有10年以上经验很难玩得转。IT技术是门复杂的学科,需要不断的学习才能有长足的进步。本文列出的内容其实过于浅显,高手可以一笑而过。另外还要说的是,除了本文的一些方案外,分布式配合一些恰当的模式和工具也可以很好的解决问题,比如读写分离(CQRS)和消息队列等,读者有兴趣可以自行研究。
网友评论