Metrics可以为你的代码的运行提供无与伦比的洞察力。作为一款监控指标的度量类库,它提供了很多模块可以为第三方库或者应用提供辅助统计信息, 比如Jetty, Logback, Log4j, Apache HttpClient, Ehcache, JDBI, Jersey, 它还可以将度量数据发送给Ganglia和Graphite以提供图形化的监控。
Metrics提供了Gauge、Counter、Meter、Histogram、Timer等度量工具类以及Health Check功能。
spring-integration-kafka是Spring官方提供的一个Spring集成框架的扩展,用来为使用Spring框架的应用程序提供Kafka框架的集成。
当前spring-integration-kafka仅提供Kafka 0.8的集成,低版本的Kafka并不支持。
新的文章介绍了代码实践: Kafka和Spring集成实践
spring-integration-kafka仅仅支持两个组件,分别对应Producer和 High Level Consumer。 它们分别是:
其它的Kafka的特性比如Simple Consumer API。 所以使用spring-integration-kafka你并不能指定特定的offset来读取数据,或者进行更灵活的定制。
总的来说,spring-integration-kafka还处于很低级的阶段,和整体的Spring framework/Spring Integration Framework还不是很完美的整合。如果你现在就使用它,可能在开发的过程中会遇到些问题。
编译自官方文档
Apache Kafka是一个分布式消息发布订阅系统。它最初由LinkedIn公司基于独特的设计实现为一个分布式的提交日志系统( a distributed commit log),,之后成为Apache项目的一部分。Kafka系统快速、可扩展并且可持久化。它的分区特性,可复制和可容错都是其不错的特性。
Apache Kafka与传统消息系统相比,有以下不同:
它将消息持久化到磁盘,因此可用于批量消费,例如ETL,以及实时应用程序。
First let's review some basic messaging terminology:
首先来了解一下Kafka所使用的基本术语:
听起来和JMS消息处理差不多?
让我们站的高一点,从高的角度来看,Kafka集群的业务处理就像这样子:
Client和Server之间的交流通过一条简单、高性能并且不局限某种开发语言的TCP协议。除了Java Client外,还有非常多的其它编程语言的Client。
Apache Beach (ab)是Apache自带的一个性能测试工具,专门用来测试网站的性能, 不仅限于Apache web服务器。
它可以同时模拟多个并发请求,测试Web服务器的最大承载压力,同时也可以根据Apache Bench提供的测试结果对服务器性能参数进行调整。它可以记录测试数据,其它工具比如Gnuplot可以利用测试数据进行分析。它也可以提供一个summary,可以直观显示当前测试的web服务器的性能。
Disruptor是一个高性能的用于线程间消息处理的开源框架。它的目标就是快.
我们知道,java.util.concurrent.ArrayBlockingQueue 是一个非常优秀的有界队列实现。Disruptor与之相比,性能更加的优秀。
完整的性能报告在这里.
Disruptor内部使用了RingBuffer,它是Disruptor的核心的数据结构。和其它的RingBuffer实现不同,Disruptor没有尾指针。这样实现是经过深思熟虑的,你可以看这篇文档了解其细节。
更多的参考资料请参照官方文档以及并发编程网上翻译的一些文章。
本文主要参考Disruptor入门这篇文章。
本文的代码已全部放在github上。