1. 程式人生 > >埠複用技術簡單瞭解;重用埠;socket複用埠

埠複用技術簡單瞭解;重用埠;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