阻塞與非阻塞 阻塞:A程式調用B程式,A等待返回結果,等待中A程式線程被占用,不進行其它操作。 非阻塞:A程式調用B程式,A程式線程不被占用。 阻塞--》非阻塞 的最常用解決方案:緩存,A將請求依次裝入緩存中,A不管與B是否執行完成,由B隨後依次處理,返回給A。 同步與非同步 同步:一個線程依次執行所 ...
阻塞與非阻塞
阻塞:A程式調用B程式,A等待返回結果,等待中A程式線程被占用,不進行其它操作。
非阻塞:A程式調用B程式,A程式線程不被占用。
阻塞--》非阻塞 的最常用解決方案:緩存,A將請求依次裝入緩存中,A不管與B是否執行完成,由B隨後依次處理,返回給A。
同步與非同步
同步:一個線程依次執行所有任務
非同步:多個線程並行執行任務
同步--》非同步 的最常用解決方案:多線程,依次啟動多個線程執行任務,同時可以引入線程池,減少線程不斷分配和銷毀造成的開銷。
很多人都聽說過消息隊列、消息中間件MQ,企業服務匯流排ESB等。
簡單來說就是企業服務匯流排ESB就是搭了一條管道,所有的指令請求都可以扔進去,順著管道流向目的地。用到的技術就是消息隊列MQ,如RabbitMQ,ActiveMQ,Kafka等。
我之前在軟考架構設計師的時候,案例分析中就有一個問題談ESB的優點,與SOA做比較。在論文中我也一直闡述用到了ESB,技術框架就是RabbitMQ。
我清楚記得,我的答案說的是“非同步調用”,後來過了幾個月我才明白這是錯的,應該是“非阻塞”,因為這裡與多線程並沒有關係,而是調用端的“不等待,非阻塞”,只需要將消息扔到匯流排裡面就不用管了,實現了高可用和最終一致性,CAP中的AP。
考試結果就是案例分析查了5分,沒有通過考試。
上文中的消息隊列、分散式、CAP等後續再談。