![RPC 和 FaaS 之间的实际区别是什么?](https://linux22.com/image/689423/RPC%20%E5%92%8C%20FaaS%20%E4%B9%8B%E9%97%B4%E7%9A%84%E5%AE%9E%E9%99%85%E5%8C%BA%E5%88%AB%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9F.png)
如今,无服务器计算似乎被大肆炒作,我试图了解远程过程调用框架之间的主要区别是什么?
就我而言 - 这是同样的事情。你调用别人机器上的方法或函数。
答案1
从根本上讲,是的,是一样的。您正在按照所有者描述的方式使用其他资源。
RPC 是用于访问远程资源的协议之一,定义在 RFC 1831 中。另一个协议是 SOAP。总的来说,RPC 是一项相当古老的技术,该 RFC 于 1995 年发布。
FaaS 是一个“商业术语”,用于“重新定义”诸如 RPC 和远程调用之类的旧事物,因为当今的人们和公司愿意购买任何 aaS。FaaS 通常可以使用任何协议,甚至可以描述自己的协议。
使用取决于您的需求。如果您只需要连接两个服务或准备用于集成第三方软件的 API,请使用 RPC 或其他标准。
答案2
首先,关于“调用别人机器上的方法或函数”——只有当你调用的服务是别人机器上的标准服务,或者是别人编写的代码,并且恰好在他们的机器上运行时,这种方法才有效。使用无服务器,你编写在别人的计算机上运行的代码舰队的機器。
此外,对于您正在创建的服务(您自己的服务)的 RPC,您需要管理运行提供 RPC 服务的代码的服务器群。调用代码需要知道运行 RPC 服务的主机名或 IP 地址,如果是服务器群,您需要管理某种负载共享。您需要估计服务器群中需要多少台服务器,并在不使用时支付超出部分的费用,或者在服务器群不够大时处理问题。您需要管理服务器群上为 RPC 提供服务的流程。您需要使用持续交付策略将其部署到服务器群中。
使用无服务器,您只需编写代码,附加触发器,然后让“无服务器”服务管理和分配运行它的资源。(好的,您仍然需要管理 CD 策略!)
此外,RPC 仅与一种无服务器调用类似:来自无服务器 API 的直接调用。相比之下,无服务器调用可以与云中的事件相关联,例如存储到数据库或文件系统或将数据排队到队列中。使用 RPC,您需要编写代码来检测事件并调用 RPC 调用。使用无服务器,您可以对其进行配置并让系统处理详细信息。
有人可能会反对“无服务器”这一术语,因为当然存在服务器——但它是一个你不需要了解或考虑的服务器(或者实际上是一组服务器),这就是这个名字的意义所在。
有关更详细的解释,请参阅http://martinfowler.com/articles/serverless.html