不用共享内存来通信,而用通信来共享内存的思考探索

go之所以不用共享内存来通信,而用通信来共享内存,是因为其协程之间都在一个进程里面,那么管道的读取性能就很好。

而如果是进程间的通信,很有可能会出现高性能进程间管道性能还是远不如共享内存的情况出现。

因此和分布式存储中常用的用共享内存来代替rpc调用优化通信效率刚好是相反的。

扩展阅读:

如何理解 Golang 中“不要通过共享内存来通信,而应该通过通信来共享内存”? - 卢旺杉的回答 - 知乎
https://www.zhihu.com/question/58004055/answer/155316307

深度|字节跳动微服务架构体系演进
谈到微服务,由于缺乏直观感受,很多人往往只关注服务的功能层面,而忽略底层的运维属性。但其实现在为什么社区还在不断讨论微服务,因为它部署在公有云、私有云、混合云等充满不确定性的环境下,解决的是由此带来的各种复杂性问题。
但换个角度看,如果开发人员都使用同一种语言,不做跨机器和跨进程的通讯。当所有服务都部署在同一台宿主机上,类似跨网络通讯、请求超时等问题会大大减少,通过共享内存或是无序列化等手段,整体性能似乎可以获得最极致的提升。

首发于: ARST打卡第199周[199/521]

你可能感兴趣的:(Go,分布式,C++,微服务,运维,分布式)