API网关|JD|pinduoduoAPI接入

API网关是什么


在日常工作中,不同的场合下,我们可能听说过很多次网关这个名称,这里说的网关特指API网关(API Gataway)。字面意思是指将所有API的调用统一接入API网关层,由网关层负责接入和输出。

那么在什么情况下需要一个API网关呢?下面从单体应用到微服务演变的过程去阐述,回顾单体应用时代,在业务简单、团队组织规模很小的时候,我们常常把功能都几种与一个应用中,统一部署,统一测试,如下图:

1.png

随着业务的迅速发展,组织成员日益增多。将所有的功能几种在一个Tomcat中的时候,没更新一个功能模块,势必要更新所有的程序。牵一发而动全身,系统将很难维护。

单体应用满足不了日趋增长的需求之后,微服务出现了。我们利用微服务的思想,将原来的单体应用进行微服务化。将原来集中于一体的功能(如商品、订单服务)进行拆分,每个功能模块又各自的自成体系的发布、运维等功能。这样就解决了单体应用的弊端,如下:

TaobaoAPI接入

参数说明

  • 通用参数说明
    • 参数不要乱传,否则不管成功失败都会扣费
    • url说明 https://api-gw.onebound.cn/平台/API类型/ 平台:淘宝,京东等, API类型:[item_search,item_get,item_search_shop等]
    • version:API版本
    • key:调用key,测试key:test_api_key
    • secret:调用secret,测试secret:(不用填写)
    • cache:[yes,no]默认yes,将调用缓存的数据,速度比较快
    • result_type:[json,xml,serialize,var_export]返回数据格式,默认为json
    • lang:[cn,en,ru] 翻译语言,默认cn简体中文
    • secret:密钥
  • API:item_search 参数说明:

    • q:搜索关键字
    • cat:分类ID
    • start_price:开始价格
    • end_price:结束价格
    • sort:排序[bid,bid,bid2,_bid2,_sale,_credit]
      (bid:总价,bid2:商品价格,sale:销量,credit信用,加
      前缀为从大到小排序)
    • page:页数
    • page_size:每页宝贝数量,默认40
    • seller_info:是否获取商家信息[yes,no],默认yes
  • API:item_get 参数说明: num_iid:宝贝ID

2.png

这时,我们还没有看到API Gateway。举例来说,原先IOS、Android、PC客户端调用服务的地方,需要多个URL地址,有订单的、商品的、用户的。微服务化后就必须有统一的出入口,这种情况下,API Gateway就出现了。API Gateway很好的解决了微服务下调用、统一接入等问题,如下图所示:

3.png

有了API网关之后,各个API服务提供团队可以专注于自己的业务逻辑处理,而API罔顾赞更专注于安全、流量、路由等问题。

看到上面的图示与描述,我们可能会想到另外一个与网关类似的东西——代理。网关与代理的区别:代理是纯粹的数据透传,协议不会发生变化;网关在数据透传的背景下,还会设计协议的转换,比如上图中用户请求传输到网关的协议是HTTP,通过网关透传到下游则可能已经转换成企业内部的RPC了(比如JSF、Dubbo等企业自研的RPC框架)。

API网关涵盖的基本功能


一个API网关的基本功能包含了统一接入、协议适配、流量管理与容错、以及安全防护,这四大基本功能构成了网关的核心功能。网关首要的功能是负责统一接入,然后将请求的协议转换成内部的接口协议,在调用的过程中还要有限流、降级、熔断等容错的方式来保护网关的整体稳定,同时网关还要做到基本的安全防护(防刷控制),以及黑白名单(比如IP白名单)等基本安全措施,如下图所示:

4.png

API网关的架构示例


