当前位置: 首页 > 科技观察

微服务架构的外部API集成模式_0

时间:2023-03-16 20:13:49 科技观察

今天我们来说说API集成。通过前两天的了解,我们了解到微服务是多服务、松耦合的服务集。由于涉及多个服务,调用外部API必不可少。由于客户的多样性,设计应用程序的外部API变得更具挑战性。这些客户通常有不同的数据要求。1.直接通信这种方式,API设计成客户端直接调用服务的方式。由于以下缺点,微服务架构目前很少采用这种方法。客户端必须通过细粒度的服务API发出多个请求来检索他们需要的数据,这不仅效率低下,而且会导致糟糕的用户体验。由于客户端对每个服务及其API的了解导致缺乏封装,因此模式和API更改很困难。客户可能会发现使用该服务的IPC机制既不方便也不实用。我们在开发的时候,不能把向后兼容的维护留给后端服务的开发者。需要开发单独的公共API,而不是将服务直接暴露给第三方。这项艰巨的工作是由API网关的架构组件完成的。2、API网关模式在直接访问服务上有很多缺点。APIGateway是一种比较好的服务访问模式。基本上,API网关也是一种充当外部应用程序入口点的服务。该组件负责请求路由、API组合和其他交叉问题,例如身份验证、监控和速率限制。APIGateway类似于OOPS(设计模式)中的门面设计模式。API网关封装了应用程序的内部架构并向其客户端提供API。API网关还负责请求路由、API组合和协议转换。来自外部客户端的API请求通过API网关,API网关将一些请求路由到相应的服务。APIGateway还可以通过调用多个服务并聚合结果来处理其他请求。服务器还可以在客户端友好的协议(例如HTTP和WebSockets)和服务使用的客户端不友好的协议之间进行转换。3.请求路由请求路由是API网关最重要的功能之一。API网关通过将请求路由到适当的服务来实现API操作。当API网关收到请求时,它会查询路由映射以确定将请求路由到哪个服务。例如,路由映射可能会将HTTP方法和路径映射到服务的HTTPURL。诸如NGINX之类的Web服务器提供反向代理作为此功能的一部分。4.API组合API网关通常做的不仅仅是反向代理。他们还可以使用API组合执行API操作。API网关为客户端提供了一个粗粒度的API,使它们能够通过单个请求检索所需的数据。Aggregator/Composite模式有两个子模式。链式模式:基本上,这种类型的复合模式遵循链式结构。在这种模式下,客户端与服务通信,所有服务链接在一起,一个服务的输出成为下一个服务的输入。分叉模式:分叉模式是聚合器和链模式的扩展版本。客户端可以直接与服务通信,在这种设计模式下,一个服务可以同时与多个服务通信。5.协议转换API网关也可以进行协议转换。尽管应用程序服务在内部使用各种协议,包括REST和gRPC,但它可能会向外部客户端公开RESTAPI。一些API操作在需要时在RESTful外部API和基于gRPC的内部API之间转换。国外一些技术网站直接把这个功能称为:ProtocolTranslation,直接翻译就是:protocoltranslation。我直接称之为:按能力协议翻译。6、前端模式的后端API网关,可以提供通用的API。单一API的一个问题是不同的客户通常有不同的需求。这个问题的解决方案是让客户端可以在请求中指定服务器应该返回哪些字段和相关对象的选项,就像GraphQL一样。对于必须服务于第三方应用的公共API,这种方式已经足够了,但并没有为客户提供更多的可选操作。通过API网关为客户端提供个性化的API是一个不错的选择。我也很喜欢这种能力,一定程度上减轻了通讯数据的压力。7.实现横切关注点API网关主要处理API路由和组合,但它们也可能处理横切关注点。横切关注点的示例包括:身份验证:验证发出请求的客户端的身份。授权:验证客户端是否有权执行该特定操作。速率限制:限制每秒来自特定客户端或所有客户端的请求数。缓存:缓存响应以减少对服务的请求数。指标收集:收集API使用指标用于计费分析。请求记录:记录请求。注:横切关注点是指一些特殊的关注点,其行为跨越多个模块,传统的软件开发方式无法实现有效的模块化。比如一个典型案例,日志功能8.API网关架构API网关具有分层的模块化架构。它由两层组成,API层和公共层。一个或多个API模块组成API层。API模块根据客户需求实现API。9.API网关的好处使用API??网关的主要好处是它封装了应用程序的内部结构。API网关为客户端提供特定于客户端的API,通过减少客户端和应用程序之间的往返次数来简化客户端代码。10、API网关的缺点增加了维护成本,同时也是一个可开发、可部署、可管理的高可用组件。API网关有可能成为开发瓶颈,因为开发人员必须不时更新API网关以公开他们的服务API。11.现成的API网关有几种现成的服务和产品实现了API网关功能。AWSAPIGateway:AWSAPIGatewayAPI是一组REST资源,每个资源都支持一个或多个HTTP方法。您可以将API网关配置为将每个请求路由到后端服务。您需要在后端服务中实现API组合,AWSAPIGateway不支持API组合。Kong:Kong基于NGINXHTTP服务器,允许您根据HTTP方法、标头和路径定义灵活的路由规则,以决定使用哪个后端服务。12.开发API网关使用Web框架,您可以构建自己的API网关来代理对其他服务的请求。我们来看看NetflixZuul和SpringCloudGateway。NetflixZuul:Zuul是一个Netflix框架,实现了路由、限速和身份验证等横切功能。Zuul使用了过滤器的概念,过滤器是类似于servlet过滤器的可重用请求拦截器。Zuul通过组装一系列过滤器来处理HTTP请求,这些过滤器在将响应发送到客户端之前转换请求、调用后端服务和转换响应。SpringCloudGateway:SpringCloudGateway是一个基于SpringFramework、SpringBoot和SpringWebflux的API网关框架,一个反应式Web框架。SpringCloudGateway提供了一种简单而全面的方法来完成以下任务:将请求路由到后端服务。实施执行API组合的请求处理程序。处理横切关注点,例如身份验证。