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
- 資料複雜性和簡單
- 害怕軟體的複雜嗎?其實複雜性是必須存在的 - ferd
- 發現很多golang 的國際化語言包做得比較複雜(難用),於是自己造了個輪子。Golang
- 隨著複雜性的增加,層次結構的用處越來越小? - jarcheJAR
- 簡單是優勢,但為何複雜性還受歡迎?
- 跟著Docker學分層複用思想Docker
- 簡單問題:JAVA物件的淺複製,有一個疑問!Java物件
- 不就是個簡訊登入API嘛,有這麼複雜嗎?API
- 如何把一個簡單的Web專案複雜化——垂直劃分——設計篇Web
- 從簡單到複雜:Apache Kafka應用例項詳解ApacheKafka
- 【簡單演算法】什麼是複雜度?演算法複雜度
- 複雜單頁應用的資料層設計
- 簡單例子展示爬蟲在不同思想下的寫法單例爬蟲
- 簡單程式的時間複雜度分析時間複雜度
- 外觀模式-簡化子系統的複雜性模式
- 各種排序演算法思想複雜度及其java程式實現排序演算法複雜度Java
- 分層開發思想與小籠包
- Java實現一個棧就這麼簡單Java
- 複雜性是心智殺手 - PhilipK
- 什麼是 幾何複雜性
- 有什麼簡單辦法從格式複雜的 Excel中提取資料Excel
- Apache 分發到多個tomcat 的 proxybalancer實現ApacheTomcat
- Java實現一個簡單的BitArrayJava
- Elasticsearch 8.X:這個複雜的檢索需求如何實現?Elasticsearch
- 【雜談】Java I/O的底層實現Java
- 軟體開發到底是業務複雜還是UI複雜UI
- 三層式開發中的層次劃分討論
- JAVA簡單的複習資料Java
- iOS 面試大全從簡單到複雜(簡單篇)iOS面試
- Java程式設計師不同層次的薪資對照,你在哪個檔口?Java程式設計師
- 簡述OSI七個層次與TCP/IP四個層次TCP
- 遊戲的社交屬性:六個層次的心理需求遊戲
- 網際網路流量下的分層實驗平臺是咋做的
- Java淺複製大揭秘:如何輕鬆複製兩個不同物件的某些相同屬性Java物件
- Chainer 使複雜神經網路變的簡單AI神經網路
- 請看我公司的產品和我的開發是個什麼層次?
- 進行自媒體一鍵分發的平臺有哪些?分發簡不簡單?