目录
微服务专栏地址
目录
1. 简介
2. 什么是API网关
3. 为什么需要API网关
4. API网关在微服务架构体系中处于什么位置
4.1 调用者眼中的API网关
4.2 所处的位置
5. 网关技术实现有哪些
6. zuul网关工作原理是什么样的
6.1 整体处理流程图
6.2 请求生命周期
7. 技术上如何选型
1. 简介
通过以下几个问题去理解微服务中的一个重要组件:API网关。

什么是API网关
为什么需要API网关
API网关在微服务架构体系中处于什么位置
网关技术实现有哪些
zuul网关工作原理是什么样的
技术上如何选型
2. 什么是API网关
API网是一个反向路由:屏蔽内部细节,为调用者提供统一入口,接收所有调用者请求,通过路由机制转发到服务实例。
API网关是一组“过滤器”集合:可以实现一系列与核心业务无关的横切面功能,如安全认证、限流熔断、日志监控。
3. 为什么需要API网关
  什么是API网关中已给出理由,简单总结:

屏蔽内部细节
反向路由
安全认证
限流熔断
日志监控
4. API网关在微服务架构体系中处于什么位置
4.1 调用者眼中的API网关

统一入口
内部服务对于调用者是透明的
4.2 所处的位置

处于负载均衡与业务服务之间
API网关也可实现负载均衡功能
5. 网关技术实现有哪些
简单列举,不做比较,有兴趣可查询资料,后续为基于zuul网关来理解工作流程原理
1
zuul:是netflix开源的一个API Gateway 服务器, 本质上是一个web servlet应用。Spring Cloud已集成
kong:是一款基于Nginx_Lua模块写的高可用,易扩展由Mashape公司开源的API Gateway项目
6. zuul网关工作原理是什么样的
因为后续API网关组件会聚焦于zuul,这里对zuul工作原理提前学习。
1
6.1 整体处理流程图

zuul本身是一个Servlet
HttpServlet Request请求到达Zuul Servlet
通过ZuulFilter Runner ,并且根据routing filter 类型执行filter 链
根据FilterType类型不同,执行的顺序不同且可完成不同的功能
pre:在请求被路由之前调用,可实现日志监控、身份认证、黑名单等功能
route:在路由请求时候被调用
post:在route和error过滤器之后被调用,可实现审计、统计等功能
error:处理请求时发生错误时被调用、可实现统一异常处理等功能
Request Context:在请求生命周期中共享变量
Filter的实现是可插拔的
脚本实现Filter
发布到filter目录中
由filter manager与filter loader自动加载
6.2 请求生命周期

拦截请求
根据filter类型,执行已加载的filter chain
返回请求
7. 技术上如何选型
若使用的微服务框架是Spring Cloud,可选择Netflix的zuul,已经很好的集成到SC中
kong ,当然,能力强的可以自定义实现满足自己需求的API网关
---------------------
作者:AlienStar
来源:CSDN
原文:https://blog.csdn.net/crave_shy/article/details/81221738
版权声明:本文为博主原创文章,转载请附上博文链接!

