系统从初期到支撑亿级流量,都经历了哪些架构的变迁?

写在前面

随着互联网的发展,互联网企业的业务也在不断的飞速发展,进而致使系统的架构也在不断的发生着变化。整体来讲,系统的架构大体经历了:单体应用架构—>垂直应用架构—>分布式架构—>SOA架构—>微服务架构的演变。固然,不少互联网企业的系统架构已经向Service Mesh(服务化网格)演变。今天,咱们就一块儿来聊聊关于系统架构的演变这个话题。程序员

单体应用架构

在企业发展的初期,通常公司的网站流量都比较小,只须要一个应用,将全部的功能代码打包成一个服务,部署到服务器上就能支撑公司的业务。这样也可以减小开发、部署和维护的成本。面试

好比,你们都很熟悉的电商系统,里面涉及的业务主要有:用户管理、商品管理、订单管理、支付管理、库存管理、物流管理等等模块,初期咱们会将全部模块写到一个Web项目中,而后统一部署到一个Web服务器中。数据库

这种架构特色有其优势:缓存

  • 架构简单,项目开发和维护成本低。
  • 全部项目模块部署到一块儿,对于小型项目来讲,维护方便。

可是,其缺点也是比较明显的:性能优化

  • 全部模块耦合在一块儿,虽然对于小型项目来讲,维护方便。可是,对于大型项目来讲,倒是不易开发和维护的。
  • 项目的各模块以前过于耦合,若是一旦有一个模块出现问题,则整个项目将不可用。
  • 没法针对某个具体模块来提高性能。
  • 没法对项目进行水平扩展。

正是因为单体应用架构存在着诸多的缺点,才逐渐演变为垂直应用架构。接下来,咱们就来看看垂直应用架构。服务器

垂直应用架构

随着企业业务的不断发展,发现单节点的单体应用不足以支撑业务的发展,因而企业会将单体应用部署多份,分别放在不一样的服务器上。可是,此时会发现不是全部的模块都会有比较大的访问量。若是想针对项目中的某些模块进行优化和性能提高,此时对于单体应用来讲,是作不到的。因而乎,垂直应用架构诞生了。微信

垂直应用架构,就是将原来一个项目应用进行拆分,将其拆分为互不想干的几个应用,以此来提高系统的总体性能。架构

这里,咱们一样以电商系统为例,在垂直应用架构下,咱们能够将整个电商项目拆分为:电商交易系统、后台管理系统、CMS管理系统等。并发

咱们将单体应用架构拆分为垂直应用架构以后,一旦访问量变大,咱们只须要针对访问量大的业务增长服务器节点便可,无需针对整个项目增长服务器节点了。app

这种架构的优势:

  • 系统进行了拆分,可根据不一样系统的访问状况,有针对性的进行优化。
  • 可以实现应用的水平扩展。
  • 各系统可以分担总体访问的流量,解决了并发问题。
  • 一个系统发生了故障,不该用其余系统的运行状况,提升了总体的容错率。

这种架构的缺点:

  • 拆分后的各系统之间相对比较独立,没法进行互相调用。
  • 各系统不免存在重叠的业务,会存在重复开发的业务,后期维护比较困难。

分布式架构

咱们将系统演变为垂直应用架构以后,当垂直应用愈来愈多,重复编写的业务代码就会愈来愈多。此时,咱们须要将重复的代码抽象出来,造成统一的服务供其余系统或者业务模块来进行调用。此时,系统就会演变为分布式架构。

在分布式架构中,咱们会将系统总体拆分为服务层和表现层。服务层封装了具体的业务逻辑供表现层调用,表现层则负责处理与页面的交互操做。

这种架构的优势:

  • 将重复的业务代码抽象出来,造成公共的访问服务,提升了代码的复用性。
  • 能够有针对性的对系统和服务进行性能优化,以提高总体的访问性能。

这种架构的缺点:

系统之间的耦合度变高,调用关系变得复杂,难以维护。

SOA架构

在分布式架构下,当部署的服务愈来愈多,重复的代码就会愈来愈多,对于容量的评估,小服务资源的浪费等问题比较严重。此时,咱们就须要增长一个统一的调度中心来对集群进行实时管理。此时,系统就会演变为SOA(面向服务)的架构。

这种架构的优势:

使用注册中心解决了各个服务之间的服务依赖和调用关系的自动注册与发现。

这种架构的缺点:

微服务架构

随着业务的发展,咱们在SOA架构的基础上进一步扩展,将其完全拆分为微服务架构。在微服务架构下,咱们将一个大的项目拆分为一个个小的能够独立部署的微服务,每一个微服务都有本身的数据库。

这种架构的优势:

  • 服务完全拆分,各服务独立打包、独立部署和独立升级。
  • 每一个微服务负责的业务比较清晰,利于后期扩展和维护。
  • 微服务之间能够采用REST和RPC协议进行通讯。

这种架构的缺点:

  • 开发的成本比较高。
  • 涉及到各服务的容错性问题。
  • 涉及到数据的一致性问题。
  • 涉及到分布式事务问题(小伙伴们能够参见我后续会持续更新的【分布式事务】专题)。

好了,今天咱们就到这儿吧,我是冰河,咱们下期见!!

重磅福利

微信搜一搜【冰河技术】微信公众号,关注这个有深度的程序员,天天阅读超硬核技术干货,公众号内回复【PDF】有我准备的一线大厂面试资料和我原创的超硬核PDF技术文档,以及我为你们精心准备的多套简历模板(不断更新中),但愿你们都能找到心仪的工做,学习是一条时而郁郁寡欢,时而开怀大笑的路,加油。若是你经过努力成功进入到了心仪的公司,必定不要懈怠放松,职场成长和新技术学习同样,不进则退。若是有幸咱们江湖再见!

另外,我开源的各个PDF,后续我都会持续更新和维护,感谢你们长期以来对冰河的支持!!

相关文章
相关标签/搜索