带你了解软件系统架构的演变

一个成熟的系统,并不是一开始就做到方方面面都完美,也不会去考虑什么高并发,高可用问题,但随着时间的推移,现有架构的问题就会慢慢的显现。比如用户激增,访问量不断增大,在这过程中 ,会不断的出现新的问题,而为了解决这些问题,软件技术架构都会发生重大变化,而针对不同业务特征的系统会有各自的侧重点,像淘宝这类 站要解决的事海量商品搜索 下单支付等问题。像腾讯 要解决数亿级别用户的实施消息传输等。每种业务都有自己不同的系统架构。

以Java Web 为例 搭建简单的电商系统这个电商系统有多个业务模块,假设现在有:用户模块、商品模块、支付模块

阶段一、 单体架构

在 站初期, 经常在单机上跑所有的程序,所有的功能都在一个jar里,数据库和应用在一台服务器上,初期讲究的事效率,在互联 初期,用户量不多的时候,单体架构也能支撑使用。

阶段三 应用服务器集群,应用服务器负载吃紧

随着时间推移, 站访问量继续增加,单台服务器的性能已经无法满足需求,假如数据库服务器没有达到瓶颈,我们可以增加应用服务器,通过应用服务器集群将用户的请求分流到各个服务器上,从而提高负载能力,我们可以使用Nignx的反向代理,负载均衡,去使用户的请求到达各个集群服务器。此时服务器间没有直接交互,都是通过数据库各自对外交互。

阶段五 使用搜索引擎环节度数据库的压力

数据库做读库的话,尝试对模糊查询效率并不好,像电商类的 站搜索是非常核心的功能,几遍做了读写分离这个问题也不能有效解决,那么这个时候就需要引入搜索引擎,使用搜索引擎能大大提高查询效率,但同时也有问题,比如索引的维护

阶段七, 数据库的水平和垂直拆分

站演进的过程中, 用户 商品 交易的数据还在同一个数据库中,尽管采取了 缓存 读写分离的方式,但是数据库的压力持续增加,数据库的瓶颈仍是一个很大的问题,因此我们考虑对数据垂直拆分和水平拆分

垂直拆分: 把数据库中不同业务数据拆分到不同的数据库中
水平拆分:把同一个表的数据拆分到不同的数据库。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年3月4日
下一篇 2022年3月4日

相关推荐