微服务最佳实践中,我们需要通过统一的 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网关主要的特性:

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

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

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

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

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

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

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

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

轻舟微服务API网关应用

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

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

API网关实践-网易云轻舟微服务的更多相关文章

  1. Ocelot网关统一查看多个微服务asp.net core项目的swagger API接口

    0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 一.准备 前提需要下载安装consul,项目需要懂添加swagger 统一在网关中配置多个微服务的swagger,需要用到服务注册 ...

  2. 网易云免费OSS服务用做Markdown图床或博客图片外链

    我使用据说是Windows下最好用的Markdown编辑器“MarkdownPad2”(个人感觉还是Visual Code+Markdown插件666)写Markdown,在贴图方面遇到一个问题,于是 ...

  3. AspNet Core Api Restful +Swagger 发布IIS 实现微服务之旅 (二)

    上一步我们创建好CoreApi 接下来在框架中加入 Swagger  并发布  到 IIS (1)首先点击依赖项>管理Nuget包 (2)输入 Swashbuckle.aspnetCore  比 ...

  4. 掌握业界最新工程实践 | 了解AIOps下一代微服务等最新趋势

    近年来,IT应用越来越复杂,一旦出现故障,诊断越来越困难,使用传统技术来管理机器数据的组织会让其运维团队不堪重负.幸好随着大数据.机器学习和AI技术的飞速发展,智能化运维给这一现状带来了改变. 那么就 ...

  5. 为什么 kubernetes 天然适合微服务 (3)

    此文已由作者刘超授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验 四.Kubernetes 本身就是微服务架构 基于上面这十个设计要点,我们再回来看 Kubernetes,会发现 ...

  6. 为什么 kubernetes 天然适合微服务 (2)

    此文已由作者刘超授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验 三.微服务化的十个设计要点 微服务有哪些要点呢?第一张图是 SpringCloud 的整个生态. 第二张图是微服 ...

  7. 架构师成长之路也该了解的新一代微服务技术-ServiceMesh(上)

    架构演进 发展历程 我们再来回顾一下架构发展历程,从前往后的顺序依次为单机小型机->垂直拆分->集群化负载均衡->服务化改造架构->服务治理->微服务时代 单机小型机:采 ...

  8. 2019年微服务5大趋势,你pick哪个?

    2018年对于微服务来说是非常重要的一年,这一年Service Mesh开始崭露头角,解决服务间复杂的通信问题,这一年很多国内互联网公司已经有了较为成熟的微服务实践案例,网易云主办的微服务实践沙龙中也 ...

  9. 微服务应用新趋势:Service Mesh、AIOps和中台化

    微服务技术由于天生支持快速迭代.弹性扩展的特点,使企业能够在不确定性下提升发展速度及抗风险能力,受到了越来越多的关注.当前,云服务商纷纷试水微服务产品,最为典型的,当属推出轻舟微服务平台.剑指整个微服 ...

  10. 为什么 kubernetes 天然适合微服务 (1)

    此文已由作者刘超授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验 最近总在思考,为什么在支撑容器平台和微服务的竞争中,Kubernetes 会取得最终的胜出,事实上从很多角度出发 ...

随机推荐

  1. pageoffice6提取word指定位置(数据区域)的值

    在实际的开发过程中,经常会遇到提取Word文档中指定位置的数据保存到数据库中的需求,PageOffice客户端控件即支持在线保存Word文件,也支持Word文档中的指定位置的数据或所有的数据提交到服务 ...

  2. 防患未然 | AIRIOT城市管廊智能运维解决方案

      城市管廊构建复杂,管道内部传感器和附属设备居多,且近年来事故频发,地下空间属性人员进出管理不便,紧急情况应急调度措施有限.传统人工管理模式,运营成本高,且管理水平和质量也无法得到有利保障.因此在管 ...

  3. vite.config.js 无法使用__dirname的解决方法

    __dirname 是commonjs规范的内置变量.如果使用了esm 是不会自动注入这个变量的. 在commonjs中,注入了__dirname,__filename, module, export ...

  4. kubelet gc 源码分析

    代码 kubernetes 1.26.15 问题 混部机子批量节点NotReady(十几个,丫的重大故障),报错为: 意思就是 rpc 超了,节点下有太多 PodSandBox,crictl ps - ...

  5. 文件系统(五):exFAT 文件系统原理详解

    前言 exFAT是微软2006年推出的一种文件系统,距今已快二十年,相比于FAT16和FAT32,exFAT还是算年轻.exFAT一直是微软的一个专用文件系统,直到2019年微软发布它的规范,目前微软 ...

  6. Dockerfile-NGINX镜像制作

    1 NGINX镜像制作: 1.1 NGINX-dockerfile FROM centos:7 LABEL maintainer www.chenleilei.net RUN useradd www ...

  7. Aspire项目发布到远程k8s集群

    前提 你必须会创建aspire项目,不会的请先看微服务新体验之Aspire初体验 Aspirate (Aspir8) Aspirate 是将aspire项目发布到k8s集群的工具 安装aspirate ...

  8. Python 潮流周刊#53:我辈楷模,一个约见诺奖得主,一个成为核心开发者

    本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...

  9. itest work 开源接口测试&敏捷测试管理平台 9.5.0 GA_u1,优化及修复关键 BUG

    (一)itest work 简介 itest work (爱测试)  一站式工作站让测试变得简单.敏捷,"好用.好看,好敏捷" ,是itest wrok 追求的目标.itest w ...

  10. itest(爱测试)开源接口测试&敏捷测试&极简项目管理 7.1.0 发布,ui优化及bug修复

    (一)itest 简介及更新说明 itest 开源敏捷测试管理,testOps 践行者,极简的任务管理,测试管理,缺陷管理,测试环境管理,接口测试,接口Mock 6合1,又有丰富的统计分析.可按测试包 ...