微服务与事件驱动架构(EDA)

打印 上一主题 下一主题

主题 1821|帖子 1821|积分 5463

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
微服务架构

微服务架构核心特性



  • 服务自治:每个服务拥有独立的代码库、数据库和运维流程。
  • 轻量级通讯:服务间通过API(REST/gRPC)或消息队列(如Kafka)交互。
  • 去中心化治理:允许技术栈多样化(如差别服务使用Java、Go、Python)。
  • 故障隔离:单个服务故障不影响全局系统可用性。
微服务的核心设计原则



  • 领域驱动设计

    • 限界上下文(Bounded Context) :根据业务领域划分服务边界(如“订单上下文”与“支付上下文”),克制模子稠浊。
    • 上下文映射(Context Mapping)
                 防腐层(Anti-Corruption Layer) :隔离外部服务的模子变动(如适配第三方支付接口)。
            发布语言(Published Language) :通过共享事件格式(如Avro Schema)实现跨服务通讯。

  • 服务拆分计谋

    • 基于业务本领拆分:按业务功能划分服务(如用户服务、物流服务)。
    • 基于数据边界拆分:确保每个服务拥有独立数据库(如订单服务用MySQL,商品服务用MongoDB)。
    • 基于变动频率拆分:高频变动模块独立为服务(如促销运动服务),克制频繁全系统发布。

  • 服务通讯机制

    • 同步通讯
                 RESTful API:简单易用,适合外部系统集成(如移动端调用)。
            gRPC:基于HTTP/2的高性能RPC框架,适合内部服务间通讯。
    • 异步通讯
                 消息队列(如Kafka/RabbitMQ) :解耦服务,实现最终划一性(如订单创建后发送事件通知库存服务)。
            事件溯源(Event Sourcing) :通过事件日志重修状态(如用户积分变动汗青)。

微服务的技术支撑体系



  • 服务治理

    • 服务发现
                 客户端发现:服务消费者通过注册中心(如Eureka、Consul)获取服务实例列表。
            服务端发现:通过负载均衡器(如Nginx、K8s Service)路由哀求。
    • 熔断与降级
                 熔断器(Circuit Breaker) :当服务失败率超过阈值时,快速失败(如Hystrix、Sentinel)。
            降级计谋:返回缓存数据或默认值,保障核心流程可用(如商品详情页降级表现静态信息)。
    • 配置中心:动态管理服务配置(如Apollo、Nacos),支持灰度发布和实时生效。

  • 数据划一性管理

    • 分布式事务寻衅:(CAP定理约束)在划一性(C)与可用性(A)之间权衡,跨服务调用大概因网络中断导致数据差别等。
    • Saga模式:将事务拆分为多个当地事务,通过补偿操作回滚(如“订单创建”成功后若“库存扣减”失败,则触发“订单取消”补偿)。
    • TCC:业务层实现两阶段提交(电商支付场景:预扣款(Try)→ 确认(Confirm)→ 取消(Cancel))。
    • 事件驱动最终划一性:通过消息队列包管事件可靠传递(如订单服务发布“订单已支付”事件,库存服务消费后扣减库存)。

  • 可观测性

    • 日志聚合:使用ELK(Elasticsearch + Logstash + Kibana)或Loki集中管理日志,支持分布式追踪(Trace ID)。
    • 指标监控:Prometheus收罗服务指标(如QPS、延迟),Grafana可视化展示。
    • 链路追踪:Jaeger或SkyWalking追踪跨服务调用链,定位性能瓶颈(如查询超时的根因是数据库慢查询)。

  • API网关

    • 路由转发:将外部哀求分发到内部服务(如/api/orders路由到订单服务)。
    • 鉴权与限流:验证JWT令牌,限定每秒哀求数(如防止爬虫滥用)。
    • 协议转换:将HTTP哀求转换为gRPC或GraphQL协议。
    • 代表实现:Kong、Spring Cloud Gateway、Envoy。

  • 服务网格(Service Mesh)

    • 架构模式:通过Sidecar代理(如Envoy)接受服务间通讯,实现非侵入式治理。
    • 流量管理:金丝雀发布、A/B测试。
    • 安全通讯:mTLS加密、服务身份认证。
    • 可观测性:主动天生指标和追踪数据。
    • 代表框架:Istio、Linkerd。

