高吞吐的轻量级发布-订阅消息系统。
参考链接一: http://www.iteblog.com/archives/1420
-
消息队列技术
消息队列提供一个异步通信协议,这意味着该消息的发送者和接收者不需要在同一时间与消息队列进行交互。消息被放入队列保存,直到接收方处理他们。消息队列对于一条消息中传输的数据大小有显示或隐式的限制,这样队列中才能保持良好的的消息数量。
一般我们把消息的发送者称为生产者,消息的接收者称为消费者;注意定义中的那两个字“异步”,通常生产者的生产速度和消费者的消费速度是不相等的;如果两个程序始终保持同步沟通,那势必会有一方存在空等时间;如果两个程序一持续运行的话,消费者的平均速度一定要大于生产者,不然队列囤积会越来越多;当然,如果消费者没有时效性需求的话,也可以把消息囤积在队列中,集中消费。
常见的消费队列产品根据开源与否又可分为两类:
专有软件:IBM WebSphere MQ,MSMQ…
开源软件:ActiveMQ、RabbitMQ、Kafka…
-
JMS与AMQP 规范
常见的消息系统协议:
1>STOMP 2>AMQP 3>HTTP 4>类似于MEMCACHE协议 5> 自定义格式
参考链接二: http://www.cnblogs.com/bbgasj/p/4176915.html
3. 分布式应用 间 交换信息、异构网络环境下的 分布式应用
分布式应用程序是指:应用程序分布在不同计算机上,通过网络来共同完成一项任务。通常为服务器/客户端模式。
4. messagingsystem 消息系统 ?
5. kafka一个应用例子:日志系统?? 运营维护 调试手段。
参考链接三: http://blog.sina.com.cn/s/blog_6ea2cfe401017f9d.html
日志系统的主要解决的问题是记录系统的运行轨迹,在这个基础上,进行跟踪分析错误,审计系统运行流程。在高可靠的系统中,是不允许系统运行终止的。日志系统的内容可以分为2类,一类可是业务级别的日志,主要供终端用户来分析他们业务过程;另一类是系统级别的日志,供开发者维护系统的稳定。
6.插曲:Jsp (Java Server Pages) java服务器页面;服务器端语言, 只是JAVA与HTML在页面的运用,也就是页面含有JAVA语言的网页就是JSP网页,主要用来制作网站后台的技术(但现在一般不使用了,2014年起基本都开始使用模板引擎技术如velocity等)。 动态网页技术标准,在传统的网页HTML(标准通用标记语言的子集)文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件,后缀名为(*.jsp)。用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。
Java Servlet是JSP的技术基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成。
7. Jms(Java Message Service,JMS)
参考链接五: http://blog.csdn.net/lizhitao/article/details/47723105
用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。
JMS规范目前支持两种消息模型:点对点(pointto point, queue)和发布/订阅(publish/subscribe,topic)。
传统企业型消息队列ActiveMQ遵循了JMS规范,实现了点对点和发布订阅模型,但其他流行的消息队列RabbitMQ、Kafka并没有遵循老态龙钟的JMS规范,是通过什么方式实现消费负载均衡、多订阅呢?
8.kafka
由于优先考虑吞吐,更加适合大数据量的消息收集和处理,比如日志分析、用户行为信息实时报表、集群状态信息收集和分析。
9. ZooKeeper ??
分布式服务框架Zookeeper --管理分布式环境中的数据
数据管理问题。如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。
即,其实实现kafka分布式等相关功能时,ZooKeeper扮演者期间所有数据管理的工作。
10.负载均衡(load balancing)
负载平衡服务通常是由专用软体和硬件来完成。
11. 消息中间件