返回介绍

3.2 云原生设计模式 1 (适用于 SAAS)

发布于 2024-09-25 23:59:29 字数 9192 浏览 0 评论 0 收藏 0

表格 云原生设计模式~来自于 windows Azure (共 37 个,在 2015 年版 24 个上新增 13 个)

模式摘要
【N】 代表创建代表客户服务或应用程序发送网络请求的帮助程序服务。
【N】 防损层在现代应用程序与旧系统之间实施外观或适配器层。
【N】 异步请求-答复在后端处理需要是异步处理但前端仍需要明确响应的情况下,将后端处理与前端主机分离。
【N】 用于前端的后端创建单独的后端服务,供特定的前端应用程序或接口使用。
【N】 隔层将应用程序的元素隔离到池中,这样,如果一个元素发生失败,其他元素可继续工作。
缓存端将数据按需从数据存储加载到缓存中
协调让每项服务都参与决定业务运营的处理时间和处理方式,而不是依赖于一个中心型业务流程协调程序。
断路器连接到远程服务或资源时处理故障,此类故障所需修复时间不定。
【N】 声明检查将大型消息拆分成声明检查和有效负载,以免消息总线过载。
补偿事务撤销一系列会共同定义最终一致操作的工作。
竞争性使用者使多个并发使用者能够处理同一消息通道上收到的消息。
计算资源合并将多个任务或操作合并到单个计算单元
CQRS使用独立接口将读取数据的操作与更新数据的操作分离。
事件溯源使用只追加存储来记录描述域中数据采取的操作的完整系列事件。
外部配置存储将配置信息从应用程序部署包移出,移到一个集中的位置。
联合标识将身份验证委托给外部标识提供者。
【N】 守护程序通过使用专用的主机实例保护应用程序和服务,该实例用于充当客户端和应用程序或服务之间的中转站、验证和整理请求,并在它们之间传递请求和数据。
【N】 网关聚合使用网关可将多个单独请求聚合成一个请求。
【N】 网关卸载将共享或专用服务功能卸载到网关代理。
【N】 网关路由使用单个终结点将请求路由到多个服务。
运行状况终结点监视在应用程序中实施可让外部工具通过公开终结点定期访问的功能检查。
索引表基于数据存储中经常由查询引用的字段创建索引。
领导选拔通过选拔一个实例作为领导来负责管理其他实例,协调分布式应用程序中协作性任务实例集合所执行的操作。
具体化视图当未针对所需的查询操作完美设置数据的格式时,在一个或多个数据存储中基于数据生成预填充的视图。
管道和筛选器将一个执行复杂处理的任务分解为一系列可重复使用的单个元素。
优先级队列为发送到服务的请求确定优先级,以便高优先级请求能够得到比低优先级请求更快速地接收和处理。
发布方/订阅方使应用程序能够以异步方式向多个感兴趣的使用者公布事件,而无需将发送方与接收方耦合。
基于队列的负载调控使用队列在任务与所调用的服务之间充当缓冲,从而缓解间歇性负载过大现象。
重试当应用程序尝试连接到服务或网络资源时,使应用程序能够通过以透明方式重试先前失败的操作来处理预期的临时故障。
计划程序代理监督程序跨一组分布式服务和其他远程资源协调一组操作。
分片将数据存储划分为一组水平分区或分片。
【N】 Sidecar将应用程序的组件部署到单独的进程或容器中,以提供隔离和封装。
静态内容托管将静态内容部署到基于云的存储服务,再由后者将它们直接传送给客户端。
【N】 Strangler通过将特定的功能片断逐渐取代为新的应用程序和服务,逐步迁移旧系统。
限制控制应用程序实例、单个租户或整个服务对资源的消耗。
附属密钥使用令牌或密钥,向客户端授予对特定资源或服务的受限直接访问权限。

备注:【N】表示?

表格 3 云原生设计模式~来自于 windows Azure (24 个,2014)

模式名描述背景和问题解决方案应用场景
缓存驻留根据需要从数据存储器加载数据。 此模式可以用来改进性能,用于维护缓存和后台数据库的数据一致性。 
断路器当连接远程服务或资源时,可能导致不定时间恢复系统的错误。 用于改进系统的稳定性和弹性。 
补偿事务如果一个或多个操作失败,就会取消执行的一系列工作。如何处理已经无法挽回的失败步骤遵从最终一致性模型。通常用于实现复杂的业务过程和工作流。针对发生 异常必须撤销的操作。
竞争消费者允许多个并发消费者在相同的消息通道上处理接收的消息   
计算资源合并    
命令和职责分离通过隔离接口来分离更新和读操作。传统 CRUD 方法更麻烦,权限管理不安全  
事件溯源构造领域对象的模式。使用只能追加的存储库来记录领域里数据库的完整操作序列。传统 CRUD 方法只保存当前状态使用一系列事件去处理对数据的操作。避免冲突;审计
外部配置存储把配置信息从应用部署包移动到一个中心位置。(应用配置中心)   
联合身份    
门卫    
健康终结点监控在应用中实现功能检查。SLA 协议要求定期检测服务是否正确执行通过向终结点发送请求来实现健康监控。检查可用性
索引表 云应用 RDS 不提供二级索引 经常使用非主键来查询数据。
领导选举选取一个实例作为领导者承担管理其它实例的责任,并通过这种方式协调一系列协作任务实例的运行。任务实例是平等的。选举机制:分布式任务需要协调并且没有天然的领导者。
物化视图 存储数据和读取数据者分离提前生成一个适合结果集格式的物化视图。 
管道和过滤器可将一个处理复杂问题的任务分解为一系列可重用的离散元素。任务顺序可能变化,期望代码重用将每个管理处理分解成一组离散组件(或过滤器),每个离散组件执行单个任务 
优先级队列可为请求确定优先级,使得高优先级请求能够比优先处理。 支持消息优先级的队列 
基于队列的负载均衡  队列 
重试连接服务或网络资源时,如果发生预期的瞬时故障,可以通过重试操作来处理故障。服务可能因临时故障超时。 适用于暂时故障
运行时配置重新配置时无需重新部署或启动的应用程序,有且于保持系统可用性。日志组织或特定功能开关依赖于应用程序托管环境中可用功能。 
调度器代理监控协调在分布式服务和其它远程资源上的行为。 定义三个角色:调度器、代理和管理者。进程位于分布式环境。
分片存储和访问海量数据时,改进伸缩性。数据存储限制将数据划分为水平分区或分片。分片策略包括 ID、范围、哈希等 
静态内容托管将静态文件部署到一个基于云计算的存储服务,可以直接向用户传输这些文件的模式。需要下载静态页面。云计算托管存储比计算实例便宜。分开部署。 
限流控制资源消费的模式。自动回收计算资源。给应用程序设置软阀值,达到范围就开始限流。保证 SLA;阻止某租户垄断资源;应对暴流。
令牌秘钥用令牌或者秘钥限制客户端对于特定资源或服务的访问。数据存储库无法进行客户端验证和授权控制访问。限制对数据存储库的公开连接访问,提供给客户端一个可以验证的令牌或者秘钥。 

备注:1. 模式组合:

  • 重试+断路器:重试模式适用用于处理瞬时故障,如果故障预计更持久,则要使用断路器模式。二者结合使用,以提供全面处理故障的方法。
  • 外部配置存储+运行时重配:外部配置通知更新,应用程序能监测到配置变化。
  1. 依赖于消息队列:管道过滤器、优先队列、竞争消费者、基于队列的负载均衡

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文