Section 4: 应用程式架构与技术 (19:58 - 26:34)

选定的架构和技术 (19:58 - 20:14)

经过与开发团队的讨论,我们最终确定了以下架构和技术选型:我们将采用微服务架构,并使用 Spring Boot 3 和 Spring Cloud。

详细架构图 (20:14 - 26:34)

我们的应用程式架构图如下。它展示了各个微服务之间的关系以及所使用的技术。

  • 微服务 (Microservices): 我们将拥有五个主要的微服务:客户(Customer)、产品(Product)、订单(Order)、支付(Payment)和通知(Notification)。
  • 数据库 (Databases):
    • 客户微服务使用 MongoDB,这是一个 NoSQL 数据库。选择 MongoDB 主要是为了展示我们如何在微服务架构中使用不同的数据库技术。
    • 产品、订单和支付微服务使用 PostgreSQL,这是一个关系型数据库。
    • 所有数据库都将在 Docker 容器中运行。
  • 分布式模式 (Distributed Patterns):
    • 配置服务器 (Config Server): 为了外部化所有微服务的配置,我们将使用 Spring Cloud Config Server。Config Server 将集中管理所有微服务的配置信息,方便我们进行统一管理和更新。
    • Eureka 服务器 (Eureka Server): 为了实现服务发现,我们将使用 Eureka Server。每个微服务启动时,都会向 Eureka Server 注册自己。
    • API 网关 (API Gateway): 为了提供统一的入口点,我们将使用 API 网关。API 网关将接收来自客户端的请求,并根据路由规则将请求转发到相应的微服务。
  • 异步通信 (Asynchronous Communication):
    • 为了实现异步通信,我们将使用 Kafka 消息队列。订单微服务和支付微服务会将订单确认和支付确认消息发送到 Kafka 队列。
    • 通知微服务将监听 Kafka 队列,并根据收到的消息发送相应的通知邮件。
  • 分布式追踪 (Distributed Tracing):
    • 为了实现分布式追踪,我们将使用 Zipkin。Zipkin 可以帮助我们跟踪请求在各个微服务之间的调用链,从而方便我们进行性能分析和故障排除。
  • 未来增强 (Future Enhancements):
    • 在未来,我们计划使用 ELK Stack(Elasticsearch, Logstash, Kibana)来增强我们的监控和仪表盘功能。

通过 API 网关,客户端只能访问到有限的几个微服务,例如客户、产品和订单微服务。支付和通知微服务将作为内部服务运行,不对外暴露。