天天看點

微服務架構實踐之郵件通知系統改造

随着平台業務增長,功能耦合度越來越高,部署周期變長,代碼樣式混亂、新人入手複雜、獨立功能影響系統的穩定性等等,等等,等等問題。

以郵件通知為案例對服務進行拆分,獨立服務,獨立部署,獨立程序,做到及時上線而不影響平台正常營運。

以此為例,望大家對于經手的功能子產品,有一個良好的規劃,不要礙于項目進度而給自己或者别人制造麻煩。

郵件通知分散于各個系統,配置變更容易遺漏

代碼分散,功能修複麻煩,相應的增加部署難度

多人經手,代碼風格不同,不易于維護

發送模版不規範,導緻發送風格迥異

線上生産環境出現問題,在不影響正常運作的情況下,不易于修複

功能內建在項目,增加了調試的難度

影響平台穩定性

系統拆分雖然會增加了複雜性,但是可以得到更多的好處

資料閉環實作自我管,不依賴于任何系統,即去依賴化這樣的好處是别人抖動不會影響到自己

資料異構,即将各個系統的資料傳輸過來,按照自己的要求去處理

基于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使用場景

微服務架構實踐之郵件通知系統改造
微服務架構實踐之郵件通知系統改造