首页 > 其他分享 >技术架构(11)- API网关

技术架构(11)- API网关

时间:2022-12-27 11:38:02浏览次数:43  
标签:11 网关 服务 请求 API 限流 路由

API网关是服务统一的请求入口,对请求进行路由、负载均衡、协议转换、安全防护、限流熔断等,把与业务无关的技术处理部分提炼出来,让服务专注于实现业务逻辑。

协议转换

系统内部服务之间的调用,一般使用统一的协议和数据格式。但是,不同系统之间的调用或者数据传输,就存在协议转换的问题了。

API 网关通过泛化调用的方式实现协议之间的转化,将不同的协议转换成“通用协议”,然后再将通用协议转化成本地系统能够识别的协议。

负载均衡

用户的请求通过网关的负载均衡算法,路由到对应的服务上面。

如果服务采用微服务的架构,也可以和注册中心共同实现动态的负载均衡。当微服务动态挂载(动态扩容)的时候,可以通过服务注册中心获取微服务的注册信息,从而实现负载均衡。

服务路由

网关根据请求的 URL 地址解析,知道需要访问的服务。再通过路由表把请求路由到目标服务上去。

限流控制

限流是 API 网关常用的功能之一。当请求超出服务处理能力,或者服务因为某种原因无法正常使用,都会导致系统性能下降。API 网关作为“看门人”,可以限制流入的请求,让应用服务器免受冲击。

限流实际上就是限制流入请求的数量,其算法不少,有令牌桶算法,漏桶算法,连接数限制等等。

认证授权

访问应用服务器需要一定的权限,如果说每调用一次服务都需要验证一次权限,这个对性能影响很大。

可以把权限认证放到 API 网关来进行。目前比较常见的做法是,用户通过登录服务获取 Token,把它存放到客户端,在每次请求的时候把这个 Token 放入请求头,一起发送给服务器。API 网关要做的事情就是解析这个 Token,知道访问者是谁(认证),他能做什么/访问什么(授权)。

熔断降级

当应用服务出现异常,不能继续提供服务的时候,API 网关需要做出处理,把请求路由到其他服务上或者对服务进行降级处理,比如用兜底的服务数据返回客户端,或者提示服务暂时不可用。同时通过注册中心,监听存在问题的服务,一旦服务恢复,随即恢复路由请求到该服务。

日志记录

通过 API 网关上的过滤器我们可以加入日志服务,记录请求和返回信息。同时可以用管理员界面去监控这些数据,做实时查询、异常告警等功能。

发布测试

在发布版本的时候会采用金丝雀发布和蓝绿发布。API 网关使用路由选择和流量切换来协助上述行为。

标签:11,网关,服务,请求,API,限流,路由
From: https://www.cnblogs.com/burningblade/p/16995824.html

相关文章

  • C++11 新特性之Range-based for loops
    声明:本文少量代码转载自AlexAllain的文章 ​​http://www.cprogramming.com/c++11/c++11-ranged-for-loop.html​​很多语言都有Range-basedforloops这个功能,现在C++......
  • Kubernetes基础(kube-apiserver?kube-controller-manager?kube-scheduler?kubelet?kube-pro
    一、kube-apiserverAPIServer提供了资源对象的唯一操作入口,其它所有组件都必须通过它提供的API来操作资源数据。只有APIServer会与etcd进行通信,其它模块都必须通......
  • C++11:列表初始化
    在C++98/03中,对象初始化方法有很多种,如下代码所示://初始化列表inti_arr[3]={1,2,3};//普通数组structA{intx;structB{inti;......
  • IOS私有API的使用
    首先要使用class-dump和dumpFrameworks.pl工具将ios的framework导出来。以下是工具的​​下载​​地址:class-dump下载地址http://www.codethecode.com/pr......
  • PyTorch的Dataset 和TorchData API的比较
    深度神经网络需要很长时间来训练。训练速度受模型的复杂性、批大小、GPU、训练数据集的大小等因素的影响。在PyTorch中,torch.utils.data.Dataset和torch.utils.data.DataL......
  • SoapUI: The World's Most Popular API Testing Tool
    官网地址:https://www.soapui.org/     https://en.wikipedia.org/wiki/SoapUI SoapUI isan open-source webservicetestingapplicationfor Simple......
  • 使用百度地图API申请密钥流程
    1、百度中搜索百度地图进行查找  2、点击控制台  3、进行开发者认证   有这个标识即可进行申请密钥 4、申请密钥        点击应用管理中的......
  • 基于pybind11实现Python调用c++编写的CV算法--上(Windows+VS)
    C++是一种编译型(compiled)语言,设计重点是性能、效率和使用灵活性,偏向于系统编程、嵌入式、资源受限的软件和系统。Python是一种解释型(interpreted)语言,同样也支持不同的......
  • 禅道api调用(爬虫方式)
    目录​​获取所有进行中的项目信息​​​​url​​​​postman​​​​Java代码​​​​实体类​​​​逻辑处理​​​​根据项目id获取指定项目下所有未关闭的任务id​​​......
  • 关于imatest Colorcheck模块的测试及结果分析(imatest版本 5.2.11)
    一、Colorcheck作用:   1、测试色彩准确性   2、测试白平衡   3、测试噪声或信噪比二、测试环境要求:   1、拍摄图卡距离:图卡按中心......