Su的技术博客

  • 首页
  • 原创
  • 视频
  • Java
  • MySQL
  • DDD
  • 事故复盘
  • 架构方案
  • AI
  • Other
  • 工具
    • AI工具集
    • 工具清单
    • JSON在线格式化
    • JSON在线比较
    • SQL在线格式化
  • 打赏
  • 关于
路很长,又很短
  1. 首页
  2. 架构方案
  3. 正文
                           

【笔记】视频笔记:微服务架构P4 设计模式:每服务数据库、API 网关和事件驱动架构

2025-05-13 24点热度 0人点赞 0条评论

视频

微服务架构 Part 4:每服务数据库、API 网关和事件驱动架构

深入探讨了微服务架构中三种最常用的设计模式:每服务数据库、API 网关和事件驱动架构。每服务数据库模式通过为每个微服务提供独立的数据库来实现服务间的松散耦合,从而提升独立性、可扩展性和数据封装。API 网关充当客户端请求的单一入口点,简化了客户端代码,并处理认证和日志等横切关注点。最后,事件驱动架构通过异步通信实现服务间的解耦,使系统更加灵活、可扩展和容错。

视频笔记:微服务架构 P4 设计模式

微服务架构设计模式

微服务架构中最常用的三种设计模式。

  1. 数据库每服务模式 (Database per Service Pattern)

    • 目标: 实现微服务之间的松耦合。
    • 核心理念: 每个服务拥有自己的专用数据库。
    • 好处/关键方面:
      • 数据隔离: 减少服务间的依赖。
      • 技术灵活性: 服务可以使用适合特定需求的数据库技术 (例如:MongoDB, DynamoDB, Azure Cosmos DB, Google Cloud Data Store)。
      • 独立扩展: 数据库可根据需求独立扩展。
      • 简化开发: 开发人员专注于单个服务及其数据模型。
      • 增强扩展性和灵活性。
      • 独立优化服务的数据层。
    • 挑战:
      • 数据重复: 可能导致一致性问题。
      • 复杂的跨服务查询: 需要额外模式(如 API 组合)。
      • 事务管理困难: 丢失传统关系型数据库的固有数据完整性,跨服务数据一致性难以保证。
      • 运维复杂性增加: 管理多个数据库比管理单个共享数据库更具挑战。
    • 常见错误:
      • 过度使用: 不必要地应用于小型服务或紧密耦合的领域。
      • 忽略数据迁移: 从单体数据库拆分时未规划数据迁移。
      • 忽略最终一致性: 系统设计未考虑处理服务间的最终一致性。
    • 应用前提: 对业务流程和数据有深入理解。需要启动数据治理计划。
    • 应用示例: 电子商务平台。产品服务拥有产品和类别表,库存服务拥有库存和位置表,购物车服务拥有购物车和购物车项目表,订单追踪服务拥有订单、订单项目和订单状态表。数据访问仅通过每个服务的 API 进行,保持强封装。
  2. API 网关模式 (API Gateway Pattern)

    • 目标: 作为客户端请求的单一入口点。
    • 主要目的:
      • 简化客户端代码,提供统一接口。
      • 处理跨领域关注点(如身份验证、日志记录、速率限制)。
      • 聚合多个微服务的响应。
      • 提供协议转换和 API 版本控制。
    • 工作原理/功能: 充当反向代理,拦截所有客户端传入的 API 调用。将请求路由到相应的微服务,聚合响应并返回给客户端。可执行其他功能,如身份验证/授权、请求/响应转换、缓存、监控/分析、速率限制/节流。
    • 挑战:
      • 性能瓶颈: 设计不当可能成为单点故障和性能瓶颈。
      • 过度复杂: 添加过多业务逻辑使其难以维护和扩展。
      • 缺乏版本控制: 导致客户端的破坏性变更。
      • 监控不足: 难以故障排除。
      • 安全配置错误: 导致安全漏洞。
      • 紧耦合: 对底层微服务了解过多,导致紧耦合。
    • 应用示例: 客户端通过 API 网关与微服务交互。网关处理身份验证、密钥管理、HTTP 和协议转换。
    • 实现选项: AWS API Gateway, Azure API Management, Google Cloud Endpoints, Apigee Edge。
  3. 事件驱动架构模式 (Event Driven Architecture Pattern - EDA)

    • 目标: 实现松耦合、可扩展、响应迅速的系统,能够实时响应变化。
    • 目的: 通过组件之间通过事件异步通信来提高系统灵活性、可扩展性和容错性。
    • 核心理念: 基于事件的生成、检测、消费和响应。
      • 事件: 代表系统中重要的状态变化或发生的事情。
      • 事件生产者: 生成事件。
      • 事件通道/消息代理: 传输事件。
      • 事件消费者: 订阅并响应相关事件。
    • 好处: 解耦系统,组件间无需直接了解,促进模块化和系统演进。
    • 挑战:
      • 管理和版本化事件模式变得复杂。
      • 依赖最终一致性,在需要立即一致性的场景中难以处理。
      • 确保事件的正确顺序,尤其在分布式系统中非常困难。
      • 过度使用事件: 不必要的增加复杂性,不应仅将事件作为集成方式。
    • 常见错误:
      • 未在组织内建立标准事件格式,导致集成困难。
      • 忽略持久化重要事件,导致关键数据丢失和系统不一致。
      • 未实现适当的错误处理。
      • 未考虑在分布式系统中调试问题的能力(缺乏事件追踪)。
    • 应用示例: 电子商务平台。最终用户通过购物车下单 -> 购物车服务向消息代理发送通知请求获取商品信息 -> 订阅该消息的产品服务响应请求 -> 发布商品信息消息供购物车消费 -> 购物车确认数量后创建订单。
    • 实现选项: AWS (Amazon EventBridge, Amazon Simple Notification Service/Simple Queue Service), Google Cloud (Cloud Pub/Sub, Cloud Functions), Azure (Azure Event Grid, Azure Service Bus, Azure Functions)。

