微服务最佳实践中,我们需要通过统一的 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. SuperSocket AppServer.NewRequestReceived 不触发 接受不到字节

    SuperSocket AppServer.NewRequestReceived 不触发 接受不到字节 针对.netframework版本 1.6.* 使用 FixedHeaderReceiveFil ...

  2. C# 使用 运算符重载 隐式转换 对Point进行加减计算

    运算符重载方便了我们对自定义类型(自定义的类或者结构体)的计算. 运算符重载关键字 operator. 除了这些运算符不支持:x.y.f(x).new.typeof.default.checked.u ...

  3. 如何使用Charles查看页面接口请求?

    1.Charles下载地址: https://www.charlesproxy.com/latest-release/download.do 2.如何抓取浏览器的操作 2.1 点击映射 2.2 点击映 ...

  4. Vue——计算属性和侦听属性

    一.计算属性 模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的.在模板中放入太多的逻辑会让模板过重且难以维护.例如,有一个嵌套数组对象:我们想根据 author 是否已经有一些书来显示不同的 ...

  5. itest(爱测试)开源接口测试&敏捷测试&极简项目管理 6.6.6 发布,新增接口mock

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

  6. kvm链接克隆虚拟机迁移到openstack机器的实验

    总结 如果是完整克隆的那种虚拟机,是可以直接在openstack使用的,如果镜像格式没问题的话. 因为kvm虚拟机大部分都是链接克隆出来的镜像,不可用直接复制使用,所以需要创建新的镜像文件 创建空盘: ...

  7. Linux扩展篇-shell编程(五)-流程控制(三)-for语句

    基本语法: 格式一 for(( 初始值; 循环控制条件; 变量变化)) do statements done 格式二 for 变量 in 值1 值2 值3 ... do statements done ...

  8. HP惠普战66电源黄灯闪烁无法充电

    HP惠普战66电源黄灯闪烁无法充电 TYPE-C PD 无法充电. 解决办法:关机状态下,拔除外部设备,长按电源键30秒以释放主板静电,再插电源线可以开机.

  9. FlashDuty Changelog 2023-09-07 | 新增深色模式与主题配置

    FlashDuty:一站式告警响应平台,前往此地址免费体验! FlashDuty 现在已经全面支持了深色模式,这为您提供了更柔和的光线和舒适的界面外观.并且,您可以根据自己的喜好和使用环境动态切换深色 ...

  10. mysql中常用的三种插入数据的语句

    mysql中常用的三种插入数据的语句: insert into表示插入数据,数据库会检查主键(PrimaryKey),如果出现重复会报错: replace into表示插入替换数据,需求表中有Prim ...