插座是否可靠?
回答
套接字是用於執行網絡通信的應用程序級API。套接字的可靠性取決於您在創建套接字時選擇的網絡協議。如果您選擇TCP/IP,您將獲得「可靠」的傳輸......達到極限。如果你選擇UDP/IP,你會得到「不可靠」的傳輸。
在其他的答案說,TCP確保不會丟失或損壞的數據到一個點:
- ,如果有一個足夠長的網絡 停運,或發送者或接收者 死一TCP/IP連接將中斷 ,除非您的步驟 重新啓動 連接,否則將丟失數據。
- 如果存在網絡 級別數據損壞,則存在由校驗和檢測到的 小概率。
對於比TCP/IP提供的更高級別的可靠性保證,您需要在應用程序的基於Socket的網絡層頂部實現更靈敏的校驗和和保證傳送機制。或者使用消息排隊產品,爲您做好工作。
所以你的問題的答案是,它取決於你如何使用套接字,以及你的系統需要什麼級別的可靠性。
套接字與您的實現一樣可靠,並且基於底層硬件。如果你不想讓保證送貨服務的麻煩(在什麼條件下?100%永遠不會發生),消息隊列系統是一個不錯的選擇。消息隊列將實現所有的持久性,排隊,重試等,如果你使用標準套接字,你需要實現自己。
如果您需要有保證的交付,無論發生什麼事情(比如如果另一方爲了維護而下線)並且您不想自己編寫所有邏輯,那麼您應該使用MQ。套接字是您用來連接到另一方的信息,無論該方是MQ還是郵件的最終接收方。
套接字是傳輸數據的原始機制。其他一切都在此基礎上實施。在OSI network model中,它們屬於第4層。雖然它們實現可靠的端到端連接,但它們很少用作最終協議。你幾乎總是需要實現一個應用程序層。這將取決於您的應用程序(您是否需要傳輸文件或僅發送消息)和您的網絡基礎設施。
如果使用stream socket,則TCP協議確保數據在傳輸過程中不會丟失,並且不太可能被破壞(儘管您必須決定其16位校驗和是否足夠,或者您需要應用層校驗和機制) 。
MQ系統提供什麼,以及您可能需要或可能不需要的是應用程序級別的可靠性,即即使面對間歇的硬件或軟件故障也能保證交付。
根據數據類型的不同,簡單的Web服務可能是最快的解決方案。他們相對容易設置和測試。雖然對於一些特定的例子,我需要知道你正在運行的是什麼樣的數據和環境。
這取決於您正在開發的應用程序的類型。它正在編寫一個程序,您需要對發送的消息進行響應或確認,然後TCP套接字就很好。但是,如果您正在實施某種工作流類型的場景,則應該使用消息隊列。
套接字是可靠的,因爲每個通信都在其上完成,包括MQ。
但是,您可能希望使用MQ添加一些保證的交付以提高應用程序的可靠性。它是什麼?保證送達確保消息至少處理一次,不超過一次。 消費者是否關閉?製片人關閉了? MQ服務器關閉了?磁盤崩潰了?感謝MQ,不管發生什麼情況,都不會丟失任何消息(前提是管理員知道他的工作)。 除此之外,如果您重新啓動使用者,則不會處理兩次消息。如果消息包含百萬美元的轉移,這可能很重要。 但它並不保證你的消息在可處理的時間內被處理。並且處理時間有時候更重要,因爲您的應用程序會提供保證的交付。
您可以根據自己的需要選擇最佳的服務器通信方式。保證交付交付既有財務成本,也有性能成本,所以只有在真正需要的情況下才能使用(例如以百萬美元爲單位)。
對於大多數應用程序,只有在失敗時重試消息才能獲得滿意的結果。但這不是真正的只有一次保證的交付。不要試圖自己來實現它,這是一件非常困難的事情,只有少數人能夠實現。考慮重新開發像MQ或Apache AQ這樣複雜的軟件是徒勞的。
希望有所幫助。
- 傑布
- 1. java.net.Socket.setSoTimeout是否可靠?
- 2. window.opener是否可靠?
- 3. Azure Event Hub是否可靠?
- 4. Weblog Expert是否可靠?
- 5. 是否可靠代碼
- 6. 爲什麼網狀不能讓插座靠近插座半封閉
- 7. 是否可以連接兩個管道/插座?
- 8. Flex插座到插座
- 9. 插座與插座集合
- 10. netstat的可疑SSH插座
- 11. HTML5媒體事件是否可靠?
- 12. Maven中的-rf命令是否可靠?
- 13. Request.ServerVariables [「REMOTE_ADDR」]是否足夠可靠?
- 14. Linux Standard Base(LSB)AppChecker是否可靠?
- 15. web worker中的performance.now()是否可靠?
- 16. 從MainActivity調用Firebase getToken()是否可靠?
- 17. HTMLSelectElement的.value屬性是否可靠
- 18. 鏈接到GitHub問題是否可靠?
- 19. std :: vector指針是否可靠?
- 20. 藍牙插座:讀失敗,插座可能關閉或超時
- 21. 究竟是什麼插座
- 22. 是否有可能獲得並堅持從一個插座和HTTP請求
- 23. 在非插座上的插座操作:在設置插座選項和裝訂插座時出錯
- 24. Silverlight的插座
- 25. 插座和COBOL
- 26. 插座和Winapi32
- 27. 插座故障
- 28. 插座和DatagramChannels
- 29. ECONRESET插座hungup
- 30. 僵局插座
...的插座可靠嗎? – 2009-07-21 07:30:08
@modosansreves:只要第一個字母和最後一個字母就位,只要拼寫的單詞清晰可讀,那麼不正確的語法就不會傷害太多。專注於信息而不是單個單詞。 – 2009-07-21 08:28:36