更多文章:

  1. 你需要知道的后端软件工程师技术栈思维导图
  2. 你所说的“事件驱动”是什么? What do you mean by “Event-Driven”?
  3. 视频笔记:Google发布Agent2Agent协议
  4. 生产环境JVM崩溃问题排查解决
  5. 殷浩详解DDD 第四讲:领域层设计规范
  6. FSM-COLA无状态状态机
  7. 4.架构风格 vs. 架构模式 vs. 设计模式(译)
  8. 视频笔记:什么是微服务,为什么是微服务?
  9. 《2023 年度 AI 大事记》
  10. 解决事件驱动架构中的数据一致性难题
标签: 笔记 架构 设计模式 微服务 视频 微服务架构
最后更新:2025-05-13

秋天0261

关注Java领域,后端开发、Netty、Zookeeper、Kafka、ES、分布式、微服务、架构等。分享技术干货,架构设计,实战经验等。

打赏 点赞
< 上一篇
广告
文章目录
  • 视频
最新 热点 推荐
最新 热点 推荐
视频笔记:微服务架构P4 设计模式:每服务数据库、API 网关和事件驱动架构 干货 | 论Elasticsearch数据建模的重要性 马蜂窝消息总线——面向业务的消息服务设计 基于 MySQL Binlog 实现可配置的异构数据同步 视频笔记:Google发布Agent2Agent协议 视频笔记:什么是微服务,为什么是微服务? 视频笔记:什么是AI 智能体? 视频笔记:什么是Flink?
Elasticsearch 使用误区之六——富文本内容写入前不清洗基于 MySQL Binlog 实现可配置的异构数据同步马蜂窝消息总线——面向业务的消息服务设计视频笔记:微服务架构P4 设计模式:每服务数据库、API 网关和事件驱动架构干货 | 论Elasticsearch数据建模的重要性你可以不用RxJava,但必须得领悟它的思想!如何秒级实现接口间“幂等”补偿:一款轻量级仿幂等数据校正处理辅助工具视频笔记:什么是Flink?
笔记 | Java对象探秘 Arthas实战-线上热更新代码只需3步 Kafka为什么要去掉ZooKeeper?一文了解Kafka 中 ZooKeeper 的演变过程 Eureka源码剖析之七:架构&面试题【总结】 笔记 | JVM内存区域结构:一计两栈一堆一区 Eureka源码剖析之六:自我保护机制 面试题:系统出现高CPU的原因是什么 仅使用set属性值就把数据库数据给改了

CRUD (1) Event Sourcing (1) graphql (1) id (1) NoSQL (1) quarkus (1) rest (1) RocketMQ (2) Spring Boot (1) zk (1) zookeeper (1) 上下文 (1) 事务消息 (1) 二级缓存 (1) 值对象 (1) 关系数据库 (1) 分布式缓存 (1) 原子性 (1) 唯一ID (1) 商品 (1) 多对多 (1) 子域 (1) 字符集 (1) 客户端心跳 (1) 幂等 (2) 干货 (1) 并发 (1) 应用场景 (1) 应用架构图 (1) 康威定律 (2) 异步复制 (1) 微服务架构 (3) 总体方案 (1) 技术方案 (2) 技术架构 (2) 技术架构图 (1) 技能 (1) 持续集成 (1) 支撑域 (1) 故障恢复 (1) 数据架构图 (1) 方案选型 (1) 日记 (1) 服务发现 (1) 服务治理 (1) 服务注册 (2) 机房 (1) 核心域 (1) 泄漏 (1) 洋葱架构 (1) 消息队列 (5) 源码剖析 (1) 灰度发布 (1) 熔断 (1) 生态 (1) 画图工具 (1) 研发团队 (1) 线程 (2) 组织架构 (1) 缓存架构 (1) 编码 (1) 视频 (19) 读写分离 (1) 贵州 (1) 软件设计 (1) 迁移 (1) 通用域 (1) 集群化 (1) 雪花算法 (1) 顺序消息 (1)

推荐链接🔗
  • AI工具集
  • 工具箱🛠️

COPYRIGHT © 2014-2025 verysu.com . ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

粤ICP备15033072号-2

x