Apache Software Foundation Thinking in Java:分發資訊這個簡單思想的複雜性實際上是有很多不同層次的

咔啡發表於2020-12-27

引論 :
客戶/伺服器系統的核心思想是:系統具有一箇中央資訊儲存池(central repository of information),用來儲存某種資料,它通常存在於資料庫中,你可以根據需要將它分發給某個人員或機器叢集。客戶/伺服器概念的關鍵在於資訊儲存池的位置集中於中央,這使得它可以被修改,並且這些修改將被傳播給資訊消費者。總之,資訊儲存池是用於分發資訊的軟體,資訊與軟體的宿主機器(或機器的叢集)被稱為伺服器(server)。宿主於遠端機器上的軟體與伺服器進行通訊,以獲取資訊、處理資訊,然後將它們顯示在被稱為客戶(client)的遠端機器上。
客戶機/伺服器計算技術的基本概念並不複雜。問題在於你只有單一的伺服器,卻要同時為多個客戶服務。通常,這都會涉及資料庫管理系統,因此設計者“權衡”資料置於資料表(table)中的結構,以取得最優的使用效果。此外,系統通常允許客戶在伺服器中插入新的資訊。這意味著你必須保證一個客戶插入的新資料不會覆蓋另一個客戶插入的新資料,也不會在將其新增到資料庫的過程中丟失(這被稱為事務處理(transaction processing))。如果客戶端軟體發生變化,那麼它必須被重新編譯、除錯並安裝到客戶端機器上,事實證明這比你想象中的要更加複雜與費力。如果想支援多種不同型別的計算機和作業系統,問題將更麻煩。最後還有一個最重要的效能問題:可能在任意時刻都有成百上千的客戶向伺服器發出請求,那麼隨便多麼小的延遲都會產生重大影響。為了將延遲最小化,程式設計師努力地減輕處理任務的負載,通常是分散給客戶端機器處理,但有時也會使用所謂“中介軟體(middleware)”將負載分散給在伺服器端的其它機器。(中介軟體也被用來提高可維護性(maintainability))
分發資訊這個簡單思想的複雜性實際上是有很多不同層次的,這使得整個問題可能看起來高深莫測得讓人絕望。但是它仍然至關重要:算起來客戶/伺服器計算技術大概佔了所有程式設計行為的一半,從制定訂單、信用卡交易到包括股票市場、科學計算、政府、個人在內的任意型別的資料分發。過去我們所作的,都是針對某個問題發明一個單獨的解決方案,所以每一次都要發明一個新的方案。這些方案難以開發並難以使用,而且使用者對每一個方案都要學習新的介面。因此,整個客戶/伺服器問題需要徹底地解決。

提問:
rabbitmq 的使用場景有哪些?
rabbitmq 有哪些重要的角色?
rabbitmq 有哪些重要的元件?
rabbitmq 中 vhost 的作用是什麼?
rabbitmq 的訊息是怎麼傳送的?
rabbitmq 怎麼保證訊息的穩定性?
rabbitmq 怎麼避免訊息丟失?
要保證訊息持久化成功的條件有哪些?
rabbitmq 持久化有什麼缺點?
rabbitmq 有幾種廣播型別?
rabbitmq 怎麼實現延遲訊息佇列?
rabbitmq 叢集有什麼用?
rabbitmq 節點的型別有哪些?
rabbitmq 叢集搭建需要注意哪些問題?
rabbitmq 每個節點是其他節點的完整拷貝嗎?為什麼?
rabbitmq 叢集中唯一一個磁碟節點崩潰了會發生什麼情況?
rabbitmq 對叢集節點停止順序有要求嗎?
在這裡插入圖片描述

相關文章