1. 概念介绍
1.1. 业务简单,不用网关也能解决

1.2 API Gateway很好的解决了微服务下调用、统一接入等问题,如下图所示:

1.3 网关与代理的区别:

  • 代理
    纯粹的数据透传,协议不会发生变化;
  • 网关
    在数据透传的背景下,还会设计协议的转换,比如上图中用户请求传输到网关的协议是HTTP,通过网关透传到下游则可能已经转换成企业内部的RPC了(比如JSF、Dubbo等企业自研的RPC框架)

2. 网关作用

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

3. API网关的架构示例

将数据全部异构到缓存(如:Redis)中,同时还可以配合本地缓存来进一步提高网关系统的性能。为了提高网关的吞吐率,可以使用NIO+Servlet 3 异步的方式,还可以利用Servlet 3 的异步特性将请求线程与业务线程分开,为后续的线程池隔离做好基本的支撑。访问日志的存储我们可以放到Hbase中,如果要作为开放网关使用,那么需要一个支持OAuth2.0的授权中心。还可以引入Nginx + lua的方式将一些基本的校验判断放到应用系统之上

【参考】

[1] 七七号 初识API网关 / API Gateway

区块链预言机(1)初识API网关相关推荐

  1. 什么是区块链预言机(BlockChain Oracle)

    预言机 Oracle 是区块链中非常重要的一个功能,但我发现很少有人讨论,也可能很多人对此并不了解.而网上关于预言机的文章很少,很多也没有讲明白,甚至有些还是错误的.所以我整理了一篇详细的文章,分享给 ...

  2. 去中心化区块链预言机

    "区块链预言机(Blockchain Oracles)"概念的提出主要是为了解决区块链协议自身存在的局限性:(区块链)这种去中心化的网络(包括在其上构建的应用/ 智能合约)不能与外 ...

  3. 蚂蚁区块链第18课 区块链预言机(ORACLE)的定义及在蚂蚁BAAS中的使用

    1,摘要 本文主要讲解外部预言机ORACLE定义和原理,并讲解蚂蚁BAAS系统如何通过ORACLE预言机方式使用外部数据源的方法. 2,外部预言机ORACLE定义和原理 2.1 预言机(Oracle) ...

  4. 区块链预言机(4)内在机制

    1. 内在机制 1.1 step说明 step1:A requester creating a smart contract specifying the data required to trigg ...

  5. 区块链预言机(5)预言机原理

    1. 趣链预言机架构 预言机一般会作为区块链的一个独立模块或第三方服务与执行引擎进行交互.预言机只负责数据的可信获取,不直接参与交易的执行. step1. 用户通过合约调用的形式(也可以通过特殊的AP ...

  6. 区块链预言机(3)关键点说明

    1. 预言机类型 1.1 根据数据源来区分,有几种类型: 软件预言机 即通过API从第三方服务商或者网站获取数据,来作为智能合约的输入数据.最常用的如天气数据.航班数据.证券市场数据等等. 硬件预言机 ...

  7. 区块链预言机(2)预言机概念

    1. 概念 预言机的功能就是将外界信息写入到区块链内,完成区块链与现实世界的数据互通.它允许确定的智能合约对不确定的外部世界作出反应,是智能合约与外部进行数据交互的唯一途径,也是区块链与现实世界进行数 ...

  8. 区块链预言机 Chainlink 测试环境部署与使用/探索区块链预言机的实现原理

    Chainlink 什么是预言机:在区块链领域,预言机被认为是可以为区块链智能合约提供外部数据源的系统. Oraclize项目:中心化预言机. Chainlink项目:非中心化预言机. 部署步骤 部署 ...

  9. 【区块链 | 预言机】价格预言机的使用总结(三):UniswapV3篇

    前言 前面两篇文章分别讲解了 Chainlink 和 UniswapV2 的 TWAP.Chainlink 属于链下预言机,其价格源取自多个交易所,但所支持的 token 比较有限,主要适用于获取主流 ...

最新文章

  1. mysql基础拓扑图
  2. C++将带ui界面的qt工程封装为动态库dll
  3. mysql用sql语句怎么做个脚本备份_mysql备份脚本
  4. CentOS学习笔记--程序管理
  5. java的map 使用string数组多了双引号_奥奥奥利给!!!再也不怕面试官问我String源码了!来吧...
  6. 锁定计算机好在下游戏吗,巧用win7锁定计算机防止孩子沉迷游戏
  7. SQL Server XML格式化
  8. iterator获取当前元素_java集合【5】——— Iterator接口
  9. 设置屏幕横屏_android设置横屏和竖屏的两种方法
  10. SAS︱数据索引、数据集常用操作(set、where、merge、append)
  11. mysql循环遍历获取_mysql存储过程之循环遍历查询结果集
  12. Java学习心得(集合、泛型)
  13. web前端常用开发工具排行:8款html开发工具推荐下载
  14. STM8S103硬件I2C的操作注意事项
  15. SVN检出项目到本地
  16. k近邻算法_K近邻算法(一)
  17. ionic自定义图标(ion-icon)
  18. 【眼见为实】数据库并发问题 封锁协议 隔离级别
  19. visual studio(vs)2022如何在解决方案中自动配置文件路径(如何向解决方案中批量添加文件)(如何将修改路径之后的的源文件添加到解决方案中)
  20. oracle查询部门名称,oracle查询习题(一)

热门文章

  1. org.hibernate.transientobjectexception:The given object has a null identifier: com.gxuwz.check.entit
  2. python爬虫提取a标签_Python爬虫 Pyppeteer获取a标签的文本和链接
  3. 数据中心ECC值班长岗位提升工作总结
  4. 高中生学python培养思维能力_基于培养思维能力的Python语言程序设计教学
  5. 裁剪图像周围空白区域_零基础PS纠正倾斜的图像效果
  6. mysql 数据类型 int_MySQL数据类型 int(M) 表示什么意思?
  7. 成功解决eric6 Create Dialog Code XXX.py exists but does not contain any classes
  8. Python之 sklearn:sklearn中的RobustScaler 函数的简介及使用方法之详细攻略
  9. Interview:算法岗位面试—10.24下午—上海某软件公司(机器学习,上市)电话面试—考察SVM、逻辑回归、降低过拟合、卷积网络基础等
  10. 成功解决FileNotFoundError: [Errno 2] No such file or directory: '/home/bai/Myprojects/Tfexamples/data/kn