消息传送机制基础
近年来,系统的复杂性和先进性不断增长,对系统灵活性,可靠性,可伸缩性的要求更高,消息传送机制可以作为解决这种复杂问题的一种方式。
jms发展:1999年推出,2002年推出jms1.1
1.消息传送的优点:
- 异构集成:可以在完全不同的平台上实现应用程序和系统的服务调用,历史上的解决方案:FTP,人力拷贝,通过数据库共享数据,RPC,WebService(可靠性欠缺)
- 缓解系统瓶颈:只要某个进程跟不上对它访问请求的速度,就会产生瓶颈问题,例子:向漏斗中注水。使用消息传送机制时消息会先发送到一个消息传送系统,该系统将请求分发给多个消息侦听器组件
- 提高可伸缩性:引入多个消息接收者,以便并发处理更多的请求,但是要注意,能将中间件层扩展到什么程度,始终受到数据库这种实质性的限制
- 提高最终用户生产率:用户提起一个请求,并立即得到响应表示请求已被接收,用户此时可以做其他工作,当请求处理完毕,处理结果再回传给用户(用户图形界面,支付系统的异步调用),不过,它增加了系统的复杂性,好的架构师会始终寻找机会,在系统的不同方面采用异步形式(用户界面和系统之间,系统内部各组件之间)
- 体系结构灵活性和敏捷性:抽象和去耦合使得业务变化情况下,能快速和容易地替换组件和子系统
2.企业消息传送
SOA(Service-Oriented Architecture)面向服务架构的推出,促生了企业服务总线(Enterprise Service Bus)的新型消息传送产品
集中式体系结构:
消息服务器可以使一个分布式集群
分散式IP组播结构:
混合体系结构
3.消息传送模型
消息传送客户端称为jms客户端,消息传送系统称为jms提供者
- 点对点模型(p2p):允许jms客户端通过队列同步/异步发送/接收消息,基于拉取或基于轮询,消息生产者称为发送者(sender),消息消费者(receiver)称为接收者,它允许多个接收者侦听同一队列,但只有一个接收者接收消息
- 发布/订阅模型(Pub/Sub):消息会被发送到主题(topic)中,生产者称为发布者(publisher),消费者称为订阅者(subscriber),基于推送模型,消息自动向消费者广播
4.jms API
分为三部分,公共api,点对点api,发布/订阅api
- 公共api
- 点对点
3.发布/订阅
5.RPC和JMS
1.远程过程调用(Remote Procedure Call)最成功的领域是构建3层或n层的应用程序,表示层和业务逻辑层通信,访问数据持久层
特点:同步,紧密耦合
所带来的缺点:同步降低了调用的效率,紧密耦合使得增加一个部件变得困难,子系统中出现的故障会导致整个系统的失效
2.Jms特点:异步,松散耦合
所带来的优点:异步方式无须等待响应;通过p2p和pub/sub模型以供集成灵活性;子系统故障不会影响整体可用性;“保存并转发(store-and-forward)”的机制:当消费者不可用时,消息服务器会将消息存入持久存储器中,当消费者恢复可用时,再把这些错过的消息传给它们,它保证了即使发生局部故障,预定消费者最终也会接收到这条消息。