事件驱动架构(EDA)

事件驱动架构核心理念



  • 异步通讯:事件生产者无需等待消费者处理结果。
  • 事件长期化:事件通常被长期化存储,支持重放和审计。
  • 最终划一性:通过事件传播实现数据划一性,而非强划一性。
  • 动态响应:系统可灵活响应未知或将来新增的消费者。
事件驱动架构的核心组件



  • 事件(Event) :系统中发生的状态变革或业务动作的描述(如“订单已创建”“库存已扣减”)。
  • 事件生产者(Event Producer) :检测状态变革并发布事件(如订单服务在订单创建后发布OrderCreated事件)。

    • 数据库变动捕获(CDC) :如Debezium监听MySQL binlog。
    • 业务逻辑显式触发:代码中主动调用事件发布接口。

  • 事件消费者(Event Consumer) :订阅并处理事件,实行后续业务逻辑(如库存服务消费OrderCreated事件扣减库存)。

    • 即时处理:实时响应(如发送短信通知)。
    • 批处理:定时批量处理(如天生每日报表)。

  • 事件通道(Event Channel) :传输和存储事件的前言,解耦生产者与消费者。

    • 消息队列:Kafka、RabbitMQ(支持点对点、发布/订阅)。
    • 事件总线:Apache Pulsar、AWS EventBridge(支持复杂路由规则)。

事件驱动架构的通讯模式



  • 发布/订阅(Pub-Sub) :生产者将事件发布到特定主题(Topic),全部订阅该主题的消费者都会接收事件。
  • 事件流(Event Streaming) :事件以有序、不可变日志情势长期化,支持重放和汗青追溯。

    • Kafka:通太过区(Partition)包管事件次序,消费者按偏移量(Offset)读取。
    • 事件溯源(Event Sourcing) :用事件日志作为系统状态的唯一来源(如银行账户通过生意业务事件重修余额)。

分层架构与CQRS模式

分层架构(Layered Architecture)



  • 表现层(Presentation Layer) :处理用户交互,如HTTP哀求、页面渲染(Spring MVC、React/Vue前端框架)。
  • 业务逻辑层(Business Logic Layer) :封装业务规则与流程(如订单创建、库存扣减),克制将业务逻辑泄漏到表现层或数据层。
  • 数据访问层(Data Access Layer) :提供数据长期化接口,如操作数据库、缓存(JPA、MyBatis、Redis客户端)。
  • 基础设施层(Infrastructure Layer) :提供通用技术本领(如日志、消息队列、文件存储)。
CQRS模式(Command Query Responsibility Segregation)



  • 命令端(Write Model)

    • 流程:接收命令(如CreateOrderCommand)→ 实行业务逻辑 → 天生事件(如OrderCreatedEvent)。
    • 领域驱动设计(DDD) :聚合根(Aggregate Root)封装业务规则。
    • 事件溯源(Event Sourcing) :通过事件日志重修状态(可选)。

  • 查询端(Read Model)

    • 流程:订阅事件 → 更新读模子(如天生订单列表视图)。
    • 物化视图(Materialized View) :定期同步写库数据到读库。
    • 实时同步:通过CDC(如Debezium)捕获数据库变动。

分层架构与CQRS的结合(DDD架构)



  • 表现层:接收HTTP哀求,区分命令(POST/PUT)与查询(GET)。
  • 应用层

    • 命令处理器:调用领域模子实行业务逻辑,发布事件。
    • 查询处理器:从读模子获取数据,组装DTO。

  • 领域层:定义聚合根、实体、值对象,封装核心业务规则。
  • 基础设施层

    • 写存储:MySQL处理事务性操作。
    • 读存储:Redis缓存热门数据,Elasticsearch支持复杂查询。
    • 事件总线:Kafka传递领域事件,触发读模子更新。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

河曲智叟

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表