内容简介:在微服务架构中,API网关是核心的基础服务之一。在微服务流行之前,API网关已经在很多架构中扮演重要的角色,尤其是开放平台,此时的API网关是系统的统一入口,肩负了很多的业务责任,比如限流,计费等功能。而在微服务架构中,API网关可能往往需要兼顾内部和外部的所有微服务,承担更多的职责。简单说,API网关是微服务架构中的“指路人”与“守护者”。首先,它会提供最基本的路由服务,将调用转发到上游服务。其次,作为一个入口,它还可以进行认证,鉴权,限流等操作,对上游服务进行保护。所以说,有了API网关,就可以做到“
在微服务架构中,API网关是核心的基础服务之一。在微服务流行之前,API网关已经在很多架构中扮演重要的角色,尤其是开放平台,此时的API网关是系统的统一入口,肩负了很多的业务责任,比如限流,计费等功能。而在微服务架构中,API网关可能往往需要兼顾内部和外部的所有微服务,承担更多的职责。
1 什么是API网关
简单说,API网关是微服务架构中的“指路人”与“守护者”。首先,它会提供最基本的路由服务,将调用转发到上游服务。其次,作为一个入口,它还可以进行认证,鉴权,限流等操作,对上游服务进行保护。所以说,有了API网关,就可以做到“一夫当关,万夫莫开”。
在一般的电商系统中,API网关位于订单服务和商品服务之前,所有外部的调用者(手机端和电脑Web端)都会先走网关,再进入具体的后端业务服务中。
2 为什么需要API网关
大多数的 Java 工程师,都对Spring AOP有所了解,在实际的开发中,使用面向切面编程在完成一些功能时,可以让代码的侵入性更小,实现更加优雅。而在微服务架构中,API网关可以给整个微服务增加面向切面编程的能力。
在API网关上,可以做到:
-
安全相关:认证,鉴权,IP黑白名单。
-
流控
-
集成服务发现
-
日志和审计
-
动态路由
在架构设计上,有了API网管也可以让整个架构更加灵活。很多业务系统,可能会涉及两套API,一套给自己的系统使用,一套给第三方使用,此时,就可以使用API网关进行分流。使用单独的API网关服务于第三方调用者,同时也可以针对第三方者做一些特殊的业务逻辑处理。
由于API网关在整个架构系统中位置特别重要,而且承受巨大的压力。所以,高性能和高可用都需要考虑。比较常用的做法是在网关的前面,加上负载均衡,这样,网关既能水平扩展,又能保证高可用。
3 常用的API网关
结合开发中常用的微服务架构体系,再看API网关。
3.1 Kong
Kong是在客户端和(微)服务间转发API通信的API网关,它的最底层基于Ngnix,所以,有着与生俱来的性能优势。同时,Kong支持通过插件扩展其功能,自带了很多常用的插件。
Kong也是一个比较通用的API网关,对于上游的服务没有语言上的限制。所以,Kong的使用也很灵活,并且,功能上也很全面,如图:
引用Kong的官方文档
3.2 Netflix Zuul
对于SpringCloud微服务架构体系来说,最常用的是Netflix Zuul。Zuul是基于Servlet的Filter实现的,并且自己内部也是构建了多种Filter的支持,从Zuul的架构图,可以看到这些Filter,如下:
引用Zuul官方架构图
虽然,Zuul的性能不是那么的突出,但是Zuul充分体现出简单够用的实用性原则。Zuul有很多优点:
-
适合Java技术栈
-
基于Groovy实现的动态路由,非常强大
-
丰富的Filter,容易进行业务扩展
-
和Eureka完美集成
不久前,Netflix开源了Zuul2,最新的Zuul基于Netty实现,彻底解决了饱受诟病的性能问题。
4 小结
本文主要从概念上对微服务架构中的API网关进行分析讲解,让读者从宏观上去理解API网关。文中主要以常见的API网关为例,简单介绍其原理及优缺点。读者可以结合自己的实际开发经验,理解API网关的概念和作用,从而更好地驾驭微服务。后续会继续推出偏向实战的微服务架构经验,主要是基于SpringCloud体系进行讲解,关注我:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 个推微服务网关架构实践
- 【行业分享】(3)—— 支付网关架构演进
- 『互联网架构』软件架构-zuul微服务网关(上)(100)
- 微服务架构基础之API网关
- 游戏服务器架构系列 - 网关限流
- 微服务架构之网关层 Zuul 剖析
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
深入浅出数据分析
Michael Milton / 李芳 / 电子工业出版社 / 2009 / 88.00元
《深入浅出数据分析》以类似“章回小说”的活泼形式,生动地向读者展现优秀的数据分析人员应知应会的技术:数据分析基本步骤、实验方法、最优化方法、假设检验方法、贝叶斯统计方法、主观概率法、启发法、直方图法、回归法、误差处理、相关数据库、数据整理技巧;正文以后,意犹未尽地以三篇附录介绍数据分析十大要务、R工具及ToolPak工具,在充分展现目标知识以外,为读者搭建了走向深入研究的桥梁。 本书构思跌宕......一起来看看 《深入浅出数据分析》 这本书的介绍吧!