
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
随着互联网的不断发展,越来越多的程序员都开始掌握微服务编程开发的相关技术知识,而今天我们就一起来了解一下,微服务API网关模式设计基础知识分享。
与将模块高度耦合并部署为一个大的应用程序相比,微服务的目标是将应用程序充分分解或者解耦为松散耦合的许多微服务或者模块,这样做对下面几点有很大帮助:
每个微服务可以独立于应用程序中的同级服务进行部署、升级、扩展、维护和重新启动。
通过自治的跨职能团队进行敏捷开发和敏捷部署。
运用技术时具备灵活性和可扩展性
在微服务架构中,我们根据各自的特定需求部署不同的松耦合服务,其中每个服务有其更细粒度的API模型,用以服务于不同的客户端(Web,移动和三方API)。
客户端到微服务的连接
谈谈微服务设计中的API网关模式
在考虑客户端与每个已部署的微服务直接通信的问题时,应考虑以下挑战:
如果微服务向客户端公开了细粒度的API,则客户端应向每个微服务发出请求。在典型的单页中,可能需要进行多次服务器往返,才能满足请求。对于较差的网络条件下运行的设备(例如移动设备),这可能会更糟。
微服务中存在的多种通信协议(例如gRpc、thrift、REST、AMQP等)使客户端很难轻松采用所有这些协议。
必须在每个微服务中实现通用网关功能(例如身份验证、授权、日志记录)。
在不中断客户端连接的情况下,很难在微服务中进行更改。例如,在合并或划分微服务时,可能需要重新编写客户端部分代码。
API网关
为了解决上述挑战,人们引入了一个附加层,该附加层位于客户端和服务器之间,充当从客户端到服务器的反向代理路由请求。与面向对象设计的模式相似,它为封装底层系统架构的API提供了一个单一的入口,称为API网关。
API网关的功能
路由
网关封装了底层系统并与客户端分离,为客户端提供了与微服务系统进行通信的单个入口点。
整合API网关整合了一些边缘的重复功能,无需让每个微服务实现它们。它包括如下功能:
认证和授权
服务发现集成
缓存响应结果
重试策略、熔断器、QoS
限速和节流
负载均衡
log日志、链路追踪、关联
Header、query字符串以及claims转义
IP白名单
IAM
集中式日志管理(服务之间的transactionID、错误日志等)
身份的提供方,验证与授权
后端服务前端模式(BFFBackendforFrontend)
它是API网关模式的一种变体。它提供了基于客户端的多个网关,而不是提供给客户端一个单一的入口点。目的是根据客户端的需求提供量身定制的API,从而消除了为所有客户端制作通用API造成的大量的浪费。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请在707945861群中学习了解。