用户名
Email
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
应用中心
帖子
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
账号登录
立即注册
找回密码
用户名
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
qidao123.com技术社区-IT企服评测·应用市场
»
论坛
›
物联网
›
物联网
›
微服务与事件驱动架构(EDA)
微服务与事件驱动架构(EDA)
河曲智叟
论坛元老
|
2025-4-24 01:47:34
|
显示全部楼层
|
阅读模式
楼主
主题
1900
|
帖子
1900
|
积分
5700
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
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 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
河曲智叟
论坛元老
这个人很懒什么都没写!
楼主热帖
黑客常见攻击流程
为什么你的局域网需要https加密?怎么 ...
为什么一定要从DevOps走向BizDevOps? ...
Flutter项目打包生成APK
WebGL 及其在 WebRTC 中的应用
大数据 - ClickHouse
在K8S中,DaemonSet类型资源特性? ...
Hive sql 经典题目和 复杂hsq
【计算机网络】基础知识点
MySQL中WHERE后跟着N多个OR条件会怎样. ...
标签云
国产数据库
集成商
AI
运维
CIO
存储
服务器
快速回复
返回顶部
返回列表