AWS 上的应用架构模式
在 AWS 上部署应用
Dunieski Otano
Amazon Web Services Solutions Architect
认识您的讲师
为何选择合适的架构
架构是
权衡
的组合,不是唯一正确答案
三个问题决定每次取舍:
组件有多
紧耦合
?
状态
存在哪里?
通信是
同步还是异步
?
按
工作负载
选模式,而非追潮流
周五晚间的级联故障
缓慢的支付 API 会卡住整个结账流程
所有服务都同步等待它
解决之道在于架构,而非更快的 API
架构选择为何影响部署
所选模式决定应用如何
扩展与失效
紧耦合设计在高负载下会崩
合适的模式让部署可预测
同样代码,线上表现却可大相径庭
核心架构模式
单体
:一个可部署单元,上手简单
微服务
:独立服务,分别部署
事件驱动
:组件响应事件而非直接调用
扇出
是子模式:一条事件投递给多个消费者
有状态 vs 无状态
无状态
:请求间不保留客户端数据
任意实例可处理任意请求
有状态
:实例记住先前交互
无状态支持
横向扩展
将共享状态放到
DynamoDB
或
ElastiCache
紧耦合 vs 松耦合
紧耦合
:调用方等待被调方响应
一个慢服务拖垮整条链路
松耦合
:服务间加入
Amazon SQS
队列
即便消费者宕机,生产者仍可继续
同步 vs 异步
同步
:调用方阻塞等待结果
当调用方需立刻得到答案时使用
异步
:交付工作后立即返回
适合慢速、突发或非紧急任务
第三方调用的韧性模式
指数退避重试
:两次尝试间隔递增
断路器
:暂时停止调用故障服务
死信队列
:停放多次失败的消息
组合使用;盲目重试会加剧故障
让我们一起练习吧!
在 AWS 上部署应用
Preparing Video For Download...