为什么微服务需要API网关?

随着以API为中心的IT规模增长,API网关和管理层越来越常见。 我们应该考虑微服务的API网关吗?如果是,他们提供什么样的好处? 什么是API网关? API网关跨一个或多个内部API提供单个统一的API入口点。 通常还包括限制访问速率限制和有关安全性等特点。 诸如Tyk.io的API管理层增加了额外的功能,例如分析,货币化和生命周期管理。 基于微服务的架构可以具有10到100个或更多个服务。 API网关可以为外部消费者提供统一的入口点,而与内部微服务的数量和组成无关。 API网关对于微服务的好处 1.防止内部关注暴露给外部客户端 API网关将外部公共API与内部微服务API分开,允许添加微服务和更改边界。 其结果是能够在不对外部绑定客户端产生负面影响的情况下重构和适当大小的微服务。 它还通过为您的所有微服务提供单一入口点,对客户端隐藏了服务发现和版本控制详细信息。 2.为您的微服务添加额外的安全层 API网关通过提供一个额外的保护层来防止恶意攻击,例如SQL注入,XML解析器漏洞和拒绝服务(DoS)攻击。 3.支持混合通信协议 虽然面向外部的API通常提供基于HTTP或REST的API,但是内部微服务可以从使用不同的通信协议中受益。 协议可能包括的Protobuf或AMQP ,或者用SOAP,JSON-RPC或XML-RPC系统集成。 API网关可以在这些不同的协议之上提供外部的,统一的基于REST的API,允许团队选择最适合内部架构的API。 4.降低微服务复杂性 如果微服务具有共同的关注点,例如使用API令牌的授权,访问控制实施和速率限制。 每个这些关注可以通过要求每个服务都实现它们,但这为微服务的开发增加更多的时间成本。 API网关将从您的代码中删除这些问题,允许您的微服务关注手头的任务。 5.微服务模拟和虚拟化 通过将微服务API与外部API分离,您可以模拟或虚拟化服务,以验证设计要求或协助集成测试。 微服务API网关的缺点 虽然使用API微服务网关有很多好处,但有一些缺点: 1.您的部署架构将需要更多的编排和管理,并增加一个API网关 2.必须在部署期间管理路由逻辑的配置,以确保从外部API到正确的微服务的正确路由。 3.除非针对高可用性和规模正确构建,否则API网关可能成为限制因素,甚至是单点故障。

原文发布于微信公众号 - Linyb极客之路(gh_c420b2cf6b47)

原文发表时间:2018-08-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏腾讯开源的专栏

别小看 Phx 这几位剑客!他们可是微信强大的支持后盾

三位武林高手:轻便简洁的 PhxRPC 框架,基于 Paxos 协议的多机状态拷贝类库 PhxPaxos 以及分布式数据库服务 PhxSQL 。下面,我们将深入...

2.8K3
来自专栏月色的自留地

mac电脑进行可见光通信实验要点

1166
来自专栏风中追风

分布式进阶__zookeeper的zab协议工作原理之原子广播

paxos协议主要就是如何保证在分布式环网络环境下,各个服务器如何达成一致最终保证数据的一致性问题

53415
来自专栏开源优测

JMeter性能测试基本过程及示例

性能测试是我们日常测试过程中,必须掌握的技能。通过进行性能测试,我们能分析服务端的整体性能、负载等,以便进一步评估我们的业务系统是否能满足当前运营生产及未来业务...

1212
来自专栏编程坑太多

「小程序JAVA实战」微信小程序的简要注册流程(二)

PS:按照这个步骤基本的注册流程也就完成了,必须要注册啊这可是基石,有了它才有了下面的一系列工作。

1482
来自专栏Java编程技术

Dubbo剖析-服务降级

dubbo提供了一些服务降级措施,当服务提供端某一个非关键的服务出错时候,dubbo可以对消费端的调用进行降级,这样服务消费端就避免了在去调用出错的服务提供端,...

5732
来自专栏杨建荣的学习笔记

使用Linux命令发送邮件(r2笔记94天)

在平时的工作中,可能很多环境都有自己的内网环境,如果发生一些问题的时候,可以通过内网环境发送邮件到指定的邮箱中。这种略显智能的方式可能在很多工作场景中使用,一般...

3835
来自专栏数据之美

根据ip查找ISP运营商和归属地的几种方法

一般来说都是根据网上流传的各种IP库来解析获取对应的ISP和归属地的, 除非有实力的公司自己从运营商获取数据,然后做数据分析得到。 下面介绍前者,如何...

2.4K10
来自专栏月色的自留地

mac电脑进行可见光通信实验要点

2104
来自专栏架构师之路

究竟啥才是互联网架构“高可用”

一、什么是高可用 高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。 ...

4826

扫码关注云+社区

领取腾讯云代金券