笔者偶也是在前几年做银行项目时才开始接触到通讯框架,当时使用的是WebSphere MQ,考虑到现在通讯框架的开始流行,就准备写出一些东西来,以便参考。(不对的地方请指出就好,表打我哦)
大家先简单认识一下消息队列(MQ)
消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过写和检索出入列队的针对应用程序的数据(消息)来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。
在较早的时候,应用之间的通讯方式基本都是在程序之间直接进行,而需要跨系统通讯开发的苦逼程序猿就要不断的重写通讯代码。✍
这种情况就有问题出现了:程序中到处都充斥着与通讯协议的代码,在代码量不断庞大的同时,灵活性开始出现问题,维护成本也大大提高,开发团队因为进度与成本问题天天挨骂。
面对增加的工作量与进度滞后问题不断增加,聪明的程序员开始把通讯代码分割出来,变成独立的进程模块,这样就使得代码逻辑更清晰,也更容易被管理。
再后来,系统、通讯协议与通讯方式的多样性开始展现,分割出来的通讯模块不一定适应于各平台数据的广泛性要求。于是,消息通讯类软件开始慢慢出现,拯救了一大批执着与系统间通讯的开发团队。
到现如今,市场上的MQ框架非常多,比如:IBM WebSphere MQ、RabbitMQ、ActiveMQ、ZeroMQ、Kafka等。
好吧,们先来谈谈MQ的使用场景,了解MQ能做什么,才能决定是否需要使用它。
高并发环境:当你的请求系统来不及同步处理时,堵塞就会出现(线程池与连接池满负荷都处理不完啦,肿么办)
分布式架构:别告诉我你应用之间都是直接调用连接(除非你请求并发量不是很多)
网络环境不够优秀:TCP/IP通讯偶尔超时?不能接受
总之,如果你需要实时性不高、任务较耗时的系统间通讯与高并发异步处理时,MQ是个比较不错的选择。
MQ认知篇,就先写这么多把,之后有空我再把基础篇与进阶篇完成。工作去鸟~