随着平台業務增長,功能耦合度越來越高,部署周期變長,代碼樣式混亂、新人入手複雜、獨立功能影響系統的穩定性等等,等等,等等問題。
以郵件通知為案例對服務進行拆分,獨立服務,獨立部署,獨立程序,做到及時上線而不影響平台正常營運。
以此為例,望大家對于經手的功能子產品,有一個良好的規劃,不要礙于項目進度而給自己或者别人制造麻煩。
郵件通知分散于各個系統,配置變更容易遺漏
代碼分散,功能修複麻煩,相應的增加部署難度
多人經手,代碼風格不同,不易于維護
發送模版不規範,導緻發送風格迥異
線上生産環境出現問題,在不影響正常運作的情況下,不易于修複
功能內建在項目,增加了調試的難度
影響平台穩定性
系統拆分雖然會增加了複雜性,但是可以得到更多的好處
資料閉環實作自我管,不依賴于任何系統,即去依賴化這樣的好處是别人抖動不會影響到自己
資料異構,即将各個系統的資料傳輸過來,按照自己的要求去處理
基于maven管理項目,相比于項目中的ant建構更進階,當然功能不僅僅是建構,還有一些列的優勢
springmvc+dubbo實作服務治理,對外開放接口,也可以自定義實作http請求
基于thymeleaf模版,實作郵件動态内容模闆話,良好的封裝,便于開發和查閱
初次采用log4j2 ,睜大眼睛是二,沒錯,對比log4j和logbak性能大幅度提升
獨立服務,獨立部署,獨立程序,更加靈活易部署,易擴充
使用linkedblockingqueue安全隊列做任務隊列(咱不考慮)
額外增加redis是為了在大量郵件發送請求下緩解郵件發送伺服器壓力(咱不考慮)
maven、springmvc、dubbo、redis、thymeleaf、log4j2、mq
如何快速入門maven
如何輕松搭建一個maven項目架構
對于在maven庫中不存在的jar該如何處理
如何搭建springmvc基礎配置
關于log4j2的正确使用
模版thymeleaf如何生成靜态檔案
任務隊列linkedblockingqueue實作
redis使用場景
mq使用場景
