当前位置:首页 > 科技  > 软件

八个开发者不可不知的微服务设计模式

来源: 责编: 时间:2023-12-14 16:38:51 394观看
导读与面向对象设计模式一样,微服务模式也是一种经过验证的解决方案,用于解决开发、部署和扩展微服务时遇到的常见问题。举例来说,SAGA模式解决了分布式事务失败的问题,而API网关则简化了客户端代码,并充当许多微服务的前端控

与面向对象设计模式一样,微服务模式也是一种经过验证的解决方案,用于解决开发、部署和扩展微服务时遇到的常见问题。ba128资讯网——每日最新资讯28at.com

举例来说,SAGA模式解决了分布式事务失败的问题,而API网关则简化了客户端代码,并充当许多微服务的前端控制器和负载均衡器,提高了微服务的可维护性。ba128资讯网——每日最新资讯28at.com

本文介绍一些常见的微服务设计模式,每个从事微服务开发或将单体应用程序拆分为微服务以分离代码、数据和接口的开发人员都应该了解和学习。ba128资讯网——每日最新资讯28at.com

1 服务注册模式

服务注册模式提供了一个中央存储库,用于按名称发现微服务。它是一种微服务架构模式,使服务能够发现其他微服务并相互通信。ba128资讯网——每日最新资讯28at.com

在这种模式中,使用一个中央服务注册表或目录来记录可用服务及其位置。微服务可以向注册表注册自己,其他微服务可以查找注册表以找到所需服务的位置。ba128资讯网——每日最新资讯28at.com

举个例子,假设有一个大型电子商务网站,包含许多微服务,如订单服务、支付服务、物流服务和客户服务。每个服务都有自己的REST API,其他服务可以使用它来进行通信。ba128资讯网——每日最新资讯28at.com

为了让这些服务更容易相互发现,可以使用服务注册模式。我们可以设置一个服务注册表,例如Consul或Eureka(Spring Cloud提供此功能),它维护着所有可用服务及其终点的列表。ba128资讯网——每日最新资讯28at.com

当一个服务启动时,它可以通过提供自己的名称和终点来向注册表注册自己。ba128资讯网——每日最新资讯28at.com

例如,订单服务可以将自己注册为“order-service”,终点为“http://order-service:8080”。其他需要与订单服务通信的服务可以通过在注册表中查找其名称来获取其终点。ba128资讯网——每日最新资讯28at.com

例如,支付服务可以在注册表中查找“order-service”的终点,以向订单服务发送支付信息。同样,物流服务可以在注册表中查找“order-service”的终点,以获取订单的物流信息。ba128资讯网——每日最新资讯28at.com

这样,每个服务可以独立开发和部署,而不需要在其代码中硬编码其他服务的终点。服务注册模式使得服务能够动态地相互定位,使系统更具灵活性和适应变化的能力。ba128资讯网——每日最新资讯28at.com

图片图片ba128资讯网——每日最新资讯28at.com

2 断路器模式

顾名思义,断路器模式通过断开电路来防止级联故障,并使应用程序在一个或多个服务失败时继续运行。用于处理微服务架构中可能发生的故障。ba128资讯网——每日最新资讯28at.com

在这种模式中,断路器充当客户端和服务之间的安全网,保护客户端免受服务故障的影响。断路器监视服务的状态,如果检测到服务失败,它可以打开断路器,并阻止进一步的请求发送到服务,直到服务恢复正常。ba128资讯网——每日最新资讯28at.com

举个例子,假设一个微服务应用程序正在使用一个不可靠的外部服务,而且即使外部服务失败,应用程序也需要继续运行。ba128资讯网——每日最新资讯28at.com

在这种情况下,可以使用断路器模式来检测外部服务是否不可用,并切换到备用服务或降级服务,直到外部服务再次可用。ba128资讯网——每日最新资讯28at.com

图片图片ba128资讯网——每日最新资讯28at.com

在微服务架构中,可以使用Netflix的Hystrix或Spring Cloud Circuit Breaker等工具来实现断路器模式,这些工具提供了一种管理断路器行为的方式,允许应用程序以可控的方式对服务故障做出反应。ba128资讯网——每日最新资讯28at.com

3 API网关模式

API网关模式是微服务架构中常用的设计模式之一,涉及到一个API网关,它充当所有传入API请求的入口点。它为所有微服务提供了一个统一的入口点,并充当客户端和微服务之间的代理,将请求路由到适当的服务。ba128资讯网——每日最新资讯28at.com

API网关的主要目的是解耦客户端和微服务,将系统的复杂性抽象到一个简化和一致的API后面。这也意味着您不需要查找和记住100多个微服务REST API的地址。ba128资讯网——每日最新资讯28at.com

它还提供了额外的安全性和治理层,允许组织控制和管理对其服务的访问,监控系统的性能,并在所有服务中强制执行策略。ba128资讯网——每日最新资讯28at.com

以下是一个简单电子商务系统中API网关模式的工作示例:ba128资讯网——每日最新资讯28at.com

假设一个电子商务系统有多个微服务来处理不同的功能,如订单管理、产品目录和用户身份验证。每个微服务都有自己的处理请求的API终点。然而,客户端(可以是Web或移动应用程序)需要通过一个入口点访问所有这些微服务。ba128资讯网——每日最新资讯28at.com

这就是API网关发挥作用的地方。API网关充当反向代理,接收来自客户端的所有传入请求。然后,它根据请求的终点将每个请求路由到适当的微服务。ba128资讯网——每日最新资讯28at.com

例如,API网关可能会将请求路由到/orders终点的订单管理微服务,将请求路由到/products终点的产品目录微服务。ba128资讯网——每日最新资讯28at.com

