本章以系统架构,数据架构,两种维度来进行讲解
目录
1 系统架构
1,1 单体架构
早期系统多以单体业务为主,逐个业务线扩张。系统也多呈现为多个mvc独⽴运行状态。各⾃打各⾃的。
以电商为例,可能按B2B,B2C,C2C不断扩张,每个业务⼀套系统,每个系统⼀个维护团队。
劣势:代码重复率高,数据不共享
1)技术架构上:
有些相同功能,各个团队重复建设和维护带来的重复投资
业务系统间的集成和协作成本⾼昂
不利于基础性业务的沉淀和持续发展
2)组织架构上:
部⻔在单体模式下往往每个项⽬⼀个团队。团队跟随项⽬疯狂扩展,利⽤率低。
1.2 中台战略
中台类⽐之下:
中台模式下,基础业务也下沉到技术部⻔,甚⾄通过技术反推业务正向发展。
下层业务,变化不⼤的业务持续沉淀,接⼝像滚雪球⼀样越来越完善
上层业务,跟业务模式和运营产品有关的系统变化迅速,对底层接⼝封装组合即可
中台介绍:
中台在2015由阿⾥提出,其实是阿⾥共享业务技术部的成型过程。
中台是⼀种企业架构⽽不是单纯的技术层⾯,⽬前⼏乎各⼤电商都进⾏着中台化的建设。
中台不是什么新奇东⻄,实际上是“共享“理念在业务、系统、组织架构上的⼀种落地与实施。
中台的特点是 共享、节约成本、协作
2 数据库架构
2,1 单体架构
早在2003-2004淘宝V1.0就使⽤mysql,V1.1换成oracle,直到2007数据库重新往mysql回迁。
这个阶段往往引发追逐商业⼤型db如oracle(淘宝v1.1 , mysql→oracle)
java web项⽬直接通过jdbc,连接单⼀的数据库,读写扎堆在⼀块,单库上的机器io及cpu性能很快达到上限
2.2 主从读写
淘宝从oracle换回mysql的历程中实现了主从库部署与读写分离。
java web应⽤层连接多个数据库,数据库之间形成主从关系,主库上写,从库上读。读写压⼒被分散数据库集群:⼀主多从、双主单写(课题:mysql千亿级数量线上扩容实战)
应⽤层开发:多数据源⽀持,Spring multi datasource
中间件:Sharding-JDBC,Mycat,Atlas
特点
数据延迟:从主库到从库之间数据需要经过⽹络传输,不可避免的有延迟
开发层⾯:需要开发框架具备多数据源的⽀持,以及⾃动化的数据源切换
2.3 分库分表
主从库的写⼊依然是有⼀个统⼀的主库⼊⼝。随着业务量的提升,继续细粒度化拆分
业务分库:订单库,产品库,活动库,会员库
横向分表:(拆记录)3个⽉内订单,半年内订单,更多订单
纵向分表:(拆字段)name、phone⼀张表,info、address⼀张表,俩表id⼀致
特点
分库:不同的数据库,所以⽆法使⽤数据库事务,⽽分布式事务的效果并不理想,多采⽤幂等和最终⼀致性⽅案。
分表:拆了再聚合是⼀对⽭盾,例如按下单时间维度的分表,需要按⽤户排序统计变得异常困难。
中间件:Sharding-JDBC,Mycat,Atlas
3 总结
通过上面的学习,可以大体了解的系统架构及数据架构的发展历史互联网架构的演变过程是历史
项目的体现,了解即可