计算、存储、网络:6: 3: 1
当前算力增长比内存,网络带宽增速每10 年块4.5倍, 9 倍
分布式通信范式|消息传递, 共享内存, 分区内存。
可以利用消息传递实现共享内存,也可以利用共享内存实现消息传递:
同一台linux 两个进程使用TCP socket 通信。
linux 的实现是把发送的消息存储到共享内存 , 再通知对端进程去读取。
发送发
application send(socket call)->clibary_>send->lock ->TCP send buffer->TCP/IP-> NetworkPackt ->loopback interface -> 共享内存
接收方 共享内存-》 TCP/IP Event Notification-> Process sche
接收方 共享内存-》 TCP/IP TCPrecv buffer-> copy data freemem
单机场景下进程间通信而部署的消息队列中间件,如Redis, Memcached, zeroMQ, RabbitMQ 都是共享内存实现了消息传递原语。
共享内存抽象层次太低, 需要资源管理,进程间同步, 传统关系数据库抽象层次高,过于重量级,性能受限, 共享数据结构介于两者之间,可以灵活地存储结构化、半结构化数据。
如Redis,。
共享数据结构存储可以常驻内存,也可以持久化到磁盘。 内存缓存和闪存持久化,是兼顾性能和可靠性。