微服务架构与实践——基础篇

一直以来,系统的架构设计是IT领域经久不衰的话题之一,是每个系统构建过程中及其关键的一部分,它决定了系统是否能够被正确、有效地构建。

那什么是系统架构设计?

系统架构设计描述了在应用系统的内部,如何根据业务、技术、组织、灵活性、可扩展性以及可为维护性等多种因素,将应用系统划分成不同的部分,并使这些部分彼此之间相互分工、相互协作,从而为用户提供某种特定价值的方式。

多年来,我们一直在技术的浪潮中乘风破浪,扬帆奋进,寻找更优秀的系统架构设计方式来构建系统。

随着面向对象分析、设计模式、企业架构模式等方法论的深入人心,从功能实现、代码组织的角度考虑,系统中不同职责的部分组件被划分到了如下三个层次:

  • 表示层,聚集数据显示和用户交互。
  • 业务逻辑层,聚集业务逻辑处理。
  • 数据访问层,聚集数据的存储与访问。

每一层负责的部分更趋向于具体化、细致化,这就是最初的软件三层架构。三层架构的出现,不仅解决了系统间调用复杂、职责不清的问题,更有效地降低了层与层之间的依赖关系,成为软件架构的经典模式之一。虽然三层架构将系统在逻辑上分成了三层,但它并不是物理上的分层。也就是说,对不同层的代码而言,经历编译、打包、部署后,所有的代码最终还是运行在同一个进程中。

对于这种功能集中、代码中心化、一个分布包、部署后运行在同一进程的应用程序,我们通常称之为单块架构应用。典型的单块架构应用,莫过于传统的J2EE项目所构建的产品或者项目,它们存在的形态一般是WAR包或者EAR包。当部署这类应用时,通常是将整个包作为一个整体,部署在某个Web容器,如Tomcat或者Jetty中。当这类应用运行起来后,所有的功能也都运行在同一进程中。

随着业务的不断扩大,需求功能的次序增加,单块架构已经很难满足业务快速变化的需要。一方面,代码的可维护性、扩展性、灵活性在降低;另一方面,系统的修改成本、构建以及危害成本在显著增加。因此,单块架构应用的改造与重构势在必行。

发表评论

电子邮件地址不会被公开。