溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

微服務(wù)架構(gòu)實踐之郵件通知系統(tǒng)改造

發(fā)布時間:2020-05-17 13:59:23 來源:網(wǎng)絡(luò) 閱讀:224 作者:Java_老男孩 欄目:編程語言

拆分背景

隨著平臺業(yè)務(wù)增長,功能耦合度越來越高,部署周期變長,代碼樣式混亂、新人入手復(fù)雜、獨立功能影響系統(tǒng)的穩(wěn)定性等等,等等,等等問題。

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

以此為例,望大家對于經(jīng)手的功能模塊,有一個良好的規(guī)劃,不要礙于項目進度而給自己或者別人制造麻煩。

拆分原因

  • 郵件通知分散于各個系統(tǒng),配置變更容易遺漏
  • 代碼分散,功能修復(fù)麻煩,相應(yīng)的增加部署難度
  • 多人經(jīng)手,代碼風格不同,不易于維護
  • 發(fā)送模版不規(guī)范,導(dǎo)致發(fā)送風格迥異
  • 線上生產(chǎn)環(huán)境出現(xiàn)問題,在不影響正常運行的情況下,不易于修復(fù)
  • 功能集成在項目,增加了調(diào)試的難度
  • 影響平臺穩(wěn)定性

拆分優(yōu)勢

系統(tǒng)拆分雖然會增加了復(fù)雜性,但是可以得到更多的好處

  • 數(shù)據(jù)閉環(huán)實現(xiàn)自我管,不依賴于任何系統(tǒng),即去依賴化這樣的好處是別人抖動不會影響到自己
  • 數(shù)據(jù)異構(gòu),即將各個系統(tǒng)的數(shù)據(jù)傳輸過來,按照自己的要求去處理
  • 基于Maven管理項目,相比于項目中的Ant構(gòu)建更高級,當然功能不僅僅是構(gòu)建,還有一些列的優(yōu)勢
  • SpringMvc+Dubbo實現(xiàn)服務(wù)治理,對外開放接口,也可以自定義實現(xiàn)HTTP請求
  • 基于Thymeleaf模版,實現(xiàn)郵件動態(tài)內(nèi)容模板話,良好的封裝,便于開發(fā)和查閱
  • 初次采用Log4j2 ,睜大眼睛是二,沒錯,對比log4j和logbak性能大幅度提升
  • 獨立服務(wù),獨立部署,獨立進程,更加靈活易部署,易擴展
  • 使用LinkedBlockingQueue安全隊列做任務(wù)隊列(咱不考慮)
  • 額外增加Redis是為了在大量郵件發(fā)送請求下緩解郵件發(fā)送服務(wù)器壓力(咱不考慮)

技術(shù)實現(xiàn)

Maven、SpringMvc、Dubbo、Redis、Thymeleaf、Log4j2、MQ

技術(shù)問題

如何快速入門Maven
如何輕松搭建一個Maven項目框架
對于在Maven庫中不存在的Jar該如何處理
如何搭建SpringMvc基礎(chǔ)配置
關(guān)于Log4j2的正確使用
模版Thymeleaf如何生成靜態(tài)文件
任務(wù)隊列LinkedBlockingQueue實現(xiàn)
redis使用場景
MQ使用場景

架構(gòu)圖例

關(guān)于Maven

微服務(wù)架構(gòu)實踐之郵件通知系統(tǒng)改造

關(guān)于流程

微服務(wù)架構(gòu)實踐之郵件通知系統(tǒng)改造

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI