EOS8 API Gateway

小玻玻@普元云:
5分钟后,微课堂即将开始。

小玻玻@普元云:
下面掌声有请李铖讲师。

小玻玻@普元云:
[图片]

小玻玻@普元云:
EOS API Gateway 可以帮助开发者轻松创建、发布、维护、监控API。

小玻玻@普元云:
负责管理应用,涉及接受和处理成千上万个并发 API 调用,包括流量管理、授权、访问控制、监控和API适配。

小玻玻@普元云:
[图片]

小玻玻@普元云:
今天将基于以上几点来进行介绍。如果大家有任何问题,也欢迎在微课堂之后在群中直接提出,大家共同探讨学习。

小玻玻@普元云:
[图片]

小玻玻@普元云:
随着微服务的热度不断上升,线上商业的发展和人们需求的扩增,企业中业务服务种类众多,数量巨大,对如此规模的服务做升级、管理和维护,时间和资源成本的开销不言而喻。API Gateway的价值随之彰显出来。与此同时对API Gateway的选择也尤为重要。

小玻玻@普元云:
统一的API管理、高并发请求全周期异步化、灵活的API适配是EOS8 API Gateway的优势。

小玻玻@普元云:
[图片]

小玻玻@普元云:
上图展示了EOS8 API Gateway模块间的进程视图,方便我们理解整个业务执行过程。

小玻玻@普元云:
首先,需要将网关和后端应用注册到Eureka(如果后端服务不是微服务,可以忽略这一步)。
然后,在governor界面创建需要发布的API,并配置相应的ip认证和流控配置,这些操作都会同步到Gateway Server的缓存。

小玻玻@普元云:
最后,服务消费者系统需要在Governor订阅API,获得网关颁发给调用方的token凭证(后面的版本会加入IAM授权),消费方系统拿到token凭证访问已发布的API,Gateway Server从Redis读取缓存进行ip和流控校验,从自身缓存中读取token信息(后面版本鉴权有IAM完成)和API配置进行请求和API适配,各个EventHeadler都完成后,由Ribbon路由到Eureka注册的应用(如果后端服务没有注册到Eureka,由异步的NioClient接出)。

小玻玻@普元云:
[图片]

小玻玻@普元云:
接下来,让我们一起了解EOS8架构中各个组件是如何协同工作来完成API管理的。

小玻玻@普元云:
[图片]

小玻玻@普元云:
EOS8 API Gateway 有两种部署模式。

小玻玻@普元云:
1.EOS8 API Gateway可以不依赖微服务架构中的注册中心、配置中心进行单独部署。整个生命周期中API鉴权、ip认证、流控、配置管理,协议数据转换和调用日志监控等功能依然具备。但是依赖注册中心的服务路由、配置中心的统一配置API、监控/日志中心的后端服务监控等功能会缺失。

小玻玻@普元云:
2.EOS8 API Gateway 作为微服务治理的重要成员,可依赖注册中心、配置中心和监控/日志中心做微服务治理。
1)将API Gateway、后端应用注册到注册中心。当配置需要管理的API时,可选择注册中心的应用,亦可手动输入后端服务地址。
2)在配置中心可以对网关API进行统一配置,譬如:统一配置请求头响应头、统一请求参数响应参数等。
3)监控/日志中心可以监控注册到注册中心的后端服务调用和资源使用情况。

小玻玻@普元云:
管理门户(Governor)是EOS8微服务架构中服务治理和资产管理的门户,由管理员页面操作,进行API配置发布、API分组管理、黑白名单配置、流控配置、系统/应用注册、统一配置等操作,不过上述的功能的接口都有详细的swagger文档,可以根据需求自行扩展。
API_Gateway_Monitor是网关自带的日志解析组件。网关现支持Mysql、Oracle、PG数据库,Redis存放流控数据。
 

小玻玻@普元云:
[图片]

小玻玻@普元云:
1.注册中心使用Spring Cloud Eureka,配置中心使用Ctrip Apollo。
2.网关主要的技术框架:1)网关使用了Oauth2鉴权技术(后续配合IAM做权限校验)。2)在java8、Spring4的大环境下,Spring Boot加大了开发效率。3)嵌入了Jetty容器让网关更轻,让系统性能维持在一个可接受状态。4)使用了基于传输层的Netty框架,提供异步的、事件驱动的网络应用程序框架,为我们核心框架分阶段消息异步处理架构奠定基础。
接下来讲讲什么是分阶段异步处理架构。

小玻玻@普元云:
[图片]

小玻玻@普元云:
可以将一次请求Api Gateway,并从API Gateway获得响应视为整个流程。

小玻玻@普元云:
1.逻辑分段。将整个流程划分成:请求接入/响应接出、代理服务处理、业务服务处理、请求接出/响应接入四个业务Stage。

小玻玻@普元云:
2.段之间基于队列/消息通信。每个业务Stage都有自己独立的业务处理Event Handler、Event Queue和线程池,每个阶段之间没有任何依赖,当前的Stage事件处理完成,封装到Message中,然后派发到其他Stage的Event Queue,直到整个Stage处理完成有Nio Client或者Ribbon Client接出。当Event queue吸纳过量的负载,有限的线程池维持并发。

小玻玻@普元云:
3.Stage控制器负责资源的分配和调度,控制派发给Event Handler的事件的数量和顺序,Event Handler可能在内部丢弃、过滤、重排序事件。

小玻玻@普元云:
分阶段消息异步处理架构实现了EOS8网关高并发请求全周期异步化。

小玻玻@普元云:
[图片]

小玻玻@普元云:
EOS8 API Gateway从功能层面提供了统一的API管理。

小玻玻@普元云:
首先,具有多协议接入和接出,例如HTTP协议、REST协议、WS协议等,发布出来的API可供企业内部系统、第三方应用系统和前端研发人员调用。

小玻玻@普元云:
其次,在服务接入层,实现了权限认证、IP认证和用户名密码认证,再加上可靠的流控机制保障了通过网关的传输安全。

小玻玻@普元云:
最后,Api Gateway Server服务引擎有以下几个内容:1)Api Gateway Server内部实现了协议扩展和消息转换,根据需求在Governor管理页面进行配置。2)Server端的接出由Ribbon Client实现,可根据Eureka注册的应用进行路由。3)流控数据皆保存在Redis中,在有限的JVM资源下优先保障传输效率。4)server附带的普元自主研发的API Gateway Monitor,可以轻松解析千万级并发调用的日志文件,为governor呈现有效的API的调用详情和调用趋势。5)API Gateway可使用F5或者Nginx进行横向扩展,应对更大调用需求。6)断路器机制可以有效的保护JVM主线程,为传输安全提供保障。

拿鹿多:
请问你们的API Gateway 是什么语言开发的,与kong、guku等网关对比有什么优势

小玻玻@普元云:
丰富的服务引擎使API管理更加完善。

小玻玻@普元云:
[图片]

小玻玻@普元云:
[图片]

小玻玻@普元云:
网关的设计和功能已经讲完了,接下来的内容是如何使用EOS8网关,用EOS8网关如何注册和发布一个API,服务消费者系统又如何根据token调用已发布的网关。

小玻玻@普元云:
[图片]

小玻玻@普元云:
如果需要API Gateway动态路由到后端应用,需要将该应用服务注册到Eureka,然后在Governor注册。为API注册选择后端服务时做好准备。

小玻玻@普元云:
[图片]

小玻玻@普元云:
创建API第一步配置基本信息,对需要注册的API进行定义分组、协议、名称的配置。

小玻玻@普元云:
[图片]

小玻玻@普元云:
创建API第二步,配置API接入,当外部系统调用网关发布的API时涉及到的配置。

小玻玻@普元云:
一共有四个基本配置:1)“请求Path”是API的URI。2)“HTTP Method”是http请求的方法。3)“入参模式”分两种:穿透和转换,穿透与转换的区别是前者网关在服务调用生命周期只做代理转发,后者可以对请求报文进行适配和转换。4)“报文类型”请求报文的数据类型,默认有:JSON、XML、FORM表单,如有其他需求,可在数据字典扩展。

小玻玻@普元云:
本次示例是http穿透,路径参数 ”num1“加入了参数列表,参数列表中定义过的参数皆可在后端服务的Path、Header、Body中使用。

小玻玻@普元云:
在系统对接过程,常见的API适配有json转json、xml转json、json转xml。

小玻玻@普元云:
在EOS8 API Gateway中,无论请求方的报文是什么格式的,只要能在请求的Path、Header或者Body中提取出后端服务请求所需的报文数据,便可重构后端服务请求报文。