除了基本的四大功能,网关运行良好的环境还包括注册中心(比如:ZK读取已发布的API接口的动态配置)。为了实现高性能,将数据全部异构到缓存(如:Redis)中,同时还可以配合本地缓存来进一步提高网关系统的性能。为了提高网关的吞吐率,可以使用NIO+Servlet 3 异步的方式,还可以利用Servlet 3 的异步特性将请求线程与业务线程分开,为后续的线程池隔离做好基本的支撑。访问日志的存储我们可以放到Hbase中,如果要作为开放网关使用,那么需要一个支持OAuth2.0的授权中心。还可以引入Nginx + lua的方式将一些基本的校验判断放到应用系统之上,这样可以更轻量化的处理接入的问题,整体的网关架构示例如下所示:

5.png

小结


文章中,我们从单体系统到微服务系统演变,引入了API网关的概念,紧接着介绍了API Gateway的基本功能,以及展示一个线上生产网关的架构示意图。通过本片文章,可以对API Gateway的内容有一个基本的认知。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/50451.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

主控全志R58-百度小度在家智能音箱拆解

*本文转自我爱音频网 作为一个还处于萌芽阶段的产品,近期智能音箱迎来了一种新的形态演化阶段,市面上不断出现像亚马逊Echo Show、京东叮咚Play等搭载触摸显示屏的智能音箱,屏幕的加入,让音箱的交互逐渐变得更加变得可视化&#…

拥有自我意识的AI:AutoGPT | 得物技术

1.引言 ChatGPT在当下已经风靡一时,作为自然语言处理模型的佼佼者,ChatGPT的优势在于其能够生成流畅、连贯的对话,同时还能够理解上下文并根据上下文进行回答。针对不同的应用场景可以进行快速定制,例如,在客服、教育…

移动端IM产品RainbowChat[专业版] iOS端 v6.0版已发布!

关于MobileIMSDK MobileIMSDK 是一套专门为移动端开发的开源IM即时通讯框架,超轻量级、高度提炼,一套API优雅支持UDP 、TCP 、WebSocket 三种协议,支持iOS、Android、H5、标准Java平台,服务端基于Netty编写。 工程开源地址是&…

Android与IOS的相爱相杀之客户端测试

一、Android Android 是google公司主导的一个开放的手机操作系统,不过目前已经超过了手机的局限,而定位于移动设备的操作系统。目前用于手机,平板,智能电视,智能导航,智能手环,智能眼镜以及智能家居设备 底层以Linux内核工作为基础,由C语言开…

[iPhone高级] 基于XMPP的IOS聊天客户端程序(IOS端三)

