企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
## RPC **author:xiak** **last update: 2022-10-15 10:12:22** ---- [TOC=3,8] ### 介绍 [远程服务调用 | 凤凰架构](http://icyfenix.cn/architect-perspective/general-architecture/api-style/rpc.html) ~~~ 论文的中心观点是:本地调用与远程调用当做一样处理,这是犯了方向性的错误,把系统间的调用做成透明,反而会增加程序员工作的复杂度。此后几年,关于 RPC 应该如何发展、如何实现的论文层出不穷,透明通信的支持者有之,反对者有之,冷静分析者有之,狂热唾骂者有之,但历史逐渐证明 Andrew Tanenbaum 的预言是正确的。最终,到 1994 年至 1997 年间,由 ACM 和 Sun 院士Peter Deutsch、套接字接口发明者Bill Joy、Java 之父James Gosling等一众在 Sun Microsystems 工作的大佬们共同总结了通过网络进行分布式运算的八宗罪(8 Fallacies of Distributed Computing): The network is reliable —— 网络是可靠的。 Latency is zero —— 延迟是不存在的。 Bandwidth is infinite —— 带宽是无限的。 The network is secure —— 网络是安全的。 Topology doesn't change —— 拓扑结构是一成不变的。 There is one administrator —— 总会有一个管理员。 Transport cost is zero —— 不必考虑传输成本。 The network is homogeneous —— 网络是同质化的。 以上这八条反话被认为是程序员在网络编程中经常被忽略的八大问题,潜台词就是如果远程服务调用要弄透明化的话,就必须为这些罪过埋单,这算是给 RPC 是否能等同于 IPC 来实现暂时定下了一个具有公信力的结论。至此,RPC 应该是一种高层次的或者说语言层次的特征,而不是像 IPC 那样,是低层次的或者说系统层次的特征成为工业界、学术界的主流观点。 ~~~ [微服务是什么? - 阮一峰的网络日志](https://www.ruanyifeng.com/blog/2022/04/microservice.html) > 大概在20多年前,随着互联网的出现,功能单元可以用远程"服务"的形式提供,就诞生出了"面向服务架构"(service-oriented architecture,简称 SOA)。寻根溯源 > 只用一台服务器就实现了面向服务架构,这在以前是做不到的。这种实现方式就叫做 微 服务。 > 简单说,**微服务就是采用容器技术的面向服务架构**。它依然使用"服务"作为功能单元,但是变成了轻量级实现,不需要新增服务器,只需要新建容器(一个进程),所以才叫做"微服务"。