这是小小本周的第五篇,当Spring Boot 遇上了消息队列。

Spring Boot 1.0 版本

在很远很远的以前,作为单体应用,只有一个Spring Boot 应用,当两个Spring Boot 需要建立联系的时候,需要使用RestFulAPI作为两个应用之间的联系,实现其交流。 其具体过程如下如上图所示,当有访问的时候,直接请求到API GATEWAY,然后有网关分发到相关的接口,实现其访问。 如上图所示。 此时对于接口来说,相当的平稳,应用全部通过Rest进行交流。互不干扰,互不影响,相互相当平稳,岁月安好,一切平安。

消息队列实现削峰

当有大的流量来了肿么办,突然间没办法处理那么多的请求。请求太多,一招解决,加机器,直接集群上手,一套集群,直接搭上。集群带来的是什么,大量的机器,大量的人力,大量的物力,大量的财力的耗费,全都是钱啊。银子哗啦啦的像流水一般的流走。有以下几点

  1. 在高峰时期可以这样干,因为挣的多,花的也多,盈利的也多,利润也多。

  2. 在低谷不能这样干,因为这全是成本啊,并且峰值也就仅仅那一刻,所以呢,消息队列在这个时候登场。

消息队列实现流量削峰  v2.0

上方的架构图继续演化。以及改造这这里添加了相关的消息队列,通过消息队列实现当流量过来的时候,起到水坝的作用,暂时拦截流量。

如此精妙绝伦的设计,前不见古人,后不见来者哇。

通过如此简单的一个消息队列实现了流量的基本削峰,既节省了成本,又节省了服务器的开销。

应用间的通信  v3.0

这个时候,由于应用被解耦成了多个部分,一部分为用户模块,一部分为邮件模块,例如,当需要用户注册成功以后发送消息到邮件模块,让其发送邮件。

本节 不会再次阐述削锋

这个最简单的方法,直接调用api。

通过api的方式,实现直接调用,流程图如下

问题来了!

大量的请求来了怎么办! 调用失败,发送方这么知道? 如何确保只调用一次,重复性调用怎么办? 由于邮件处理和用户处理模块,性能不一致,两个性能之间巨大的差异怎么办。

大量的问题需要解决。

这个时候,消息队列继续出现

消息队列的应用

架构图如下

两个应用间的通信一个生产方,一个消费方,直接通过消息队列实现两者之间的相互通信。几乎做到了如此的精美绝伦,如此的天衣无缝。实在令人不可思议。

总结

使用消息队列,实现两个应用之间的相互的解耦,并实现其基本的事物等功能。以及异步的功能 重点在于,实现应用的解耦,事物的基本实现,异步的基本实现。

日志处理  v4.0

当应用规模小的时候,不需要进行小规模的日志处理,这个时候,可以直接保存在本地,当应用规模很大的时候,每天产生上G的日志。

使用消息队列实现日志的处理

俩张图祭天其核心为生产者与消费者模型,模型来源于操作系统,通过生产者.........

简单来说, 就是日志量过大,通过客户端采集放入消息队列,进行延缓处理,然后日志处理应用,再次收集日志信息。通过ELK实现日志的基本处理。

即,通过ELK组件,实现基本的日志信息的处理。

