本人建立了个人技术、工作经验的分享微信号,计划后续公众号同步更新分享,比在此更多具体。欢迎有兴趣的同学一起加入相互学习。基于上篇微服务架构分享,今天分享其中一个重要的基础组件“API网关”。

一、引言

随着互联网的快速发展,当前以步入移动互联、物联网时代。用户访问系统入口也变得多种方式,由原来单一的PC客户端,变化到PC客户端、各种浏览器、手机移动端及智能终端等。同时系统之间大部分都不是单独运行,经常会涉及与其他系统对接、共享数据的需求。所以系统需要升级框架满足日新月异需求变化,支持业务发展,并将框架升级为微服务架构。“API网关”核心组件是架构用于满足此些需求。

很多互联网平台已基于网关的设计思路,构建自身平台的API网关,国内主要有京东、携程、唯品会等,国外主要有Netflix、Amazon等。

二、业界相关网关框架

业界为了满足这些需求,已有相关的网关框架。

1、基于nginx平台实现的网关有:KONG、API Umbrella

2、自研发的网关有:apigee、Zuul

三、API网关设计

API网关是微服务架构(Microservices Architecture)标准化服务的模式。API网关定位为应用系统服务接口的网关,区别于网络技术的网关,但是原理则是一样。API网关统一服务入口,可方便实现对平台众多服务接口进行管控,对访问服务的身份认证、防报文重放与防数据篡改、功能调用的业务鉴权、响应数据的脱敏、流量与并发控制,甚至基于API调用的计量或者计费等等。组件设计如下:

图1- API网关功能结构示意图

多种客户端程序,例如:移动APP、PC端和智能终端设备等。客户端程序通过互联网或者专网访问API网关,由API网关统一接收请求后,通过一系列模块定位具体处理的微服务机,并将其转发至目标服务处理,网关与微服务之间通信是内部局域网。API网关统一规范平台对外的服务,同时充当了平台的PaaS层。如上图所示,API网关功能结构基于管道模型和支持可插拔式的设计开发,提供统一基于http协议的WebAPI访问接口,内部每个模块各自实现功能,包括:黑白名单、日志、协议适配、身份认证、计流限流及路由。并且依赖“访问认证中心、服务发布管理中心”分别实现API网关访问权限控制和定位目标微服务。各模块功能说明如下:

1、黑白名单:实现通过IP地址控制禁止访问网关功能,此功能是应用层面控制实现,再往前也可以通过网络传输方面进行控制访问。

2、日志:实现访问日志的记录,可用于分析访问、处理性能指标,同时将分析结果支持其他模块功能应用。

3、协议适配:实现通信协议校验、适配转换的功能。

4、身份认证:负责网关访问身份认证验证,此模块与“访问认证中心”通信,实际认证业务逻辑交移“访问认证中心”处理。

5、计流限流:实现微服务访问流量计算,基于流量计算分析进行限流,可以定义多种限流规则。

6、路由:路由是API网关很核心的模块功能,此模块实现根据请求,锁定目标微服务并将请求进行转发。此模块需要与“服务发布管理中心”通信。“服务发布管理中心”实现微服务发布注册管理功能,与其通信获得目标微服务信息。

四、API网关部署

API网关是一个公共基础组件,无状态,可支持多套分布式部署。如下图所示:

图2- API网关部署示意图

五、API网关实现技术

1、技术:框架整体基于.NET平台构建,所以API网关也暂定基于.NET4.6平台和ASP.NET WebAPI2.0框架实现。具体软件架构就用上一篇所介绍的。

2、性能:部署于IIS7.0,1000个并发查询请求,平均响应90ms。

可能在IIS7.0和.Net4.6平台,在大并发性能处理上会更不上,后续将考虑基于.net core进行升级开发,并部署于Linux平台。

API网关主要原理是相通,不同平台结合本身平台整体框架设计,可选用不同的技术实现,目前有些基于Spring MVC、node.js、Erlang技术进行研发。

六、结语

以上是对API网关概要进行设计,还有其他方面的内容此篇文章未讨论,例如:安全性、高并发、扩展性等特性设计,同时作为平台其中一个组件,也涉及与其他组件一并协同运行。此块内容会后续分享。

作者:刘蔡涛

出处:http://www.cnblogs.com/Andon_liu

关于作者:专注于微软平台项目架构、管理。熟悉设计模式、领域驱动、架构设计、敏捷开发和项目管理。现主要从事ASP.NET MVC、WCF/Web API、SOA、MSSQL、redis方面的项目开发、架构、管理工作。 如有问题或建议,请一起学习讨论!

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。

如有问题,可以邮件:568773262@qq.com 联系我,谢谢。

微信号:

