微服務架構實踐之郵件通知係統改造
拆分背景
隨著平台業務增長,功能耦合度越來越高,部署周期變長,代碼樣式混亂、新人入手複雜、獨立功能影響係統的穩定性等等,等等,等等問題。
以郵件通知為案例對服務進行拆分,獨立服務,獨立部署,獨立進程,做到及時上線而不影響平台正常運營。
以此為例,望大家對於經手的功能模塊,有一個良好的規劃,不要礙於項目進度而給自己或者別人製造麻煩。
拆分原因
郵件通知分散於各個係統,配置變更容易遺漏
代碼分散,功能修複麻煩,相應的增加部署難度
多人經手,代碼風格不同,不易於維護
發送模版不規範,導致發送風格迥異
線上生產環境出現問題,在不影響正常運行的情況下,不易於修複
功能集成在項目,增加了調試的難度
影響平台穩定性
拆分優勢
係統拆分雖然會增加了複雜性,但是可以得到更多的好處
數據閉環實現自我管,不依賴於任何係統,即去依賴化這樣的好處是別人抖動不會影響到自己
數據異構,即將各個係統的數據傳輸過來,按照自己的要求去處理
基於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使用場景
架構圖例
關於Maven
關於流程
小站:https://blog.52itstyle.com/archives/1012/
最後更新:2017-06-20 10:01:59