对微服务API服务网关的理解的更多相关文章

  1. 【微服务】之六:轻松搞定SpringCloud微服务-API网关zuul

    通过前面几篇文章的介绍,我们可以轻松搭建起来微服务体系中比较重要的几个基础构建服务.那么,在本篇博文中,我们重点讲解一下,如何将所有微服务的API同意对外暴露,这个就设计API网关的概念. 本系列教程 ...

  2. 微服务API网关

    当你选择采用微服务构建自己的程序,则你需要考虑客户端怎样与后端服务交互.对于一个单体应用,仅有一个服务群提供服务(通过负载均衡器实现).在微服务架构里面,每一个服务都暴漏了一个服务器集群.本篇文章我们 ...

  3. Spring Boot + Spring Cloud 构建微服务系统(七):API服务网关(Zuul)

    技术背景 前面我们通过Ribbon或Feign实现了微服务之间的调用和负载均衡,那我们的各种微服务又要如何提供给外部应用调用呢. 当然,因为是REST API接口,外部客户端直接调用各个微服务是没有问 ...

  4. 【10】JMicro微服务-API网关

    如非授权,禁止用于商业用途,转载请注明出处作者:mynewworldyyl 往下看前,建议完成前面1到9小节 1. Api网关基本特性: Api网关作为对外网提供服务的基本入口,地位类似于NGINX, ...

  5. .NET Core 微服务—API网关(Ocelot) 教程 [一]

    前言: 最近在关注微服务,在 eShop On Containers 项目中存在一个API网关项目,引起想深入了解下它的兴趣. 一.API网关是什么 API网关是微服务架构中的唯一入口,它提供一个单独 ...

  6. .NET Core 微服务—API网关(Ocelot) 教程 [二]

    上篇文章(.NET Core 微服务—API网关(Ocelot) 教程 [一])介绍了Ocelot 的相关介绍. 接下来就一起来看如何使用,让它运行起来. 环境准备 为了验证Ocelot 网关效果,我 ...

  7. .NET Core 微服务—API网关(Ocelot) 教程 [三]

    前言: 前一篇文章<.NET Core 微服务—API网关(Ocelot) 教程 [二]>已经让Ocelot和目录api(Api.Catalog).订单api(Api.Ordering)通 ...

  8. 【Dalston】【第五章】API服务网关(Zuul) 上

    微服务场景下,每一个微服务对外暴露了一组细粒度的服务.客户端的请求可能会涉及到一串的服务调用,如果将这些微服务都暴露给客户端,那么客户端需要多次请求不同的微服务才能完成一次业务处理,增加客户端的代码复 ...

  9. 微服务API Gateway

    翻译-微服务API Gateway 原文地址:http://microservices.io/patterns/apigateway.html,以下是使用google翻译对原文的翻译. 让我们想象一下 ...

随机推荐

  1. 开发人员必备的几款bug管理工具

    Bug是软件开发过程中的“副产品”,也是开发人员最不想见到的状况.如果没有跟踪和梳理各种bug和问题并及时解决,项目就会花费非常多的时间,导致整个项目的重心偏移.如果在产品开发过程中,使用一个合适的B ...

  2. 浏览器内核控制标签meta说明

    由于众所周知的原因,国内的主流浏览器都是双核浏览器:基于Webkit的内核用于常用网站的高速浏览,基于IE的内核主要用于部分网银.政府.办公系统等网站的正常使用.以360浏览器为例,我们优先通过Web ...

  3. C/S模型之UDP协议

    说明:利用UDP协议,创建一个服务器和一个客户端.两者间进行通信.由客户端进行输入内容,而服务器将接受的内容进行再一次返回,并显示在服务端. // UDP_Seversock.cpp : 定义控制台应 ...

  4. ASP.NET控件--DropDownList

      设置默认值:DropDownList1.Items[i].Selected=true;绑定:DropDownList1.DataSource = dataSet.Tables["Tabl ...

  5. python selenium第一个WebDriver脚本

    #coding=utf-8from selenium import webdriverimport timeimport osos.environ["webdriver.firefox.dr ...

  6. Qt中layout()->setSizeConstraint(QLayout::SetFixedSize);崩溃的问题

    编译环境: win764位,vs2008编译器,cbd调试器,qt4.8 背景: 按照<C++ Gui Qt4编程>书中第二章的一个例子(sortDialog)一步步抄完,编译运行,显示不 ...

  7. UVa 1471 Defense Lines - 线段树 - 离散化

    题意是说给一个序列,删掉其中一段连续的子序列(貌似可以为空),使得新的序列中最长的连续递增子序列最长. 网上似乎最多的做法是二分查找优化,然而不会,只会值域线段树和离散化... 先预处理出所有的点所能 ...

  8. 字符串分割(C++)(转载)

    转载出自:http://www.cnblogs.com/MikeZhang/archive/2012/03/24/MySplitFunCPP.html 经常碰到字符串分割的问题,这里总结下,也方便我以 ...

  9. C# 计算传入的时间距离今天的时间差

    /// <summary> /// 计算传入的时间距离今天的时间差 /// </summary> /// <param name="dt">&l ...

  10. Python3基础 set add 向集合中加入新的元素

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...