网站首页 > 博客文章 正文
微服务架构是大型网站的必备技能,也是大厂重点考察的方向,下面我就来详解4类常见的微服务架构设计模式@mikechen
本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集》里面。
代理设计模式
微服务代理设计模式(Proxy Pattern),主要用于在客户端、和微服务之间,增加一个代理层,以处理一些通用的功能。
如下图左侧所示:
代理模式的核心思想:是通过一个代理服务在客户端、和实际服务之间进行中介,这个代理服务可以处理各种横切关注点。
常见的横切点:
- 安全验证、和授权;
- 请求路由、和负载均衡;
- 日志记录、和监控等;
API网关是一个典型的代理模式,作为所有客户端请求的统一入口点,处理:
- 路由:将请求路由到相应的后端服务。
- 认证和授权:验证用户身份和权限。
- 缓存:缓存频繁访问的数据,减少后端服务压力。
- 日志和监控:记录请求日志和监控服务状态。
这里需要注意的是,代理层本身也需要高可用、和高性能的设计,以避免成为系统的瓶颈、和单点故障。
聚合设计模式
聚合器(Aggregator)设计模式:是一种常用模式,用于将来自多个微服务的数据,聚合成一个统一的响应,提供给客户端。
如下图左侧所示:
聚合器模式的核心思想:是使用一个聚合器服务(Aggregator Service),负责接收客户端请求。
并且,调用多个下游微服务获取所需数据,聚合这些数据,并返回给客户端。
客户端只需调用聚合器服务,而无需处理多个微服务的调用、和数据整合逻辑。
聚合器模式,适合需要综合多种数据源的应用场景,但也需要注意潜在的单点故障、和性能瓶颈问题。
异步消息传递设计模式
异步消息允许服务发送消息后立即返回,而不需要等待消息被处理完毕,这种异步方式可以大大提高系统的处理速度、和吞吐量。
如下图所示:
微服务架构,通常涉及多个服务之间的相互调用,如果通信只是在少数几个微服务之间进行,那么同步通信就很好。
在某些情况下,用户不需要立即得到服务的响应,而是可以在后台异步处理。
例如:当用户提交一个表单时,不需要立即等待数据的处理结果,可以在后台处理并通过消息通知用户结果,从而提高用户体验。
这意味着:发送方可以继续处理其他请求,而不会被阻塞等待响应。
而且,服务之间的通信变得更加松散,也不再需要强依赖于对方。
数据共享设计模式
我们都是知道:每个微服务拥有自己的数据库,可以独立地进行数据库架构设计、部署和维护。
这种是属于常规的方式,不受其他微服务的影响,具有高度的自治性。
但是,在将单体应用拆分成微服务时,
然而,在将单体应用拆分成微服务时,可能会遇到反规范化(denormalization)的挑战,会出现部分微服务可能会共享数据库存储。
如下图所示:
对于基于微服务的应用程序而言,这是一种反模式,可以作为过渡阶段来使用,最后,再一步步:转到每个服务一套数据库的模式。
本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集》里面。
猜你喜欢
- 2024-10-22 微服务架构-从概念模型到知识体系化
- 2024-10-22 深度解析微服务架构:优缺点、挑战及应对策略
- 2024-10-22 微服务架构一文详解,微服务其实真的不难
- 2024-10-22 一张图秒懂微服务网络架构(一文详解微服务架构)
- 2024-10-22 【云端秘籍】微服务架构:让应用更灵活、更高效!
- 2024-10-22 一文了解微服务架构(微服务架构介绍)
- 2024-10-22 微服务架构(前端微服务架构)
- 2024-10-22 深入解析微服务架构:原理、实现及挑战
- 2024-10-22 一张图看懂微服务架构路线(微服务架构深度解析 原理、实践与进阶)
- 2024-10-22 《微服务架构设计模式》读书笔记——服务的拆分策略
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)