Apache Software Foundation Thinking in Java:分發資訊這個簡單思想的複雜性實際上是有很多不同層次的
引論 :
客戶/伺服器系統的核心思想是:系統具有一箇中央資訊儲存池(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 對叢集節點停止順序有要求嗎?
相關文章
- Apache Software Foundation Thinking in Java:好的OOP語言都具有作為開發包一部分的一組容器ApacheThinkingJavaOOP
- Apache資源(Apache Software Foundation Distribution Directory)Apache
- 資料複雜性和簡單
- 不就是個簡訊登入API嘛,有這麼複雜嗎?API
- 害怕軟體的複雜嗎?其實複雜性是必須存在的 - ferd
- 發現很多golang 的國際化語言包做得比較複雜(難用),於是自己造了個輪子。Golang
- JAVA簡單的複習資料Java
- 隨著複雜性的增加,層次結構的用處越來越小? - jarcheJAR
- 跟著Docker學分層複用思想Docker
- 簡單是優勢,但為何複雜性還受歡迎?
- 有什麼簡單辦法從格式複雜的 Excel中提取資料Excel
- Java程式設計師不同層次的薪資對照,你在哪個檔口?Java程式設計師
- 簡單例子展示爬蟲在不同思想下的寫法單例爬蟲
- 看似簡單實際上作用十分強大的短連結到底有何作用
- 【簡單演算法】什麼是複雜度?演算法複雜度
- 簡單程式的時間複雜度分析時間複雜度
- 外觀模式-簡化子系統的複雜性模式
- QOJ6958-複雜的雙樹上問題以及簡單的解決方式
- Java實現一個棧就這麼簡單Java
- 什麼是 幾何複雜性
- 複雜性是心智殺手 - PhilipK
- Java淺複製大揭秘:如何輕鬆複製兩個不同物件的某些相同屬性Java物件
- 【雜談】Java I/O的底層實現Java
- 直面不確定性與非線性的複雜現實:邁向複雜性經濟 - Cilliers
- Elasticsearch 8.X:這個複雜的檢索需求如何實現?Elasticsearch
- 有些人喜歡簡單的事情複雜化
- Istio的複雜性揭祕
- 網際網路流量下的分層實驗平臺是咋做的
- 發明無止境:簡單的螺絲釘也有複雜悠久的專利故事?
- 悶騷社群-有思想,有個性,有內涵!
- 簡單的Java實現Netty進行通訊JavaNetty
- 操作簡單的BI資料分析軟體有哪些?實際體驗如何?
- Android開發 - 掌握ConstraintLayout(十一)複雜動畫!如此簡單!AndroidAI動畫
- 這 3 個 Set 集合的實現有點簡單,那來做個總結吧
- DDD函式程式設計案例:戰勝軟體開發的複雜性! 戰勝方式本身有點複雜哦!函式程式設計
- 一次簡單的分頁優化優化
- 進行自媒體一鍵分發的平臺有哪些?分發簡不簡單?
- 一致性雜湊的簡單認識