概述git
在互聯網應用中,因爲系統要考慮高併發,高可用,大數據,擴展性等需求,因此有別於傳統的企業級項目開發。github
互聯網領域主要的技能大體能夠歸納爲4個部分:通訊框架,消息中介,分佈存儲,搜索引擎。數據庫
因爲互聯網系統的特性,必須系統是分佈式的。由於高併發的場景下,單機很難承擔如此的負載。還有,大數據不可能存儲在單一的機器上,須要一個集羣。併發
分佈式的系統中最重要的就是通訊框架,無論是服務/API仍是數據之間的交互,都須要和通訊打交道。雖然當前出現了Dubbo這樣優秀的產品,可是我仍是但願本身能從頭開始開發一個支持分佈式的輕量級框架,不少東西是借鑑了Dubbo的思路,可是實現方式上可能會有所不一樣。框架
除了通訊框架,我還想提供一個統一的Repository訪問層,相似於當前比較流行的DB proxy。可是不只限於此,這個統一的Repository訪問層最好可以透明的完成不一樣的關係型數據庫或者NOSQL之間的調用。這部分沒有徹底想好,仍然有待完善。分佈式
還有一個就是消息中介。系統間的解耦,以及生產消費速度解耦。這都須要消息中介來支持。消息大致可分爲兩種。一種是強事務型的,好比下訂單。這種消息適合用JMS標準的消息中間件來實現。另外一種是弱事務,可是量很是大的消息,如點擊日誌。這種消息適合用Kafka這樣的分佈式消息中介來處理。我也打算像Repository的訪問層同樣,提供一個統一的Mq訪問層。模塊化
我會把本身的心得持續更新這個博客系列中。高併發
系統目標單元測試
1. 儘可能使用開源框架搭建一個高可用,分佈式,低耦合,透明化的系統。 測試
2. 代碼結構清晰易懂,具備良好的設計和可讀性,以及最大限度複用。
3. 爭取作到技術代碼和業務代碼徹底分離。能用第三方開源組件作的,就不本身實現。爭取充分挖掘第三方開源產品的可行性。
4. 模塊化。徹底隔離和解耦各個模塊。
5. 完成一些業務模塊,用於檢測和提煉框架。如RBAC,帳戶和工做流模塊。
項目地址
https://github.com/terrymanu/miracle-framework
感謝您用寶貴的時間閱讀本博客系列。請多提意見,多指教。目前代碼已經陸續放上去了,歡迎你們指點。
如下是會持續更新的系列博文: