API网关实践-网易云轻舟微服务

微服务 最佳实践中,我们需要通过统一的 API 网关进行服务能力的共享,API 网关为用户提供发布、管理、保护和监控 API的能力,帮助用户在自己的多个系统之间,或者内部系统与合作伙伴以及第三方的系统之间实现跨系统、跨协议的服务能力互通。

API网关应用场景

API网关有三种典型的应用场景:

内部业务集成:规范系统间API接口,快速完成企业内部系统的解耦及前后端分离,实现可管可控的相互访问。

对外能力开放:将企业内部服务能力以标准API的形式开放给外部合作伙伴或第三方,与外部用户可管可控地共享服务、能力和数据,达成深度合作,共建新生态。

交付标准化:实现软件交付的标准化,提高交付质量,以及确保软件可迭代。

API网关实践-网易云轻舟微服务

作为后端服务的统一访问入口,除了服务路由的基本功能,API网关还可以加持服务治理,保证后端服务的稳定性,比如集成流控和熔断功能,前者可以防止服务被恶意攻击,后者能在后端服务发生异常的情况下保证不会发生“雪崩”效应。

轻舟微服务API网关实践

网易轻舟微服务平台包括了API网关组件,严格意义上讲,API网关并不算NSF内组件,但以网易微服务实践经验来看,API网关又是微服务架构下的一款非常主要的工具型组件。Spring Cloud提供了Zuul作为API网关组件,提供了主体功能,但功能相对单薄,代理效率一般(1.x是同步模式,2.x已改为异步),较难满足网关生态需求。我们团队在NSF研发前,已经自研了一套包括服务网关(Gateway)+网关自助管控平台(GPortal)系统,提供了较完善的API网关解决方案。

先看一下API网关与NSF整合的架构:

API网关实践-网易云轻舟微服务

可以看出,API网关为微服务集群提供了外部调用认证、服务/API管控、路由、审计等能力的解决方案。

API网关实践-网易云轻舟微服务

本文不对API网关进行详细介绍,仅简要说明我们自研API网关主要的特性:

基础请求代理:采用Servlet3.0+HttpAsyncClient实现异步化,单点万级TPS转发能力;

审计与统计分析:对服务请求进行异步审计与统计分析,多维度审计查询、统计图表、依赖拓扑展示;

服务治理能力:融合Eureka服务注册/发现,网关层熔断、线程隔离、限流

自定义插件:基于Groovy自定义filter、路由插件;

统一认证:基于RBAC统一认证请求合法性;

服务知识库与发布:形成了标准化API管理、导入/导出、Swagger/Markdown文档、发布/下线,基于OpenAPI的微服务规范流程控制(网易云内部在用标准);

API测试:基于API元数据与发布环境,快速完成API的测试;

SLA与报警:提供服务SLA检查与运行时监控报警。

轻舟微服务API网关应用

在德邦快递的微服务实践中,API网关提供了统一的认证、鉴权、API 监控、熔断、限流、降级等功能。当然,熔断、限流、降级在注册中心也会进行一次。

通过自定义分流插件功能,德邦快递可以灵活地针对全国不同地区的客户进行不同处理。而通过流量镜像功能,德邦快递可以通过网关复制流量到压测环境中,从而更好地进行压测。

原文 

https://segmentfault.com/a/1190000021983279

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » API网关实践-网易云轻舟微服务

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址