java net包 网关_Net分布式系统之六:微服务之API网关相关推荐

  1. 微服务之API网关接口设计

    微服务之API网关接口设计 API网关,顾名思义,就是外部到内部的一道门,其主要功能: 服务路由:将前段应用的调用请求路由定位并负载均衡到具体的后端微服务实例,对于前端应用看起来就是1个应用提供的服务 ...

  2. 微服务之API网关:Kong:概要与安装

    Kong是一个基于Apache License 2.0的开源项目,是一个云原生的快速可扩的分布式微服务抽象层,应用场景为微服务的API网关,类似于spring cloud的zuul. 概要信息 项目 ...

  3. 《企业IT架构转型之道》随笔之SOA、ESB、微服务、API网关(2019-08-07)

    <企业IT架构转型之道>随笔之SOA.ESB.微服务.API网关(2019-08-07) 名词注释 为什么会进化 展望 作者在本章中提到的"烟筒式"系统建设模式,在目前 ...

  4. 深度好文 — 微服务和API网关限流熔断实现关键逻辑思路

    来源:https://www.toutiao.com/i6853970319745483275/?group_id=6853970319745483275 今天准备谈下微服务架构和API网关中的限流熔 ...

  5. .net core 微服务之API网关 开源中间件 Ocelot 笔记

     一夫当关万夫莫开 一:源起: 当我们的应用不再是单体架构时,微服务将原先单体下的功能组件分割后,产生了许多个微服务,实际上我们还是以前那样的操作,访问服务接口,达到我们的目的,而这次不过是换成了ht ...

  6. 微服务中API网关的作用是什么?

    目录 什么是API网关? 为什么要用API网关? API网关架构 API网关是如何实现这些功能的? 协议转换 链式处理 异步请求 什么是API网关? Api网关是微服务的重要组成部分,封装了系统内部的 ...

  7. 微服务架构-实现技术之六大基础组件:服务通信+事件驱动+负载均衡+服务路由+API网关+配置管理

    微服务架构的实现首先需要提供一些基础组件,这些基础的功能性组件主要包括服务之间的通信.面向事件驱动的架构设计方法.负载均衡.服务路由.API网关和分布式配置中心等,我们对这六大基本组件进行初步的分析定 ...

  8. 微服务平台之网关架构与应用

    转载本文需注明出处:微信公众号EAWorld,违者必究. 前言: API 网关出现的原因是微服务架构的出现,不同的微服务一般会有不同的网络地址,而外部客户端可能需要调用多个服务的接口才能完成一个业务需 ...

  9. Java生鲜电商平台-深入理解微服务SpringCloud各个组件的关联与架构

    Java生鲜电商平台-深入理解微服务SpringCloud各个组件的关联与架构 概述 毫无疑问,Spring Cloud是目前微服务架构领域的翘楚,无数的书籍博客都在讲解这个技术.不过大多数讲解还停留 ...

最新文章

  1. 建立实体-关系模型2
  2. 计算机房装修对门的要求,防火门尺寸要求有哪些 防火门尺寸规范
  3. java实现红包要多少钱_Java实现发红包模拟
  4. spark 源码分析之十三 -- SerializerManager剖析
  5. Docker的特性解析
  6. video 标签存在的一些坑
  7. 洛谷 P3391 【模板】文艺平衡树
  8. NLP Coursera By Michael Collins - Week1
  9. 数据库杂谈(二)——数据模型
  10. 【Y9000x】单硬盘UEFI+GPT基于Win10安装Ubuntu18.04
  11. android怎么安装exe软件,安卓手机如何打开.exe文件?
  12. 《合约星期五》OKEx BTC季度合约 0726周报
  13. 修改订单金额!?0.01 元购买 iPhoneX?| Web谈逻辑漏洞
  14. Nape刚体body.align();
  15. HttpClient javax.net.ssl.SSLPeerUnverifiedException: Certificate doesn't match 错误解决办法
  16. 电脑关闭休眠模式清理 C盘内存
  17. 在中国人群中感染率最高的高危型HPV病毒是HPV16、HPV52和HPV58
  18. 基于SNMP的网络拓扑结构自动发现研究
  19. EMI器件原理及应用
  20. linux中的网络命名空间的使用

热门文章

  1. tmall.item.add.schema.get( 天猫发布商品规则获取 )
  2. mysql数据库中key 、primary key 、unique key 与index区别
  3. MySQL基础必会,简单易懂
  4. Chrome书签插件,让你实现高效整理
  5. Pandas API参考
  6. 如何得到每个区域的每个土地利用类型的面积
  7. 计算机通讯技术的专业有哪些,通信类包括哪些专业
  8. NC Cloud参照过滤(主子表、单表、查询区、报表)
  9. dell710服务器.维护,DellR710硬件及维护手册.pdf
  10. linux坏道检测修复脚本,Linux 磁盘坏道检测和修复