Hermes:基于Kafka的快速可靠的消息代理

hermes

Hermes是基于Kafka的消息传递框架,拥有Kafka快速的、可扩展的特点,提供较高的吞吐量,以及一对多的订阅方式.

为什么选择hermes

  • 通过创建一个HTTP终端来发布和订阅消息,可以与任何技术整合。
  • Hermes是可靠的。不丢失任何一个信息使我们的首要任务,即使是所有的事情都发生问题也不会丢失信息。
  • 一切都可以测量,把这些都收集在你的存储容器内。
  • Hermes是可推断的,确保最大的响应时间,可以很容易地提供SLA。
  • 通过跟踪消息,你总是能知道消息是在什么时候发送以及经过系统发送的整个流程。
  • 通过Hermes控制台很容易管理主题和订阅。

得到以上这些在亚微秒的开销要小于纯粹的Kafka(包括网络传输时间)。

快速启动

下面将演示如何快速部署hermes环境,创建主题以及订阅服务。

先决条件

为了让这次的演示可以顺利进行,需要安装以下工具

  • Vagrant 1.7.3+
  • VirtualBox(4.0.x、4.1.x、4.2.x、4.3.x、5.0.x)
  • curl
  • 运行消息接收服务

设置环境

作为结构总体描述,hermes需要同时启动 Kafka 和 Zookeeper,为了是这个方便一点,我们准备了一个不定向文件。

如果你想运行特定版本的hermes,只需要简单地检出一个标签:

检查设置

如果系统正在运行,你应该在hermes控制台看到浏览器访问的公网IP: http://10.10.10.10/ 开头。

创建组和标题

现在可以创建一个主题来发布消息了。在hermes中,所有发布到topic的消息都需要先聚合成组。所以必须先创建一个组,让我们命名为com.example.events

  • 指向控制台;
  • 点击蓝色加按钮;
  • 进入名称为com.examplr.events的组;
  • 所有其他信息都是必须的,但现在只是输入。

到这里,你的组已经在一个组列表里面了。现在让我们为我们的组添加新的点击主题。

  • 点击组头部(直接链接到com.example.events组);
  • 点击蓝色加按钮;
  • 进入为 clicks 的主题;
  • 输入一些描述;
  • 更改的内容类型为JSON。简单起见,我们不想增加Avro模式。

发布和接收消息

为了接收已经发送到主题的消息,你必须创建一个订阅。这就告诉了hermes要把发布到主题的消息发送到哪里。你可以在一个主题下面进行多个订阅。

让我们创建一个clicks-receiver订阅。

  • 点击消息头(直接链接到com.example.events.clicks.group);
  • 点击蓝色加按钮;
  • 设置消息将被发送的端点,在这个例子中我们可以使用 http://requestb.in/1isy54g1;
  • 输入一些描述和相关数据。

现在是大结局的时候了。让我们发送一段消息到我们的主题(默认端口是8080),

(第一次发布的内容,你可能会看到408个请求超时状态:大量的机器需要热身,这里只是显示消息重试)。

祝贺你!该消息应该被传递到您的服务,也可以通过这个链接查看:http://requestb.in/1isy54g1?inspect.

停止服务

停止虚拟机的运行

再次运行

销毁VM

文档

hermes是一个消息代理服务之间的通信,大大简化了使用发布/订阅模式。这是HTTP端暴露给本地,其余消息发布并将消息推给用户端,底层是ApacheKafka在使用。

简单易用

hermes使用http协议作为默认的通信协议。这意味着发布或接收信息的唯一前提就是可以发送或者使用HTTP请求。你可以使用hermes连接使用不同技术编写的服务。没有什么比生成或者接收HTTP流量更容易。

hermes关心的是消息重发,使用适应算法来探索哪个对于订阅者来说是最佳接收方式。

执行

hermes被设计成尽可能减小Kafka的开销,并保持亚毫秒级别的响应。表现为主要依赖潜在的Kafka集群,被设计成易扩展的,每个组件都是无状态的。

可靠性

hermes被设计成用来处理敏感数据,需要交付最高担保。使用内部缓存Hermes可以操作并接受那些Kafka无法接受的通信量。这也保证了最大的响应时间,即使Kafka有麻烦。因为Kafka只是一个简单的HTTP服务,有时要比Kafka更容易在集群上运行。

开发资源

协议

Hermes遵循Apache 2.0开源协议发布。

官方网站:http://hermes.allegro.tech/

2 收藏

资源整理者简介:王涛

java程序员,极客爱好者 个人主页 · 贡献了12个资源 · 1 ·  


直接登录

推荐关注

按分类快速查找

关于资源导航
  • 伯乐在线资源导航收录优秀的工具资源。内容覆盖开发、设计、产品和管理等IT互联网行业相关的领域。目前已经收录 1439 项工具资源。
    推送伯乐头条热点内容微信号:jobbole 分享干货的技术类微信号:iProgrammer