gpt4 book ai didi

thrift - 1 : mean in thrift parameter list 是什么意思

转载 作者:行者123 更新时间:2023-12-01 06:12:32 25 4
gpt4 key购买 nike

来自 Thrift website 的示例

int multiply(1:int n1, 2:int n2); 

为什么我们必须使用标签 1:2:在变量名之前,这个标签的目的是什么?

最佳答案

这些数字(“1:”和“2:”)是参数的序数值。 Ordinal 是“一系列中的位置”的一种奇特方式,但是,数字不必是连续的,而只是唯一的。

[TLDR]

在 Apache Thrift IDL 中,序号被分配给参数列表中的每个参数和结构中的每个字段。当客户端程序调用 Apache Thrift 服务器时,它们不传递参数名称,它们传递更小的序号,一个代表参数类型和序列化参数值的数字。

这不仅节省了网络空间,还允许您随着时间的推移向函数添加参数并以任何顺序发送参数而不会破坏客户端或服务器。如果 Apache Thrift 程序接收到带有序数的参数,它不会识别它会忽略它。

此外,如果缺少参数,则可以使用默认值。这是另一个为 allowPartialMatch 参数分配了默认值的示例服务:

service SocialLookup {
string GetSiteByRank( 1: i32 rank )
i32 GetSiteRankByName(1: string name, 2: bool allowPartialMatch=false)
list<string> GetSitesByUsers(1: i32 minUserCount, 2: i32 maxUserCount)
}

如果客户端调用 GetSiteRankByName 方法并且未传递参数“2:”,则使用默认值。在您希望发布单个服务的新版本而不必同时更新服务的所有用户的环境中,允许接口(interface)像这样发展是很重要的,例如微服务和 CI/CD。

重要的是,一旦设置,您永远不应该更改序数,因为它可能导致给定的客户端和服务器相互误解。您可以删除参数,但最好将它们注释掉,这样每个人都知道不要重用序数。

[/TLDR]

关于thrift - 1 : mean in thrift parameter list 是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39941619/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com