分佈式輕量級框架 設計&實現 1 - 初步想法&技術選型

技術選型web

  1. 項目maven管理,使用checkstyle,findbugs,cobertura等插件生成項目報告。數據庫

  2. 使用Spring框架,採用註解的方式,儘可能零配置。服務器

  3. 統一化持久層模塊。Repository分爲JPA,MongoDB,HBase,Redis,Zookeeper等。mvc

    1. JPA repository使用Spring Data JPA,儘可能簡化Repository層,使用接口 + JPQL操做數據庫。負載均衡

    2. MongoDB repository一樣使用Spring Data Mongo實現。可是MongoDB畢竟不一樣於關係型數據庫,Spring Data Mongo的實現方式未見得是最優,有待考慮。框架

    3. 對於像Zookeeper等Spring Data未提供的,考慮封裝原生API。maven

  4. 服務所有發佈爲分佈式,使用Netty作長鏈接通訊,Protobuf或者Kyro作序列化。使用動態代理透明化調用,讓客戶端感受不到是分佈式服務。分佈式

  5. 提供基於Zookeeper的SOA的服務管理註冊中心,註冊服務的提供者和消費者。服務高可用且支持動態擴容及權重調整,支持各類負載均衡策略。工具

  6. 提供監控中心監控服務調用狀況,考慮使用Strom流式計算服務監控統計。測試

  7. 提供消息中介機制。對於事務型隊列使用ActiveMQ,對於大流量隊列使用Kafka。

  8. Web MVC 使用Springmvc,提供Rest API+頁面的方式。

  9. 展示層使用freemarker+sitemesh

  10. 使用guava和lombok等能讓代碼看起來更清爽的類庫。

  11. 測試使用junit,dbunit,mockito。儘量的提高測試覆蓋率。原來喜歡使用unitils,可是因爲長時間未更新,且用起來較爲臃腫,暫時考慮放棄。

代碼結構

  1. 分爲common,containerrepository,mqremote,registry,monitor,service,webmvc,test等模塊。每一個模塊又會再有子模塊,用於具體實現。

  2. Common模塊放置系統基礎異常,基礎對象以及一些工具類。

  3. Container模塊定義系統容器的API以及具體的實現,目前只考慮Spring一個容器實現。

  4. Repository定義持久層。又分紅JPA,MongoDB,HBase,Redis,Zookeeper等子模塊。

  5. Mq定義消息中介層。分紅JMS,Kafka等子模塊,之後能夠考慮增長ZeroMQ,甚至RocketMQ等。

  6. Remote定義遠程調用的代碼。仍然是提煉出一個API模塊,以及多個實現模塊。先實現Netty模塊,之後能夠考慮增長Mina,Grizzly甚至直接使用NIO的模塊。

  7. Registry用於註冊中心,一樣是提煉出一個API模塊,以及多個實現。先實現Zookeeper的註冊中心,之後能夠增長Redis,Multicast等。不一樣的是,須要再實現一個註冊中心用戶界面模塊,之後還能夠實現一個Shell模塊。

  8. Monitor用於監控中心。分爲Kafka收集模塊,Strom分析模塊,以及用戶界面模塊。

  9. Service定義服務層。透明化調用等模塊應該在此層實現。

  10. Webmvc定義Controller跳轉,web服務器的一些如多語言,Cookie,Session等相關的類。

  11. Test定義一些基本的測試工具類。

 一些初步的想法,之後會陸續把想法付諸實現,但願你們多指正,多提寶貴意見,多探討交流。謝謝。

相關文章
相關標籤/搜索