技術選型web
項目用maven管理,使用checkstyle,findbugs,cobertura等插件生成項目報告。數據庫
使用Spring框架,採用註解的方式,儘可能零配置。服務器
統一化持久層模塊。Repository分爲JPA,MongoDB,HBase,Redis,Zookeeper等。mvc
JPA repository使用Spring Data JPA,儘可能簡化Repository層,使用接口 + JPQL操做數據庫。負載均衡
MongoDB repository一樣使用Spring Data Mongo實現。可是MongoDB畢竟不一樣於關係型數據庫,Spring Data Mongo的實現方式未見得是最優,有待考慮。框架
對於像Zookeeper等Spring Data未提供的,考慮封裝原生API。maven
服務所有發佈爲分佈式,使用Netty作長鏈接通訊,Protobuf或者Kyro作序列化。使用動態代理透明化調用,讓客戶端感受不到是分佈式服務。分佈式
提供基於Zookeeper的SOA的服務管理註冊中心,註冊服務的提供者和消費者。服務高可用且支持動態擴容及權重調整,支持各類負載均衡策略。工具
提供監控中心監控服務調用狀況,考慮使用Strom流式計算服務監控統計。測試
提供消息中介機制。對於事務型隊列使用ActiveMQ,對於大流量隊列使用Kafka。
Web MVC 使用Springmvc,提供Rest API+頁面的方式。
展示層使用freemarker+sitemesh
使用guava和lombok等能讓代碼看起來更清爽的類庫。
測試使用junit,dbunit,mockito。儘量的提高測試覆蓋率。原來喜歡使用unitils,可是因爲長時間未更新,且用起來較爲臃腫,暫時考慮放棄。
代碼結構
分爲common,container,repository,mq,remote,registry,monitor,service,webmvc,test等模塊。每一個模塊又會再有子模塊,用於具體實現。
Common模塊放置系統基礎異常,基礎對象以及一些工具類。
Container模塊定義系統容器的API以及具體的實現,目前只考慮Spring一個容器實現。
Repository定義持久層。又分紅JPA,MongoDB,HBase,Redis,Zookeeper等子模塊。
Mq定義消息中介層。分紅JMS,Kafka等子模塊,之後能夠考慮增長ZeroMQ,甚至RocketMQ等。
Remote定義遠程調用的代碼。仍然是提煉出一個API模塊,以及多個實現模塊。先實現Netty模塊,之後能夠考慮增長Mina,Grizzly甚至直接使用NIO的模塊。
Registry用於註冊中心,一樣是提煉出一個API模塊,以及多個實現。先實現Zookeeper的註冊中心,之後能夠增長Redis,Multicast等。不一樣的是,須要再實現一個註冊中心用戶界面模塊,之後還能夠實現一個Shell模塊。
Monitor用於監控中心。分爲Kafka收集模塊,Strom分析模塊,以及用戶界面模塊。
Service定義服務層。透明化調用等模塊應該在此層實現。
Webmvc定義Controller跳轉,web服務器的一些如多語言,Cookie,Session等相關的類。
Test定義一些基本的測試工具類。
一些初步的想法,之後會陸續把想法付諸實現,但願你們多指正,多提寶貴意見,多探討交流。謝謝。