允许通过网络进行函数调用的现代方法

时间:2018-08-15 14:39:17

标签: architecture rpc distributed-system

将其视为对现代系统设计范例的调查:

假设我已经编写了一个程序来返回两个给定数字的总和。我们称其为Amazing Adder,我的目标是使该Amazing Adder可供其他人使用。截至2018年,向世界提供此Amazing Adder作为公开可用服务的主流和现代方法是什么?我对后端体系结构更感兴趣,而不是用户界面。基于对系统设计的了解,我可以想到:

1)使它成为REST服务,但是此用例是否很好地适合REST范例?我怎么称呼我的端点?如果我正在做的只是添加没有状态信息的数字,我需要支持哪些操作(更新,删除等)?

2)通过http进行此普通的JSON RPC。因此,用户向http://www.theAmazingAdder.com/add发送了一个HTTP POST请求,有效载荷为{'number1':2,“ number2”:3},我的服务将返回{'sum':3}

3)通过Profobuf或Thrift将其制​​成二进制RPC格式。那是矫kill过正吗?客户端和服务器必须具有的“代码定义”是什么?

4)通过网络进行传统的Python酸洗或Java序列化/ RMI吗?那还合适吗?

我错过了其他流行的现代范例吗?

1 个答案:

答案 0 :(得分:3)

今天(在2018年),类似的“主流”和“现代”方式是使用grpc或使用OpenApi指定休息服务

使用哪种方法在很大程度上取决于上下文

为什么我选择这两种方法?它们允许您定义协议,“ Amazing Adder”的接口,然后以所需的任何语言(只要有grpc的库)实现该协议,同时允许您基于多种语言自动生成客户端库在您的原始文件上。

在grpc中,您将使用函数定义.proto文件,并生成客户端库以与服务的使用者共享。