架构演进历史

139 阅读2分钟

架构演进

随着互联网的发展,互联网企业的业务也在不断的飞速发展,进而导致系统的架构也在不断的发生着变化。目前系统的架构大致经历了:单体应用架构->垂直应用架构->分布式架构->SOA架构->微服务架构->云原生架构的演变

image.png

单体架构

单体架构(Monolithic Architecture)是一种传统的软件架构模式,将应用程序的所有功能模块打包成一个独立的单元,并部署在一个进程中。它通常包含用户界面、业务逻辑和数据访问层,所有代码都集中在一个代码库中。

单体架构的优点:

  • 开发简单:  开发人员可以将所有代码放在一个代码库中,方便管理和协作。
  • 部署简单:  部署只需要将一个应用程序包部署到服务器上即可。
  • 调试方便:  所有代码都在同一个进程中,调试起来比较方便。
  • 易于理解:  由于所有代码都在一个地方,因此更容易理解应用程序的整体结构。

单体架构的缺点:

  • 难以扩展:  随着应用程序的增长,单体架构的扩展性会变得越来越差。
  • 难以维护:  由于所有代码都在一个代码库中,因此修改代码可能会影响其他模块,导致维护困难。
  • 部署速度慢:  每次修改代码都需要重新部署整个应用程序,导致部署速度慢。
  • 技术栈限制:  单体架构通常使用相同的技术栈,难以引入新的技术。
  • 可靠性低:  一个模块的错误可能会影响整个应用程序的运行。

单体架构的实现方案:

  • 语言选择:  可以选择 Java、Python、PHP、C# 等语言。
  • 框架选择:  可以选择 Spring Boot、Django、Laravel、ASP.NET Core 等框架。
  • 数据库选择:  可以选择 MySQL、PostgreSQL、MongoDB 等数据库。
  • 部署方式:  可以选择将应用程序部署到物理服务器、虚拟机或容器中。

单体架构的适用场景:

  • 小型应用程序:  对于小型应用程序,单体架构可以提供快速开发和部署的优势。
  • 简单业务逻辑:  对于业务逻辑简单的应用程序,单体架构可以提供易于理解和维护的优势。
  • 快速原型开发:  单体架构可以快速构建应用程序原型,以便快速验证想法。

常见的包规范

com.example.project  // 根目录 通常以公司或项目名称命名
├── user //用户模块
│   ├── controller
│   │   └── UserController.java
│   ├── service
│   │   └── UserService.java
│   ├── repository
│   │   └── UserRepository.java
│   └── entity
│       └── User.java
├── order //订单模块
│   ├── controller
│   │   └── OrderController.java
│   ├── service
│   │   └── OrderService.java
│   ├── repository
│   │   └── OrderRepository.java
│   └── entity
│       └── Order.java
├── product  // 商品模块
│   ├── controller
│   │   └── ProductController.java
│   ├── service
│   │   └── ProductService.java
│   ├── repository
│   │   └── ProductRepository.java
│   └── entity
│       └── Product.java
├── config // 配置
│   └── AppConfig.java
├── exception // 异常
│   └── MyException.java
└── util // 工具类
    └── StringUtils.java

SOA架构