本系列为《你会不会处理多线程中的XXXX》 。 关于进程间通信,我前前后后写了不下十篇,后来整理成了一两篇,无非是写:shm共享内存、消息队列、管道等方式。 本篇不会教你怎么使用TCP,详情请看前言。我们就来聊聊,为什么我们会为这个通信“新”方法而吃惊吧,毕竟也是经历过小风浪的人,是不会因为新奇而有这么大反应。 首先,就是分布式系统,这点当看到TCP做进程间通信的时候我就想到了。TCP进程间通信可以跨主机,具有伸缩性,把进程分布到不同的服务器上,改改TCP端口就能用了。相反,其他IPC都不能跨机器。 其次,我兄弟天天给我吹他学的服务器到后面可以跨平台,Windows和Linux上交互,我问他他说还没学到,那现在呢?就让我先剧透吧哈哈哈哈。 在编程上,TCP sockets和pipe都是操作文件描述符,用来收发字节流,都可以read/write/fcntl/select/poll等,不同的是,TCP是全双工的,pipe是半双工的,不方便。 就拿最快的IPC,shm共享内存来说,就那么好用?对于技术不过硬的朋友来说,那可真的是坑坑洼洼,反正我是鼻青脸肿了。 其实我是很喜欢shm通信的,甚至都封装了动态库,在我的“动态库”专栏下就能找到,但是吧,叛变就是这么的快哈哈哈。 再者,IPC通信崩溃会怎样?段错误;TCP呢?网络掉线,哪个好找?一目了然。 使用TCP长连接通信的好处有两点: 容易定位分布式系统中的服务之间的依赖关系。 通过收发队列的长度也比较容易定位网络中或程序故障。在正常运行时,netstat打印的Recv-Q和Send-Q都接近于0,或者在0附近波动。如果Recv-Q保持不变或持续增加,一般是服务进程的处理速度变慢,可能是死锁或阻塞了。如果Send-Q保持不变或持续增长,那可能是对方服务器太忙,没空理你,也有可能是网络中某个路由器或者交换机挂了,甚至对方掉线了。 下面是个示例: 它还能跨语言!!!!! ImapBox搜“看,未来”,未来可期!!文章目录
前言
本系列参考资料:陈硕的《Linux服务端多线程编程》、还有我的经验。
适用人群:要有一定的C++基础、要会百度、要有一定的Linux服务器编程经验。
本文语言比较粗糙,应该不至于引起什么不适,大家都是成年人了。进程间通信
但是今天我接触到了另外一种以前确实没有想过的进程间通信方法,我把它讲给我的朋友们听,他们都惊呆了。
那就是:TCP实现进程间通信。TCP在进程间通信的优势
或许有人会说,具体问题具体分析,单机就用shm,分布式就用TCP,我想问问,有意思吗?有意思吗?就那么喜欢为一个功能写两份代码啊。
在比对一下shm与TCP,TCP是字节流协议,只能顺序读取,有写缓冲;shm是消息协议,一个进程把内容写入虚拟地址,由另一个进程来读走,基本上可以说是阻塞。
TCP一断掉,哪里断了哪里重连就好,IPC呢?那就得全部重头来过。使用TCP长连接通信
只要在机器上运行netstat -tpna | grep : port
就能立刻列出用到某服务的客户端地址,然后在客户端上用netstat
或lsof
命令找出是哪个进程发起的连接。这样在迁移服务的时候可以有效的防止出现outage。
TCP短连接和UDP连接则不具备这一特性。
最后的惊喜
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算