跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • rabbitMq 为什么不直接使用 TCP 发送消息,而是虚拟 channel?
未分類
28 5 月 2020

rabbitMq 为什么不直接使用 TCP 发送消息,而是虚拟 channel?

rabbitMq 为什么不直接使用 TCP 发送消息,而是虚拟 channel?

資深大佬 : hercule 1

”对于 OS 来说,建立和关闭 TCP 连接是有代价的,频繁的建立关闭 TCP 连接对于系统的性能有很大的影响,而且 TCP 的连接数也有限制,这也限制了系统处理高并发的能力。但是,在 TCP 连接中建立 Channel 是没有上述代价的。“

上面这段话是很多技术文章写到的,也没具体的分析,我很纳闷,TCP 连接可以保持长连接,如果不显示关闭,也不会断开呀,我们也可以直接发送消息,只要不断开 TCP 就行,这样不会出现频繁的建立关闭 TCP 连接带来的开销啊。而且 channel 也是利用 TCP,简单来说,不管你多个 channel,始终是往一个 socket 上发送数据。除了 channel 有私密性以外。本质上为什么这样设置,如果只是系统消耗,好像说不过去。 如果是 http,我还能理解,一种 request/response 型的协议,为什么要做成 request/response 这种类型呢,因为 server 端要服务的 client 太多了,如果每一个连接都保持而不断开,那么服务器的 IO 很快就会被堵死了。但是 rabbitMQ 有点理解不了。 如果哪位大神知道为什么,麻烦指点一下。

大佬有話說 (2)

  • 資深大佬 : RicardoY

    channel 好像是 erlang 的原生概念

  • 主 資深大佬 : hercule

    @RicardoY 谢谢

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具