微服务架构实践之邮件通知系统改造
拆分背景
随着平台业务增长,功能耦合度越来越高,部署周期变长,代码样式混乱、新人入手复杂、独立功能影响系统的稳定性等等,等等,等等问题。
以邮件通知为案例对服务进行拆分,独立服务,独立部署,独立进程,做到及时上线而不影响平台正常运营。
以此为例,望大家对于经手的功能模块,有一个良好的规划,不要碍于项目进度而给自己或者别人制造麻烦。
拆分原因
-
邮件通知分散于各个系统,配置变更容易遗漏
-
代码分散,功能修复麻烦,相应的增加部署难度
-
多人经手,代码风格不同,不易于维护
-
发送模版不规范,导致发送风格迥异
-
线上生产环境出现问题,在不影响正常运行的情况下,不易于修复
-
功能集成在项目,增加了调试的难度
-
影响平台稳定性
拆分优势
系统拆分虽然会增加了复杂性,但是可以得到更多的好处
-
数据闭环实现自我管,不依赖于任何系统,即去依赖化这样的好处是别人抖动不会影响到自己
-
数据异构,即将各个系统的数据传输过来,按照自己的要求去处理
-
基于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.vip

分享是快乐的,也见证了个人成长历程,文章大多都是工作经验总结以及平时学习积累,基于自身认知不足之处在所难免,也请大家指正,共同进步。
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 如有问题, 可邮件(345849402@qq.com)咨询。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?