前两篇介绍了如何通过XMPP来发送消息和接收消息,这一篇我们主要介绍如何来美化我们的聊天程序,看一下最终效果呢,当然源程序也会在最后放出 好了,我们来看一下我们写的程序 这里我们自定义了TableViewCell 一行是显示发布日期,一行是显示发送的消息,还有一个是背景 -(id…

写综述如何降低查重率?

经过好几个月的打磨,论文终于写完了,你以为这就完事了?MO!下面就来到了很重要的一步——查重。很多小伙伴写完后还蛮开心的,可是看到这查重率,很多人是欲哭无泪。辛辛苦苦写的综述怎可重复率那么高!重复率过…

多智能体强化学习-G2ANet

Multi-Agent Game Abstraction via Graph Attention Neural Network 论文地址 代码地址 摘要 本文通过一个完整的图来建模智能体之间的关系,并创新性地提出一种基于两阶段注意力网络(G2ANet)的游戏抽象机制,表明两个智能体之间…

chatgpt赋能python:Python画轨迹图:认识、用法与优势

Python画轨迹图: 认识、用法与优势 Python的数据可视化能力十分强大。画图工具虽然千千万,但其中,轨迹图是同时准确又美观的图形表现。本文将向读者介绍Python画轨迹图的好处、如何使用以及如何在项目合适的地方使用轨迹图。 了解Python轨迹图 为了更…

爬取古诗文网的推荐古诗

爬取古诗文网的推荐古诗 思路分析完整代码结果展示 思路分析 本次的主要目的是练习使用正则表达式提取网页中的数据。 该网站的推荐古诗文一共有10页,页码可以在URL中进行控制,比如说,下面的URL指的是第一页。 https://www.gushiwen.org/def…

Python程序写诗【训练1分钟】古诗生成

原创AI程序写诗:训练 一分钟,诗词一秒成! 先看看写出来什么诗~ 文章目录 来看看程序语料下载地址关于程序的一些基础更多诗词创作山水田园宫廷别塞战争抒情春节 来看看程序 from gensim.models import Word2Vec # 词向量 from random impor…

最全中华古诗词数据库,收录30多万诗词

诗词诗人数据库 mysql文件 收录13136个诗人 305131个诗词,还有诗词赏析和注解等,需要的同学可以下载 可以搜索微信小程序 诗词成语大全 看数据效果 下载地址 人们习惯用史料来描述文学史的高峰状态,而在当今大数据时代,我们或可尝…

Python爬取古诗词

一、需求 爬取网址:https://www.gushiwen.org/ 需求: (1)获取侧边栏【类型】信息; (2)获取每个类型中古诗文详情页信息; (3)提取详情页数据:古诗…

最新C#调用Google即时翻译

主要是调用谷歌的翻译API进行翻译,WebRequest的请求,将获取到的翻译提取出来。下面上代码 需要用到一个的js文件:对获取到数据的过滤,命名为gettk.js var b function(a,b){for(var…

机器自动翻译古文拼音 - 十大宋词 - 江城子·乙卯正月二十日夜记梦 苏轼

【苏轼】江城子乙卯正月二十日夜记梦||纪录片剪辑 江城子乙卯正月二十日夜记梦 宋苏轼 十年生死两茫茫,不思量,自难忘。 千里孤坟,无处话凄凉。 纵使相逢应不识,尘满面,鬓如霜。 夜来幽梦忽还乡,小轩窗&…

汉译英翻译,中译英翻译古诗词有哪些要求?

作为中华民族优秀传统文化的代表——中国古诗词,受到了越来越多翻译人员的关注,将中文古诗词翻译成英文,对于促进中国古典文化在西方的传播有重大意义。那么,在中译英翻译过程中,如何才能准确翻译古诗词?提升古诗英译…

机器自动翻译古文拼音 - 宋词 - 桂枝香 金陵怀古 王安石

桂枝香金陵怀古 北宋王安石 登临送目,正故国晚秋,天气初肃。 千里澄江似练,翠峰如簇。 归帆去棹斜阳里,背西风,酒旗斜矗。 彩舟云淡,星河鹭起,画图难足。 念往昔、繁华竞逐,叹门外…

机器自动翻译古文拼音 - 十大宋词 - 水调歌头 明月几时有 苏轼

水调歌头明月几时有 北宋苏轼 明月几时有,把酒问青天。 不知天上宫阙,今夕是何年。 我欲乘风归去,又恐琼楼玉宇,高处不胜寒。 起舞弄清影,何似在人间? 转朱阁,低绮户,照无眠。 不应…

5.5 万首唐诗、26 万首宋诗、2.1 万首宋词 Python助力中华古典文集数据库

熟悉橡皮擦的朋友都知道,橡皮擦最爱写的文章是关于 Python 的,但是呢,橡皮擦确实是一个产品经理,哈哈,所以每次给大家分享 Python 相关知识的时候,总想着自己是一个前端工程师(好迷糊&#xff0…

模拟登录古诗词网

主要思路: 对登录界面发送请求,网址:https://so.gushiwen.cn/user/login.aspx?fromhttp://so.gushiwen.cn/user/collect.aspx由于该网址密码输错三次会有验证码,我们就需要第三方平台帮忙破解验证码。小编采用的斐斐打码平台&am…

随机古诗词

利用HTML CSS js 制作的随机游戏 <html> <head><meta charset"utf-8" /><title>随机古诗词</title><style>#box {width: 1000px;margin: 0 auto;background: rgb(3, 0, 7);color: rgb(11, 160, 224);height: 1000px;line-height…