图片图片ba128资讯网——每日最新资讯28at.com

API网关还可以执行其他功能,如请求和响应转换、速率限制、身份验证和授权以及缓存。ba128资讯网——每日最新资讯28at.com

它还可以提供统一的API,隐藏微服务的内部细节,并向客户端呈现更简单和一致的接口。ba128资讯网——每日最新资讯28at.com

总的来说,API网关模式提供了一种在复杂系统中管理微服务的可扩展、灵活和安全的方式,使得开发、部署和维护基于微服务的应用程序更加容易。ba128资讯网——每日最新资讯28at.com

图片图片ba128资讯网——每日最新资讯28at.com

4 Saga模式

Saga模式提供了一种管理涉及多个微服务的事务的方式。它用于确保跨多个服务的一系列事务成功完成,如果失败,则回滚或撤销到目前为止所做的所有更改。ba128资讯网——每日最新资讯28at.com

Saga模式由一系列本地事务组成,每个事务更新单个服务的状态,以及一组相应的补偿事务,用于在发生故障时撤销原始事务的影响。ba128资讯网——每日最新资讯28at.com

以下是在基于微服务的电子商务应用程序中使用Saga模式的示例:ba128资讯网——每日最新资讯28at.com

假设您有两个微服务,一个负责处理订单,另一个负责发货。ba128资讯网——每日最新资讯28at.com

当下订单时,订单处理服务负责验证订单并确保货物有库存,而发货服务负责将订单打包并发送给客户。ba128资讯网——每日最新资讯28at.com

如果订单处理服务确定订单有效且所有商品有库存,它会向发货服务发送消息以启动发货流程。此时,Saga模式就会发挥作用。ba128资讯网——每日最新资讯28at.com

发货服务将创建一个新的事务来打包和发货订单,如果事务成功,它将标记订单为已发货。ba128资讯网——每日最新资讯28at.com

另一方面,如果事务失败(例如与发货提供商的问题),发货服务将启动一个补偿事务来撤销原始事务的影响,例如取消发货并重新补充库存。ba128资讯网——每日最新资讯28at.com

图片图片ba128资讯网——每日最新资讯28at.com

同时,订单处理服务也使用Saga模式来管理自己的事务。如果发货服务报告订单已成功发货,订单处理服务将标记订单为已完成。ba128资讯网——每日最新资讯28at.com

如果发货服务报告失败,订单处理服务将启动一个补偿事务来取消订单并退还支付的款项。ba128资讯网——每日最新资讯28at.com

总体而言,Saga模式提供了一种管理跨多个微服务的复杂事务的方式,以确保一致性和可靠性。如果您只想学习一种模式,最好学习Saga模式,因为它在微服务应用程序中非常有帮助。ba128资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-45508-0.html八个开发者不可不知的微服务设计模式

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: Flutter 全埋点的实现

下一篇: 华为首款开放式耳机迪拜全球首发,独创“C 形桥”设计领衔时尚生活

标签:
  • 热门焦点
  • K60至尊版狂暴引擎2.0加持:超177万跑分斩获性能第一

    Redmi的后性能时代战略发布会今天下午如期举办,在本次发布会上,Redmi公布了多项关于和联发科的深度合作,以及新机K60 Ultra在软件和硬件方面的特性,例如:“K60 至尊版,双芯旗舰
  • 小米降噪蓝牙耳机Necklace分享:听一首歌 读懂一个故事

    在今天下午的小米Civi 2新品发布会上,小米还带来了一款新的降噪蓝牙耳机Necklace,我们也在发布结束的第一时间给大家带来这款耳机的简单分享。现在大家能见到最多的蓝牙耳机
  • Raft算法:保障分布式系统共识的稳健之道

    1. 什么是Raft算法?Raft 是英文”Reliable、Replicated、Redundant、And Fault-Tolerant”(“可靠、可复制、可冗余、可容错”)的首字母缩写。Raft算法是一种用于在分布式系统
  • 企业采用CRM系统的11个好处

    客户关系管理(CRM)软件可以为企业提供很多的好处,从客户保留到提高生产力。  CRM软件用于企业收集客户互动,以改善客户体验和满意度。  CRM软件市场规模如今超过580
  • 量化指标是与非:挽救被量化指标扼杀的技术团队

    作者 | 刘新翠整理 | 徐杰承本文整理自快狗打车技术总监刘新翠在WOT2023大会上的主题分享,更多精彩内容及现场PPT,请关注51CTO技术栈公众号,发消息【WOT2023PPT】即可直接领取
  • 一文掌握 Golang 模糊测试(Fuzz Testing)

    模糊测试(Fuzz Testing)模糊测试(Fuzz Testing)是通过向目标系统提供非预期的输入并监视异常结果来发现软件漏洞的方法。可以用来发现应用程序、操作系统和网络协议等中的漏洞或
  • 一文搞定Java NIO,以及各种奇葩流

    大家好,我是哪吒。很多朋友问我,如何才能学好IO流,对各种流的概念,云里雾里的,不求甚解。用到的时候,现百度,功能虽然实现了,但是为什么用这个?不知道。更别说效率问题了~下次再遇到,
  • 品牌洞察丨服务本地,美团直播成效几何?

    来源:17PR7月11日,美团App首页推荐位出现“美团直播”的固定入口。在直播聚合页面,外卖“神枪手”直播间、美团旅行直播间、美团买菜直播间等均已上线,同时
  • 华为Mate 60保护壳曝光:硕大后置相机模组 凸起程度有惊喜

    这段时间以来,关于华为新旗舰的爆料日渐密集。据此前多方爆料,今年华为将开始恢复一年双旗舰战略,除上半年推出的P60系列外,往年下半年的Mate系列也将
Top