微服务架构实践之邮件通知系统改造

拆分背景

随着平台业务增长,功能耦合度越来越高,部署周期变长,代码样式混乱、新人入手复杂、独立功能影响系统的稳定性等等,等等,等等问题。

以邮件通知为案例对服务进行拆分,独立服务,独立部署,独立进程,做到及时上线而不影响平台正常运营。

以此为例,望大家对于经手的功能模块,有一个良好的规划,不要碍于项目进度而给自己或者别人制造麻烦。

拆分原因

  • 邮件通知分散于各个系统,配置变更容易遗漏
  • 代码分散,功能修复麻烦,相应的增加部署难度
  • 多人经手,代码风格不同,不易于维护
  • 发送模版不规范,导致发送风格迥异
  • 线上生产环境出现问题,在不影响正常运行的情况下,不易于修复
  • 功能集成在项目,增加了调试的难度
  • 影响平台稳定性

拆分优势

系统拆分虽然会增加了复杂性,但是可以得到更多的好处

  • 数据闭环实现自我管,不依赖于任何系统,即去依赖化这样的好处是别人抖动不会影响到自己
  • 数据异构,即将各个系统的数据传输过来,按照自己的要求去处理
  • 基于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/

时间: 2025-01-20 15:11:13

微服务架构实践之邮件通知系统改造的相关文章

从 Spring Cloud 开始,聊聊微服务架构实践之路

本文讲的是从 Spring Cloud 开始,聊聊微服务架构实践之路[编者的话]随着公司业务量的飞速发展,平台面临的挑战已经远远大于业务,需求量不断增加,技术人员数量增加,面临的复杂度也大大增加.在这个背景下,平台的技术架构也完成了从传统的单体应用到微服务化的演进. 系统架构的演进过程 单一应用架构(第一代架构) 这是平台最开始的情况,当时流量小,为了节约成本,并将所有应用都打包放到一个应用里面,采用的架构为 .NET SQL Server: 表示层:位于最外层(最上层),最接近用户.用于显示数

七牛容器SDN技术与微服务架构实践

     Docker的横空出世很大程度上推动了容器技术的热度和发展.容器技术和传统的虚拟化技术有很大的不同,具体包括:首先是相对于传统的虚拟机,以前一个虚拟机里做的事情,要打散成很多个容器去做,它们各自的职能会更少:第二点是会造成以前一个虚机的IP会变成很多个容器的多个IP,容器之间的关系会变得更加复杂:第三点是整个网络中的网络端点数量呈现一个上升的趋势:第四点是容器的生命周期其实会更短.此外,容器由于其轻量级的优势,可能会被不停地调度,从一台机器调度到另外一台机器,根据资源的负载均衡,容器的

品高公开课 | 基于Docker容器的微服务架构实践

小编的话 "品高公开课"系列文章意在分享技术牛人的知识干货,每期主题都不一样哟!期待各位读者在文后发表留言,来一场技术上的交流和思想上的碰撞! 微服务以一种全新的架构设计模式,牵动了互联网应用从设计到运维整个流程方法论的变革. 而以Docker为代表的容器技术则为微服务理念提供了匹配的实现机制.本周五,将由品高软件工程师陈洪杰带讲述微服务架构的故事. 分享嘉宾 陈洪杰,目前就任品高广州云架构产品部--BingoCloud平台的软件开发工程师,拥有Docker,LXC等多个容器平台的项目

什么是微服务架构?

什么是微服务? 微服务(Microservices Architecture)是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成.系统中的各个微服务可被独立部署,各个微服务之间是松耦合的.每个微服务仅关注于完成一件任务并很好地完成该任务.在所有情况下,每个任务代表着一个小的业务能力. 单体架构(Monolithic Architecture ) 企业级的应用一般都会面临各种各样的业务需求,而常见的方式是把大量功能堆积到同一个单体架构中去.比如:常见的ERP.CRM等系统都以单体架构的方式

微服务架构中模块划分和服务识别

最近在进行微服务架构的交流和讨论中,除了谈到微服务技术架构外,客户往往更加挂你微服务模块的划分粒度,已经具体的微服务API接口的识别和定义问题,因此这篇文章将重点谈下微服务架构实践过程中的微服务模块划分和服务识别. 首先我们还是再总结在在跨系统间的接口集成中服务的识别和定义方法,可以总结为: 1. 基于流程架构和业务架构,从跨系统交互流程出发,分析业务交互接口点,识别关键的业务服务能力. 2. 基于数据架构和主数据建模分析,识别关键的数据服务能力. 3. 基于技术架构和共性平台层技术组件的分析和

B站高性能微服务架构

编辑IT大咖说阅读字数: 2672用时:8分钟本文内容来源于任伟在[沪江技术沙龙]-漫谈微服务架构实践上的主题演讲,IT大咖说为沪江技术沙龙独家视频知识分享平台. 内容摘要Bilibili作为一个大型弹幕视频网站,在竞争日益激烈的互联网行业中,开始重视技术生态的演进,探索寻求适合企业本身的一个微服务架构.本次分享主要讲述了B站高性能微服务架构的演进. 大家好,我是来自bilibili的任伟.今天的分享分为三个部分内容:  曾经的价格体系.  面临的一些痛点问题.  高性能微服务架构在B站的落地.

成小胖学习微服务架构·基础篇

看到最近"微服务架构"这个概念这么火,作为一个积极上进的程序猿,成小胖忍不住想要学习学习.而架构师老王(不是隔壁老王)最近刚好在做公司基础服务的微服务化研究和落地,对此深有研究. 于是成小胖马上屁颠屁颠的跑过去向老王请教:"王哥,我看微服务架构这么火,我也想学,您给我讲讲啥是微服务架构呗?" 老王笑了笑说:"要想知道什么是微服务架构,你得先知道什么系统架构设计." 成小胖的理想是成为一名架构师,平时积累了不少知识,因此对"系统架构设计&

亿级流量电商详情页系统实战:缓存架构+高可用服务架构+微服务架构

<缓存架构+高可用服务架构+微服务架构>深入讲解了亿级流量电商详情页系统的完整大型架构.同时最重要的是,在完全真实的大型电商详情页系统架构下,全流程实战了整套微服务架构,包含了基于领域驱动设计进行微服务建模.Spring Cloud.基于DevOps的持续交付流水线与自动化测试套件.基于Docker的自动化部署.此外,还包含了大型电商详情页系统架构中的多种复杂架构设计的详细介绍. <亿级流量电商详情页系统实战(第一版)>的内容,主要是基于简化以后的大型电商详情页系统的背景,重点包含

视觉中国:基于容器云的同城双活微服务架构上云实践

本文正在参加"最佳上云实践"评选,来给我们投票吧:https://yq.aliyun.com/activity/158(编号7) 视觉中国集团(Visual China Group)创立于2000年6月,是中国领先的视觉影像产品和服务提供商.视觉中国集团是以"视觉创造价值,视觉服务中国"为愿景的A股唯一互联网文化创意上市公司(股票代号000681,股票简称:视觉中国).视觉中国集团以"视觉内容与服务"."视觉社区"和"