1. 工程架构介绍
1.1 两种工程架构模型的特征
1.1.1 单体架构
上面这张图展示了单体架构(Monolithic Architecture)的基本组成和工作原理。单体架构是一种传统的软件架构模式,其中所有的功能都被打包在一个单一的、紧密耦合的应用程序中。
下面对图中各部分的详细解释:
-
Application(应用程序):
-
这是整个系统的中心,包含了所有的业务逻辑和用户界面。
-
用户通过应用程序与系统进行交互,应用程序则负责处理用户请求并返回相应的结果。
-
-
Admin、User、Goods等模块:
-
这些模块代表了应用程序中的不同功能部分。
-
Admin(管理模块):可能包含用户管理、权限管理、系统设置等功能。
-
User(用户模块):处理用户相关的操作,如注册、登录、个人信息管理等。
-
Goods(商品模块):管理商品信息,包括添加、修改、删除商品等。
-
这些模块虽然在同一个应用程序中,但它们之间可能存在一定的耦合,因为它们共享相同的数据库和缓存资源。
-
-
DB(数据库):
-
数据库是单体架构中的核心数据存储组件。
-
所有的模块都直接或间接地与数据库交互,以存储和检索数据。
-
数据库的设计通常需要考虑所有模块的需求,这可能导致数据库结构复杂且难以维护。
-
-
Cache(缓存):
-
缓存用于提高系统的响应速度和性能。
-
它存储了频繁访问的数据,以减少对数据库的直接访问,从而减轻数据库的负担。
-
在单体架构中,缓存通常由应用程序统一管理,所有模块都可以访问缓存中的数据。
-
-
单体架构的特点:
-
简单性:开发和部署相对简单,因为所有功能都在一个应用程序中。
-
部署困难:随着应用程序规模的增长,部署和维护变得越来越困难,因为任何小的更改都可能需要重新部署整个应用程序。
-
扩展性差:由于所有功能都紧密耦合在一起,扩展特定功能可能需要扩展整个应用程序。
-
技术限制:整个应用程序通常使用相同的技术栈,这可能限制了使用不同技术优化特定功能的能力。
-
简单来说就是所有功能模块都集成在一个应用程序中,共享数据库和缓存资源。这种架构在小型或简单的应用程序中可能非常有效,但在大型或复杂的系统中,它可能导致维护和扩展的方面有很大的挑战。
1.1.2 微服务架构
上面这张图展示了微服务架构(Microservices Architecture)的基本组成和工作原理。微服务架构是一种将应用程序分解为一组小服务的架构风格,每个服务实现特定的业务功能,并可以独立部署和扩展。
下面对图中各部分的详细解释:
-
Gateway(网关):
-
网关是用户访问系统的入口点。
-
它负责接收用户请求,并将请求路由到相应的服务。
-
网关还可以提供额外的功能,如认证、授权、请求日志记录等。
-
-
Admin Service(管理服务):
-
这是一个独立的微服务,负责管理相关的功能,如用户管理、权限管理等。
-
它可以独立部署和扩展,以满足管理功能的需求。
-
-
User Service(用户服务):
-
这是另一个独立的微服务,负责处理与用户相关的功能,如用户注册、登录、个人信息管理等。
-
它也可以独立部署和扩展,以满足用户功能的需求。
-
-
Goods Service(商品服务):
-
这是负责商品管理的微服务,包括商品的添加、修改、删除等操作。
-
它可以独立部署和扩展,以满足商品管理的需求。
-
-
...... Service(其他服务):
-
这表示系统中可能还有更多的微服务,每个服务负责不同的业务功能。
-
每个服务都是独立的,可以独立部署和扩展。
-
-
-
独立性:每个服务都是独立的,可以独立开发、部署和扩展。
-
灵活性:可以使用不同的技术栈来实现不同的服务,以满足特定的需求。
-
可维护性:由于服务是独立的,修改一个服务不会影响其他服务,从而提高了系统的可维护性。
-
可扩展性:可以根据需要独立扩展特定的服务,以满足业务需求。
-
简单来说就是一个网关接收用户请求,并将其分发到不同的服务。每个服务独立运行,负责不同的任务,比如管理、用户或商品。这种设计让系统更灵活、容易维护,但也需要处理服务间的通信和数据同步问题。
2. 微服务架构组成与优点
2.1 使用微服务架构需要什么
-
注册中心:负责管理微服务的注册和发现。服务启动时会在注册中心注册自己的信息,其他服务可以通过注册中心查找并调用这些服务。
-
服务网关:作为系统的入口点,接收外部请求并路由到相应的微服务。它还可以处理认证、授权、限流等跨服务的公共功能。
-
链路追踪:用于监控和诊断微服务之间的请求路径和性能问题。它可以帮助追踪请求在服务间的流动,识别延迟和故障点。
2.2 使用微服务架构的优点
-
降低代码耦合:代码之间更独立,修改容易。
-
降低维护成本:系统更易维护,成本减少。
-
灵活扩容:根据需要轻松增加服务能力。
-
技术栈不受限:可以使用多种技术,更灵活。