以ActiveMQ为例JAVA消息中间件学习【4】——消息中间件实际应用场景
前言
当前真正学习消息中间件,当前已经走到了,可以简单的使用,网上有很多那种复杂的高可用的架构,但是那些都是对于一些比较大型的项目来说的。
对于一些小型的项目可能用不到那么大的架构,于是我们需要从最简单的入手。
一个是要让我们明白,什么样的情况下我们会使用到消息中间件,应该使用消息的哪一种模式。
一个是要明白,使用消息中间件会有什么好处,同时会带来什么样的弊端。
最后要会举一反三,这样的情况我们可以使用消息中间件,那么以后实际项目中肯定不会有一模一样的场景,那么那样的场景可以使用,或者说使用效果最好。
应用场景
先列举所有应用场景,然后挑几个重点进行实际代码的模拟。
我在网上找了一圈,发现文字描述中一共有五个大的方向。
异步处理,应用解耦,流量削锋,日志处理和消息通讯。
异步处理:是指把原本直接调用接口拿到返回值的方式转变成异步的发送消息,然后接收到消息后执行。
应用解耦:是指将原来的多步的连续操作,分开,分成多个消息发送,然后分别执行,互相之间没有耦合了。
流量削锋:是指将原来的高并发直接操作数据库的请求变成消息队列保存起来,然后之后依次慢慢执行。
日志处理:是指将不同服务器的日志通过消息的形式发送,然后统一进行维护打印和管理。
消息通讯:是指发送通信消息的时候使用消息中间件维护队列,比如你聊qq的时候,一个说一句,就能维护在一个消息队列中让消息有次序的排列,或者是走订阅通知的形式的消息通讯。
然后我找了一些了一些产品(先说明我不是打广告啊,不喜欢你就跳过就行了)
阿里云有消息中间件的产品卖,我看了一下
他们提供的应用场景是这些
分布式事务是指:原来在一个项目中可以实现一个事务执行到底,但是当项目很大牵扯多个数据库多个项目的时候,要保证事务的一致性,那么就需要做分布式的事务,简单说就是保证多个项目的不同操作同时成功,同时失败。
物联网应用跟我们没啥关系,有兴趣可以自己去了解。
实时计算是指:通过数据总线接收需要处理的数据,然后进行数据计算,最后统一存储,一条龙服务,强调的是实时性。
大规格缓存同步:其实就是缓存同步,使用订阅模式,让一个修改同时作用于多个缓存。
我觉得这样下来基本上所有常用的应用场景都包括进去了。
优点
其实我们看见消息中间件的使用场景,基本已经明白了它所处的优点,其中解耦是其中一个重要的优点,将业务拆分。
然后是异步,把以前同步处理的形式转换成异步的。
是横向扩展,可以有多台服务器去消费消息,扩展方便。
顺序保证,因为是队列的形式,那么消息肯定得乖乖排队,所以一定会有一个先后顺序,从而保证一些场景使用安全。
缺点
消息中间件肯定会有瓶颈,当队列到达一定的数量处理的时间等会出现问题。
当消息中间件本身出现问题,或者因为服务器宕机等问题,消息中间件停止运行。
网上有很多在使用消息中间件时丢失消息的说法,虽然实际我没有遇到过,但是我也不能100%保证没有问题。
消息重复发送或者被重复处理时怎么办?消息幂等性的问题。
消息发送不成功是否会影响当前业务。
其他问题本人经验不足还在学习,等实际使用之后,再做出总结。
对于高可用,分布式的架构处理,以后还会进行深入的学习。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
2016-09-24 springMVC下载文件前修改文件名字
2016-09-24 ajax上传文件
2016-09-24 Chapter 1 First Sight——24