小玻玻@普元云:
如图所示,在入参定义中,当提取HTTP报文体,”参数路径“是根据报文类型而选择,当请求报文是JSON格式,用“$.*”JSONPath提取参数,当报文是XML格式,就用“/*/*”XPath提取参数。

小玻玻@普元云:
将请求报文的关键数据都提取出来保存到参数列表中,待后端服务配置使用。

小玻玻@普元云:
[图片]

小玻玻@普元云:
创建API第三步,配置API后端服务。

小玻玻@普元云:
一共有6个基本配置:1)“后端协议”是请求后端服务的网络协议(HTTPS协议将在下个版本加入)。2)“服务地址”是后端服务的地址,如果部署架构中将网关独立部署,这里可以选择“手动输入”配置后端服务,如果部署EOS8微服务架构,可选择“应用”进行动态路由。3)“HTTP Method”是请求后端服务的方法。4)“超时时间”是后端服务响应的熔断时间。5)“后端请求Path”是后端服务请求的URI。6)“报文类型”是请求后端服务的请求报文类型。

小玻玻@普元云:
后端服务参数中,可根据参数位置配置参数路径,如:在“后端请求Path””/json/library/book/{library}”路径中,library可作为参数路径变量,在参数列表中找到对应的参数进行赋值。

小玻玻@普元云:
对于后端服务报文的重构,根据已知的后端服务请求报文格式,使用了VTL语言重构,使用参数列表中的参数对重构报文的value进行赋值。VTL重构的报文示例:{"id":"$ReqBody_Did.asText()","name":"$ReqBody_Dname.asText()","isbn":"$ReqBody_Disbn.asText()","author":"$ReqBody_Dauthor.asText()","price":$ReqBody_Dprice.asText()}
关于VTL脚本语言更多介绍请参考(http://velocity.apache.org/engine/devel/vtl-reference.html)

小玻玻@普元云:
[图片]

小玻玻@普元云:
创建API第四步,响应结果配置。

小玻玻@普元云:
“返回ContentType”配置后端服务响应的报文类型。

小玻玻@普元云:
“错误码定义”可以自定义后端服务非正常响应。

小玻玻@普元云:
到这里,一个完整的实现了报文转换的API注册成功,接下来介绍刚注册好的API如何添加策略配置。

小玻玻@普元云:
[图片]

小玻玻@普元云:
首先创建黑白名单策略,“控制类型”可选择黑名单或者白名单,“IP列表”可用正则表达式定义,然后在刚刚创建好的白名单策略上绑定API,绑定成功则白名单策略生效。

小玻玻@普元云:
[图片]

小玻玻@普元云:
首先创建调用数控制策略,配置单位时间内的API被调用次数和单位时间内调用方的调用次数,然后在刚刚创建好的调用数策略上绑定API,绑定成功则调用数策略生效。
接下来开始介绍如何调用API。

小玻玻@普元云:
[图片]

小玻玻@普元云:
API处于“已发布”状态才能被调用。

小玻玻@普元云:
接下来创建调用方系统,并给系统授权。

小玻玻@普元云:
[图片]

小玻玻@普元云:
首先创建调用方系统。

小玻玻@普元云:
[图片]

小玻玻@普元云:
然后调用方系统订阅API。

小玻玻@普元云:
[图片]

小玻玻@普元云:
订阅完成后,网关会颁发一个令牌,调用系统想要调用刚才订阅的API需要传这个令牌做认证。

Raja:


小玻玻@普元云:
[图片]

小玻玻@普元云:
请求已发布的API,将刚刚获取的令牌放入“access_token”请求头中,在IP策略和调用数策略允许范围内,调用成功。

小玻玻@普元云:
多调用几次后,监控调用详情。

小玻玻@普元云:
[图片]

小玻玻@普元云:
刚才调用后,API Gateway Server会产生日志文件,API_Gateway_Monitor自动解析完日志后会产生监控数据,如上图展示。

小玻玻@普元云:
到这里,EOS8 API Gateway整个生命周期介绍完了。

小玻玻@普元云:
[图片]

小玻玻@普元云:
本次分享到此结束,谢谢大家!

小玻玻@普元云:
以上便是此次微课堂的全部内容,感谢李铖讲师的精彩分享,接下来我们进入答疑环节。

黄文涛:
?
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值