原文地址:http://microservices.io/patterns/apigateway.html,以下是使用google翻译对原文的翻译。

让我们想象一下你正在建立一个使用微服务模式的网上商店,你所用的产品详细信息页面。你需要开发多个版本的产品详情界面:

  l  由服务器端Web应用程序生成的HTML - HTML5/ JavaScript的桌面和移动浏览器用户界面。

  l  原生Android和iPhone客户端 - 这些客户端通过的REST API服务器交互。

此外,网上商店必须通过使用由第三方应用REST API公开的产品详细信息。一个产品的详细信息界面可以显示很多有关产品的信息。例如,Amazon.com的详细信息页面包括:

  l  关于这本书,如标题,作者,价格等基本信息

  l  这本书购买历史记录

  l  可用性

  l  购买选项

  l  购买这本书的客户还买了那些

  l  顾客评论

  l  卖家排名

  l  ...

  由于网上商店使用微服务模式的,产品详细信息数据分布在多个服务。 例如,

  l  产品信息 - 有关产品,如标题,作者基本信息

  l  定价服务 - 产品价格

  l  订购服务 - 购买历史记录产品

  l  库存服务 - 产品供应

  l  评论服务 - 客户评论...

  因此,显示产品细节的代码需要在所有这些服务中获取信息。

难题

  微服务的客户端是如何访问个体服务的?

考虑因素

  l  通过微服务提供的API的粒度往往和客户端需要的不同。微服务通常提供细粒度的API,这意味着客户端需要与多个服务进行交互。例如,如上所述,客户端需要的产品的细节需要从多种服务获取数据。

  l  不同的客户端需要不同的数据。例如,产品详情页桌面浏览器的版本通常更复杂于移动版本。

  l  网络性能因为不同类型的客户端而不同。例如,移动网络通常要慢得多,并具有高得多的延迟。当然,任何广域网是比一个局域网慢得多。这意味着手机本地客户端使用的网络与服务端web应用的LAN的性能特点区别很大。服务端web应用可以在不影响用户体验的情况下,向后端服务发送大量请求,但手机客户端只能发送少量的请求。

  l  服务实例数量和它们的位置(主机+端口)动态改变。

  l  服务可能随时间改变,所以要对客户端隐藏细节。

解决方案

  可以实现一个API 网关,他是所有客户端的入口。 API网关有两种方式来处理请求。有些请求被简单地代理/路由到合适的服务上,其他的请求被转给到一组服务。

  

  该API网关可以为每个客户端提供不同的API,而不是提供一个适合所有情况下的API。例如,Netflix的API网关运行客户端特定适配器代码,提供给每个客户端它们需要的API。

  API网关还可以实现安全性,例如: 验证客户端被授权执行请求。

 结论

  使用API​​网关具有以下优点:

  l  使服务和客户端解耦。

  l  使客户端和服务部署环境解耦。

  l  提供了最佳的API给每个客户端。

  l  减少的请求/往返次数。例如,API网关可以一次性检索多个服务的数据。更少的请求也意味着更少的开销,提高了用户体验。一个API网关对于移动应用至关重要。

  l  简化了客户端的调用,因为API网关可以组合服务,并提供组合后的façade接口。

  API网关模式也有一些缺点:

  l  增加的复杂性,API网关是必须开发、部署和管理的另一个应用。

  l  增加的响应时间,因为通过API网关多了一层网络跳转。然而,对于大多数应用的额外往返的成本是微不足道的。

问题

  如何实现API网关?API网关需要支持高并发、高负载,使用事件响应机制(IO两种机制:一种是阻塞式的,另一种是事件响应式的,还有最新的一种是GO语言微线程方式)是最好的方法。在JVM上,可以基于NIO的库如Netty,另外 NodeJS是另一个选择。

翻译-微服务API Gateway的更多相关文章

  1. 微服务API Gateway

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

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

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

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

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

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

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

  5. 微服务API网关

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

  6. 对微服务API服务网关的理解

    目录微服务专栏地址目录1. 简介2. 什么是API网关3. 为什么需要API网关4. API网关在微服务架构体系中处于什么位置4.1 调用者眼中的API网关4.2 所处的位置5. 网关技术实现有哪些6 ...

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

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

  8. 微服务API模拟框架frock介绍

    本文来源于我在InfoQ中文站翻译的文章,原文地址是:http://www.infoq.com/cn/news/2016/02/introducing-frock Urban Airship是一家帮助 ...

  9. 基于微服务API级权限的技术架构

    一般而言,企业内部一套成熟的权限系统,都是基于角色(Role)的 访问控制方法(RBAC – Role Based Access Control),即权限 (Permission)与角色相关联,用户( ...

随机推荐

  1. nginx 配置wordpress固定链接(自定义)

    今天在wordpress 下配置文章固定链接的时候,遇到了404的错误.我首先在wordpress下的设置里的“固定链接”配置页面,自定义链接的结构 “http://www.haozi8.com/%p ...

  2. 为什么QQ浏览器不是默认浏览器但是在打开网页的时候还是默认启动?

    因需要浏览器兼容性测试装了一个QQ浏览器,我将火狐设为默认浏览器,但是每次打开连接的时候都是启动QQ浏览器. 出现这样的情况有以下两种可能:1.取消QQ为默认浏览器打开的设置项未成功,若需要取消QQ为 ...

  3. 数据结构--树状数组&&线段树--基本操作

    随笔目的:方便以后对树状数组(BIT)以及基本线段树的回顾 例题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1166 例题:hdu 1166 敌兵布阵 T ...

  4. 标准C IO函数和 内核IO函数 效率(时间)比较

    前言 标准C提供的文件相关的IO函数,除标准错误输出是不带缓冲的(可以尽快的将错误消息显示出来)之外,所有与终端相关的都是行缓冲,其余都是全缓冲的. 我们可以使用setbuf,setvbuf改变指定流 ...

  5. Oracle 性能优化之一二

    本人使用oracle时间不多,但是在项目中积累了一些经验教训,记录于此,以方便自己和他人解决类似的问题. 1.temp space超出限制的问题 问题场景: 在复杂的ETL query中,有时候一张f ...

  6. hadoop入门:hadoop使用shell命令总结

    第一部分:Hadoop Bin后面根据项目的实际需要Hadoop Bin  包括:Hadoop  hadoop的Shellhadoop-config.sh 它的作用是对一些变量进行赋值     HAD ...

  7. 《TCP/IP详解 卷一》读书笔记-----DNS

    1.DNS是一个分布式数据库系统用来提供主机名和IP地址之间的映射,之所以称为分布式原因的原因是因特网上没有一台主机知道这类映射的全部信息,当然也不可能做到,因为数据量实在太大了 2.应用程序通过一个 ...

  8. 【温故而知新-Javascript】为DOM元素设置样式

    1. 使用样式表 可以通过document.styleSheets属性访问文档中可用的CSS样式表,它会返回一组对象集合,这些对象代表了与文档管理的各个样式表. 每个样式表 都由一个CSSStyleS ...

  9. codevs 2822 爱在心中

    codevs 2822 爱在心中  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题目描述 Description “每个人都拥有一个梦,即使彼此不相同, ...

  10. ZBrush中的Clip剪切笔刷怎么快速运用

    Clip剪切笔刷可以对模型网格进行剪切操作,也可以叫做剪切笔刷.接下来看一下Clip切割笔刷在ZBrush中是如何使用的. 查看更多内容请直接前往:http://www.zbrushcn.com/ji ...