0x00 前言
通信 是分布式系统中至关重要的一环!虽说我们在日常编写MapReduce和Spark程序的时候不需要考虑进程间之间的通信、搭建Zookeeper和Cassandra集群的时候也不用考虑节点之间的通信。但这只是因为有人已经帮我做好了这些工作,比如Hadoop定制的RPC协议、Zookeeper实现的Paxos算法、Cassandra用来做故障节点检测的Gossip协议,有很多很多这样有趣的东西等着我们。
如果想真正地掌握这些系统,就不得不探究这些它们背后的技术原理和设计思想。本篇是关于分布式系统的通信范型的。
0x01 通信范型
1. 进程间通信
进程间通信是指用于分布式系统进程之间通信的相对底层的支持,包括消息传递元语、直接访问由互联网协议提供的API(套接字编程)和多播通信的支持。
2. 远程调用
远程调用代表分布式系统中最常见的通信范型,覆盖一系列分布式系统中通信实体之间基于双向交换的技术包括远程操作、过程或方法。
远程调用最常见的方式有请求-应答模式、远程过程调用和远程方法调用。
请求-应答协议
请求-应答协议是一个有效的模式,它加在一个底层消息传递服务之上,用于支持客户-服务器计算。
注意: 这种模式相对比较原始,在嵌入式系统和HTTP协议中使用较多。但是在大多数分布式系