Hyperledger Fabric1.4.4开发应用程序-应用程序设计元素-网关

网关

受众:架构师,应用程序和智能合约开发人员

网关代表应用程序管理网络交互,使其专注于业务逻辑。应用程序连接到网关,然后使用该网关的配置管理所有后续交互。

在本主题中,我们将介绍:

情境

Hyperledger Fabric网络通道可以不断变化。由网络中不同组织贡献的对等,订购者和CA组件将会来来往往。造成这种情况的原因包括业务需求增加或减少,以及计划内和计划外的停机。网关减轻了应用程序的负担,使它可以专注于要解决的业务问题。

网关方案

MagnetoCorp和DigiBank应用程序(发行和购买)将各自的网络交互委托给其网关。每个网关都了解网络通道拓扑,其中包括两个组织MagnetoCorp和DigiBank的多个同级和订购者,使应用程序专注于业务逻辑。同行可以使用八卦协议在组织内部和组织之间相互交谈。

网关可以由应用程序以两种不同方式使用:

  • 静态:网关配置在连接配置文件中完全定义。应用程序可用的所有对等方,订购者和CA在用于配置网关的连接配置文件中静态定义。例如,对于对等方,这包括其作为支持对等方或事件通知中心的角色。您可以在连接配置文件主题中了解有关这些角色的更多信息。

    SDK将结合网关连接选项使用此静态拓扑 来管理事务提交和通知过程。连接配置文件必须包含足够的网络拓扑,以允许网关代表应用程序与网络交互;这包括网络渠道,组织,订购者,对等方及其角色。

  • 动态:网关配置在连接配置文件中最少定义。通常,指定来自应用程序组织的一个或两个对等方,它们使用服务发现来发现可用的网络拓扑。这包括对等方,订购者,渠道,实例化的智能合约及其签注策略。(在生产环境中,网关配置应至少指定两个对等方以确保可用性。)

    SDK将使用所有静态和发现的拓扑信息以及网关连接选项来管理事务提交和通知过程。作为其一部分,它还将智能地使用发现的拓扑。例如,它将 使用发现的智能合约背书策略计算所需的最少背书对等体。

您可能会问自己,静态或动态网关是否更好?需要在可预测性和响应性之间进行权衡。静态网络始终会以相同的方式运行,因为它们将网络视为不变的。从这种意义上讲,它们是可预测的–如果可用,它们将始终使用相同的对等方和订购方。当动态网络了解网络的变化时,它们的响应速度更快–他们可以使用新添加的对等点和订购者,从而带来额外的弹性和可扩展性,但可能会在可预测性方面付出一定的代价。通常,使用动态网络很好,实际上这是网关的默认模式。

请注意,可以静态或动态使用同一连接配置文件。显然,如果要静态使用配置文件,则它必须是全面的,而动态使用只需要稀疏的人口即可。

两种样式的网关对应用程序都是透明的。无论使用静态网关还是动态网关,应用程序设计都不会改变。这也意味着某些应用程序可以使用服务发现,而其他应用程序则可以不使用。通常,使用动态发现意味着SDK的定义更少,情报更多。这是默认值。

连接

当应用程序连接到网关时,将提供两个选项。这些用于后续的SDK处理:

 await gateway.connect(connectionProfile, connectionOptions);
  • 连接配置文件connectionProfile是网关配置,它将用于SDK的静态或动态事务处理。尽管可以在传递给网关时将其转换为JSON对象,但是可以使用YAML或JSON指定它:
let connectionProfile = yaml.safeLoad(fs.readFileSync('../gateway/paperNet.yaml', 'utf8'));
阅读有关[连接配置文件](https://hyperledger-fabric.readthedocs.io/en/release-1.4/developapps/connectionprofile.html)以及如何配置它们的更多信息。
  • 连接选项connectionOptions允许应用程序声明而不是实现所需的事务处理行为。SDK会解释连接选项,以控制与网络组件的交互模式,例如选择要连接的身份或用于事件通知的对等对象。这些选项可在不影响功能的情况下显着降低应用程序的复杂性。这是可能的,因为SDK已实现了许多应用程序否则需要的低层逻辑。连接选项控制此逻辑流。

    阅读有关可用连接选项的列表 以及何时使用它们的信息。

静态的

静态网关定义网络的固定视图。在MagnetoCorp 方案中,网关可能会标识MagnetoCorp的单个对等方,DigiBank的单个对等方和MagentoCorp订购者。或者,网关可以定义MagnetCorp和DigiBank的所有对等方和订购方。在这两种情况下,网关都必须定义足以使商业票据交易获得认可和分发的网络视图。

通过在API 上显式指定connect选项,应用程序可以静态使用网关。或者,环境变量设置 将始终覆盖应用程序选择。discovery: { enabled:false }``gateway.connect()``FABRIC_SDK_DISCOVERY=false

检查 MagnetoCorp问题应用程序使用的连接配置文件。查看如何在此文件中指定所有对等方,订购者甚至CA,包括它们的角色。

值得牢记的是,静态网关代表某个时刻的网络视图。随着网络的变化,将其反映在网关文件的变化中可能很重要。当应用程序重新加载网关文件时,它们将自动获取这些更改。

动态

动态网关为网络定义了一个小的固定起点。在MagnetoCorp 方案中,动态网关可能只从MagnetoCorp识别单个对等方。一切都会被发现!(为了提供弹性,最好定义两个这样的引导对等点。)

如果应用程序选择了服务发现,则网关文件中定义的拓扑将使用此过程生成的拓扑进行扩充。服务发现从网关定义开始,并使用八卦协议在MagnetoCorp组织中找到所有连接的对等方和订购方。如果已为通道定义了锚点对等点,则服务发现将使用跨组织的八卦协议来发现所连接组织中的组件。此过程还将发现在对等方安装的智能合约及其在渠道级别定义的认可策略。与静态网关一样,发现的网络必须足以使商业票据交易得到认可和分发。

动态网关是Fabric应用程序的默认设置。可以使用API 上的connect选项明确指定它们。或者,环境变量设置 将始终覆盖应用程序选择。discovery: { enabled:true }``gateway.connect()``FABRIC_SDK_DISCOVERY=true

动态网关代表网络的最新视图。随着网络的变化,服务发现将确保网络视图正确反映了应用程序可见的拓扑。应用程序将自动获取这些更改;他们甚至不需要重新加载网关文件。

多个网关

最后,对于应用程序而言,定义相同或不同网络的多个网关非常简单。此外,应用程序可以静态和动态使用名称网关。

拥有多个网关可能会有所帮助。原因如下:

  • 代表不同用户处理请求。
  • 同时连接到不同的网络。
  • 通过同时比较其行为与现有配置来测试网络配置。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,163评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,301评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,089评论 0 352
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,093评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,110评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,079评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,005评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,840评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,278评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,497评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,667评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,394评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,980评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,628评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,649评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,548评论 2 352

推荐阅读更多精彩内容