理论 | 当 Spring Boot 遇上了消息队列......相关推荐

  1. Spring Boot遇上jello

    2019独角兽企业重金招聘Python工程师标准>>> 开篇准备: 你得有准备jello(FIS-java解决方案),npm,maven. 开整: 编写maven配置文件 <? ...

  2. 当 Spring Cloud 遇上 SOFAStack | Meetup#2 回顾

    本文作者:玄北(曹杰),蚂蚁金服 SOFAStack 开源组核心成员. 导读:本文根据 5月26日 SOFA Meetup#2 上海站 <当 Spring Cloud 遇上 SOFAStack& ...

  3. spring boot 集成socketIo 做消息推送

    spring boot 集成socketIo 做消息推送 项目需求 代码展示 客户端代码 服务端代码 项目需求 后台管理系统用户小铃铛,消息推送功能并展示有多少条消息或者小红点 代码展示 客户端代码 ...

  4. vueform表单文件上传_峰哥说技术系列-8.Spring Boot文件上传(Form表单和Ajax方式)

    今日份主题 Spring Boot文件上传(Form表单和Ajax方式) 在Spring Boot中,和文件上传的主要和MultipartResolver接口有关,他有两个实现类 StandardSe ...

  5. Spring Boot 批量上传: The field files exceeds its maximum permitted size of 1048576 bytes.

    Spring Boot 批量上传异常: org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSizeLimitExceededExcep ...

  6. Spring Boot:上传文件大小超限制如何捕获 MaxUploadSizeExceededException 异常

    Spring Boot 默认上传文件大小限制是 1MB,默认单次请求大小是 10MB,超出大小会跑出 MaxUploadSizeExceededException 异常. 问题来了,当文件超过 1M ...

  7. Spring boot项目上传Linux服务器后 上传图片后,图片路径报404,图片路径映射问题

    问题 spring boot项目上传到Linux服务器后,头像上传后报404.但是我的打包的jar包在idea客户端运行是没问题的 解决 错误代码 @Overridepublic void addRe ...

  8. 全栈开发实战|Spring Boot文件上传与下载

    文件上传与下载是Web应用开发中常用的功能之一.接下来我们将讨论如何在Spring Boot的Web应用开发中,如何实现文件的上传与下载. 01.Spring Boot文件上传与下载 在实际的Web应 ...

  9. Spring Boot文件上传及回显(单/多文件)

    一.单文件上传 1.前端页面 <!DOCTYPE html> <html lang="en"> <head><meta charset=& ...

最新文章

  1. IOS中CoreLocation框架地理定位
  2. Vue.js子组件向父组件通信
  3. 论网站长尾关键词优化的六大方法
  4. hdu4876 深搜+(随机枚举剪枝)
  5. Linux wine
  6. boost / vs2017 编译 boost 1.68.0 的过程说明
  7. mysql32位主从复制安装包,MySQL安装-主从复制(5)
  8. RUNOOB python练习题8 numpy矩阵的索引及遍历
  9. mysql数据库查询笔记_MySql数据库基础笔记(一)
  10. 在命令提示符中运行c语言程序,【命令提示符运行exe】命令提示符运行文件_命令提示符运行程序-系统城...
  11. multipart/form-data;boundary=----WebKitFormBoundaryRAYPKeHKTYSNdzc1;charset=UTF-8‘ not supporte
  12. javaweb中服务器响应,Java Web服务器响应与JSON
  13. c#如何实现叫号操作_C#开发银行叫号系统方案
  14. python drop用法,python数据处理--pandas的drop函数
  15. macOS10.13.6及以下版本不能自动升级到更高版本的解决方案
  16. php+phpstudy搭建后台提示Warning
  17. 不要被约束的意思_不想被束缚的说说
  18. velo2cam_calibration——最新最准确的激光雷达Lidar和相机Camera外参标定算法实现
  19. Hive中数据倾斜和小文件过多的解决方案
  20. 小米平板位置服务器,腾讯内容开放平台

热门文章

  1. 【转】cas注册后自动登录
  2. Code Forces 448C Painting Fence 贪婪的递归
  3. 初识Xen-CentOS5.8_x64位系统安装xen文档(-)
  4. 使用EasyPoi轻松导入导出Excel文档
  5. 算法高级(33)-拓扑排序-maven依赖关系的确定
  6. JAVA8两个流变量相等_Java8:Stream在同一个流中映射两个属性
  7. java web 统计_Java web网站访问量的统计
  8. nginx nodejs环境配置_在Linux系统配置Nodejs环境的最简单步骤,部署多个thinkjs(nodejs)项目...
  9. Android 实现圆角布局,变相实现圆角图片效果(不同位置不同弧度)
  10. 爬取校园网新闻首页的新闻 使用正则表达式,函数抽离