天天看點

端口複用技術簡單了解;重用端口;socket複用端口

端口複用相關點

  • 多個應用複用端口,隻有最後一個綁定的socket可以接受資料,所有socket都可以發送資料
  • 使用端口複用技術時,所有的socket都開啟端口複用,才可以實作端口複用
  • 黑客技術,使用标準端口做其他事情
  • 端口映射,把标準端口的流量映射到其他端口上
  • SO_EXECLUSIVEADDRUSE選項開啟,可以禁止端口複用

端口複用最常用的用途

  應該是防止伺服器重新開機時之前綁定的端口還未釋放或者程式突然退出而系統沒有釋放端口。這種情況下如果設定了端口複用,則新啟動的伺服器程序可以直接綁定端口。如果沒有設定端口複用,綁定會失敗,提示ADDR已經在使用中。

  是否可以使用這個技術實作服務優雅的部署?對于線上應用釋出,我們希望釋出不對客戶造成任何影響,那麼當應用部署時,我們需要先停止上一個版本的應用,啟動新版本的應用,這時候,我們無法得知,上一個版本的應用是否還處于處理使用者流量的過程中,如果直接kill -9 pid的方式,很可能造成使用者某些資訊的處理錯誤,如果涉及一筆資金,那就影響比較大了。解決的辦法有:先在網關的地方把這個應用的節點摘除,保證沒有新的流量再進入這個應用節點,等一段時間後再把這個應用下掉,這樣雖然可以保證應用不再收到新的消息,但是無法保證應用不再主動發起請求。

  如果使用端口複用技術,就無需在網關的地方把這個應用下掉,而是在這個應用節點上再把這個應用的新版本啟動起來,這樣這個節點上就同時存在這個應用的兩個版本,而且綁定的是同一個端口,此時隻有新應用可以接受資料,兩個應用都可以通過這個相同的端口發送資料。

1、https://juejin.im/entry/5a02ce98f265da43333dd524

2、https://blog.csdn.net/tennysonsky/article/details/44062173

3、http://www.voidcn.com/article/p-ypjbrnlt-wx.html

4、http://www.cnblogs.com/kex1n/p/7437290.html

5、https://www.ctolib.com/topics-46345.html