阅读更多

14顶
2踩

开源软件
淘宝开发团队近日开源了消息中间件Metamorphosis。

Metamorphosis是一个高性能、高可用、可扩展的分布式消息中间件,思路起源于LinkedIn的Kafka,但并不是Kafka的一个Copy。具有消息存储顺序写、吞吐量大和支持本地和XA事务等特性,适用于大吞吐量、顺序消息、广播和日志数据传输等场景,目前在淘宝和支付宝有着广泛的应用。

Metamorphosis的特性如下:

  • 生产者、服务器和消费者都可分布
  • 消息存储顺序写
  • 性能极高,吞吐量大
  • 支持消息顺序
  • 支持本地和XA事务
  • 客户端pull,随机读,利用sendfile系统调用,zero-copy ,批量拉数据
  • 支持消费端事务
  • 支持消息广播模式
  • 支持异步发送消息
  • 支持http协议
  • 支持消息重试和recover
  • 数据迁移、扩容对用户透明
  • 消费状态保存在客户端
  • 支持同步和异步复制两种HA
  • 支持group commit
现在该中间件已开源,项目地址:http://metaq.taobao.org/

源码:http://code.taobao.org/p/metamorphosis/src/

14
2
评论 共 33 条 请登录后发表评论
33 楼 790318448 2013-04-18 10:57
svn
没有密码怎么才能下下来啊
32 楼 ljmomo 2013-01-08 22:23
[2013-01-08 13:08:53,812] INFO Session establishment complete on server 10.66.8.195/10.66.8.195:2181, sessionid = 0x13c188ab60b0003, negotiated timeout = 30000 (org.apache.zookeeper.ClientCnxn)
[2013-01-08 13:08:53,812] INFO zookeeper state changed (SyncConnected) (org.I0Itec.zkclient.ZkClient)
[2013-01-08 13:08:53,890] WARN Begin receiving broker changes for topic test,broker ids:{} (com.taobao.metamorphosis.client.producer.ProducerZooKeeper)
[2013-01-08 13:08:53,890] WARN End receiving broker changes for topic test (com.taobao.metamorphosis.client.producer.ProducerZooKeeper)      我不是专家,我仅仅做过。  在你启动meta server 的时候 先要启动 zookeepr,消息生产者要配置好zookeeper。私聊?我一般晚上有时间。
31 楼 adolf506 2013-01-08 13:12
今天重新下载了最新版本taobao-metaq-2.1.3.1.tar.gz  在服务器上部署执行结果:
2013-01-07 21:09:16,078 [INFO] [main] - Starting metamorphosis server...
2013-01-07 21:09:16,083 [INFO] [main] - Start metamorphosis server successfully
2013-01-07 21:09:16,084 [INFO] [main] - unstarted plugin:samsa
2013-01-07 21:09:16,084 [INFO] [main] - unstarted plugin:gregor
2013-01-07 21:09:16,084 [INFO] [main] - unstarted plugin:metaslave
2013-01-07 21:09:16,084 [INFO] [main] - unstarted plugin:timetunnel
2013-01-07 21:09:16,084 [INFO] [main] - unstarted plugin:notify
2013-01-07 21:09:16,084 [INFO] [main] - unstarted plugin:jettyBroker
2013-01-07 21:09:18,825 [INFO] [Timer-0] - New Quartz update(s) found: 2.1.6 [http://www.terracotta.org/kit/reflector?kitID=default&pageID=QuartzChangeLog]
我客户端调用后:[2013-01-08 13:08:51,546] INFO Opening socket connection to server /10.66.8.195:2181 (org.apache.zookeeper.ClientCnxn)
[2013-01-08 13:08:53,812] WARN SecurityException: java.lang.SecurityException: 无法定位登录配置 occurred when trying to find JAAS configuration. (org.apache.zookeeper.client.ZooKeeperSaslClient)
[2013-01-08 13:08:53,812] INFO Client will not SASL-authenticate because the default JAAS configuration section 'Client' could not be found. If you are not using SASL, you may ignore this. On the other hand, if you expected SASL to work, please fix your JAAS configuration. (org.apache.zookeeper.client.ZooKeeperSaslClient)
[2013-01-08 13:08:53,812] INFO Socket connection established to 10.66.8.195/10.66.8.195:2181, initiating session (org.apache.zookeeper.ClientCnxn)
[2013-01-08 13:08:53,812] INFO Session establishment complete on server 10.66.8.195/10.66.8.195:2181, sessionid = 0x13c188ab60b0003, negotiated timeout = 30000 (org.apache.zookeeper.ClientCnxn)
[2013-01-08 13:08:53,812] INFO zookeeper state changed (SyncConnected) (org.I0Itec.zkclient.ZkClient)
[2013-01-08 13:08:53,890] WARN Begin receiving broker changes for topic test,broker ids:{} (com.taobao.metamorphosis.client.producer.ProducerZooKeeper)
[2013-01-08 13:08:53,890] WARN End receiving broker changes for topic test (com.taobao.metamorphosis.client.producer.ProducerZooKeeper)
Type a message to send:
as
Exception in thread "main" com.taobao.metamorphosis.exception.MetaClientException: send message failed
at com.taobao.metamorphosis.client.producer.SimpleMessageProducer.send0(SimpleMessageProducer.java:447)
at com.taobao.metamorphosis.client.producer.SimpleMessageProducer.sendMessageToServer(SimpleMessageProducer.java:179)
at com.taobao.metamorphosis.client.producer.SimpleMessageProducer.sendMessage(SimpleMessageProducer.java:156)
at com.taobao.metamorphosis.client.producer.SimpleMessageProducer.sendMessage(SimpleMessageProducer.java:566)
at com.taobao.metamorphosis.example.Producer.main(Producer.java:54)
Caused by: com.taobao.metamorphosis.exception.MetaClientException: There is no aviable partition for topic test,maybe you don't publish it at first?
at com.taobao.metamorphosis.client.producer.RoundRobinPartitionSelector.getPartition(RoundRobinPartitionSelector.java:44)
at com.taobao.metamorphosis.client.producer.ProducerZooKeeper.selectPartition(ProducerZooKeeper.java:407)
at com.taobao.metamorphosis.client.producer.SimpleMessageProducer.selectPartition(SimpleMessageProducer.java:204)
at com.taobao.metamorphosis.client.producer.SimpleMessageProducer.send0(SimpleMessageProducer.java:413)

问题,我也修改了topic。ini文件,服务器topic添加配置后重启了,客户端也public了,为何还报错,专家指教下,还有最新包中jdk知道了固定位置,需要修改下,谢谢
30 楼 ljmomo 2013-01-08 08:50
启动时候[INFO] [Thread-3] 01-06 17:52:18,161 [MetaMorphosisBroker] - Stop metamorphosis server successfully
准备启动服务器,配置为:MetaConfig [brokerId=0, dataPath=/root/meta, deletePolicy=delete,168, diamondZKDataId=metamorphosis.zkConfig, diamondZKGroup=DEFAULT_GROUP, getProcessThreadCount=80, hostName=null, maxSegmentSize=1073741824, maxTransferSize=1048576, numPartitions=1, putProcessThreadCount=80, serverPort=8123, slaveGroup=meta-slave-group, slaveId=-1, statTopicSet=[adolf-test, test], topicDeletePolicy=, topics=[adolf-test, test], unflushInterval=10000, unflushThreshold=1000, zkConfig=com.taobao.metamorphosis.utils.ZkUtils$ZKConfig@5de9ac4]     这的确是没有正常启动,正常启动会有  start metamorphosis server successfully这提示。估计是你的配置文件配置的有问题。 你用 svn 把这个 svn co http://code.taobao.org/svn/metamorphosis/trunk metamorphosis 源码弄下来 里面有配置文件的说明。你仔细看看。如果不行再回复我。
29 楼 adolf506 2013-01-07 10:19
ljmomo 写道
java.lang.SecurityException: 无法定位登录配置 occurred when trying to find JAAS configuration. (org.apache.zookeeper.client.ZooKeeperSaslClient)
我Producer 类启动的时候一直有这个异常,所以导致Caused by: com.taobao.metamorphosis.exception.MetaClientException: There is no aviable partition for topic test,maybe you don't publish it at first? 后续这个方法,
专家们怎么搞定?     可能是的分区没有配置正确,也可能是你的meta server 没有启动,认真检查你的配置,以及你的服务是否正常启动。


启动时候[INFO] [Thread-3] 01-06 17:52:18,161 [MetaMorphosisBroker] - Stop metamorphosis server successfully
准备启动服务器,配置为:MetaConfig [brokerId=0, dataPath=/root/meta, deletePolicy=delete,168, diamondZKDataId=metamorphosis.zkConfig, diamondZKGroup=DEFAULT_GROUP, getProcessThreadCount=80, hostName=null, maxSegmentSize=1073741824, maxTransferSize=1048576, numPartitions=1, putProcessThreadCount=80, serverPort=8123, slaveGroup=meta-slave-group, slaveId=-1, statTopicSet=[adolf-test, test], topicDeletePolicy=, topics=[adolf-test, test], unflushInterval=10000, unflushThreshold=1000, zkConfig=com.taobao.metamorphosis.utils.ZkUtils$ZKConfig@5de9ac4]

一直到这就不动了,我用的是64位centos,telnet上去stats还是正常的,这是否启动异常了?
28 楼 ljmomo 2013-01-07 08:55
java.lang.SecurityException: 无法定位登录配置 occurred when trying to find JAAS configuration. (org.apache.zookeeper.client.ZooKeeperSaslClient)
我Producer 类启动的时候一直有这个异常,所以导致Caused by: com.taobao.metamorphosis.exception.MetaClientException: There is no aviable partition for topic test,maybe you don't publish it at first? 后续这个方法,
专家们怎么搞定?     可能是的分区没有配置正确,也可能是你的meta server 没有启动,认真检查你的配置,以及你的服务是否正常启动。
27 楼 adolf506 2013-01-06 11:27
java.lang.SecurityException: 无法定位登录配置 occurred when trying to find JAAS configuration. (org.apache.zookeeper.client.ZooKeeperSaslClient)
我Producer 类启动的时候一直有这个异常,所以导致Caused by: com.taobao.metamorphosis.exception.MetaClientException: There is no aviable partition for topic test,maybe you don't publish it at first? 后续这个方法,
专家们怎么搞定?
26 楼 p&g 2012-03-27 16:58
直接右键checkout下不了, 不是这个路径吗?
theoffspring 写道
qtlkw 写道
忽悠吧,svn怎么下不下来来着?download不下来就别叫开源好了,有标题党嫌疑!

你会用svn吗?

svn co http://code.taobao.org/svn/metamorphosis/trunk metamorphosis

在命令行里运行一下就可以了。前提是你得装svn客户端

25 楼 dennis_zane 2012-03-26 18:25
FQ_kevin 写道
我想把消息 存储在数据库 要怎么实现?

存到数据库本质上也是落到磁盘。不过meta的需求决定了它不会存储在数据库。如果你想存储消息到数据库,可以用activemq,hornetq等,他们有提供jdbc存储。
24 楼 FQ_kevin 2012-03-26 16:54
我想把消息 存储在数据库 要怎么实现?
23 楼 dennis_zane 2012-03-23 10:18
FQ_kevin 写道
使用自带的例子怎么跑不起来 这个地方抛出勒
throw new MetaClientException("There is no aviable partition for topic " + topic+ ",maybe you don't publish it at first?")

可能你没有在服务器配置topic
22 楼 dennis_zane 2012-03-23 10:18
codeman007 写道
不太明白
LinkedIn的Kafka不是自己也有java版实现吗
http://www.54chen.com/java-ee/linkedin-kafka-usage.html
那淘宝这个跟他有什么区别,还是在Kafka基础上包装了一层

谁说kafka有java实现的?那只是个java客户端,你可以在java里调用它罢了。
21 楼 codeman007 2012-03-23 10:13
不太明白
LinkedIn的Kafka不是自己也有java版实现吗
http://www.54chen.com/java-ee/linkedin-kafka-usage.html
那淘宝这个跟他有什么区别,还是在Kafka基础上包装了一层
20 楼 FQ_kevin 2012-03-21 23:30
使用自带的例子怎么跑不起来 这个地方抛出勒
throw new MetaClientException("There is no aviable partition for topic " + topic+ ",maybe you don't publish it at first?")
19 楼 chenzehe 2012-03-15 08:43
Jen 写道
chenzehe 写道
那Notify是干啥的

notify是我们组另一个消息中间件,跟meta的使用场景有所不同,即将开源

只听过淘宝使用notify,没听过meta,等motify开源了要广播下哈
18 楼 dennis_zane 2012-03-14 17:34
可以用我的github分支,文档还在补充

https://github.com/killme2008/Metamorphosis
17 楼 hhhhh 2012-03-14 15:33
有些文件编码不是utf8,
16 楼 theoffspring 2012-03-14 14:17
qtlkw 写道
忽悠吧,svn怎么下不下来来着?download不下来就别叫开源好了,有标题党嫌疑!

你会用svn吗?

svn co http://code.taobao.org/svn/metamorphosis/trunk metamorphosis

在命令行里运行一下就可以了。前提是你得装svn客户端
15 楼 qtlkw 2012-03-14 13:38
忽悠吧,svn怎么下不下来来着?download不下来就别叫开源好了,有标题党嫌疑!
14 楼 jieke456 2012-03-13 23:20
现在国人也开始走开源的路线了 

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • metaq消息中间件服务端、客户端资源汇集

    Metamorphosis是淘宝开源的一个Java消息中间件,他类似apache-kafka,但不是一个简单的山寨拷贝,而是做了很多改进和优化,项目的主页在淘蝌蚪上。服务端、客户端、javadoc都包含在内。

  • 淘宝消息中间件Metamorphosis开源

    Metamorphosis是一个高性能、高可用、可扩展的分布式消息中间件,类似于LinkedIn的Kafka,具有消息存储顺序写、吞吐量大和支持本地和XA事务等特性,适用于大吞吐量、顺序消息、广播和日志数据传输等场景,在淘宝和...

  • 淘宝开源分布式消息中间件Metamorphosis

    最近,淘宝开源了分布式消息中间件 Memorphosis项目 ,它是Linkedin开源MQ——Kafka的Java版本,针对淘宝内部应用做了定制和优化。 据了解,Metamorphosis(以下简称Meta)的设计原则包括: 消息都是持久的,...

  • 淘宝开源消息中间件-Metamorphosis

    淘宝开源消息中间件-Metamorphosis。 Gecko随之一并开源。 Oschina主页: http://www.oschina.net/p/metamorphosis

  • Metamorphosis分布式消息中间件

     Metamorphosis是淘宝开源的一个Java消息中间件。关于消息中间件,你应该听说过JMS(1)规范,以及一些开源实现,如ActiveMQ和HornetQ等。Metamorphosis也是其中之一。  Metamorphosis是一款完全的队列模型消息...

  • python消息中间件有哪些_消息中间件选型

    一、 分布式系统消息通信技术简介分布式系统消息通信技术主要包括以下几种:1.RPC(Remote Procedure Call Protocol).一般是C/S方式,同步的,跨语言跨平台,面向过程2.CORBA(Common Object Request Broker ...

  • python 消息中间件_消息中间件

    一、 分布式系统消息通信技术简介分布式系统消息通信技术主要包括以下几种:1.RPC(Remote Procedure Call Protocol).一般是C/S方式,同步的,跨语言跨平台,面向过程2.CORBA(Common Object Request Broker ...

  • 分布式消息中间件-Rocketmq

    消息中间件主要是实现分布式系统中解耦、异步消息、流量销锋、日志处理等场景,后面我也会结合一些场景进行探讨。现在生产中用的最多的消息队列有Activemq,rabbitmq,kafka,rocketmq等。  不过这个题目写的有点...

  • 消息队列中间件 MetaQ/RocketMQ

    简介—— 消息队列中间件 MetaQ/RocketMQ中间件 MetaQ 是一种基于队列模型的消息中间件,MetaQ 据说最早是受 Kafka 的影响开发的,第一版的名字 "metamorphosis",是奥地利作家卡夫卡的名作——《变形记》。...

  • 分布式开发--分布式消息中间件

    其中,服务器之间消息通讯这种功能广泛应用于这些中间件中,于是,将这种面向消息的中间件( Message Oriented Middleware , MOM )抽象出来,形成通用的消息中间件,成为业内主流。目前消息中间件的标准主要有...

  • 淘宝开源MQ——metamorphosis的github分支

    上周我在淘宝的同事开源了一个消息中间件metamorphosis,放在了淘蝌蚪上。我从淘蝌蚪的svn上fork了一个github的分支,放在了这里:1.主体工程:https://github.com/killme2008/Metamorphosis 2.示例项目:...

  • 分布式消息中间件 MetaQ (庄晓丹)

    MetaQ(全称Metamorphosis)是一个高性能、高可用、可扩展的分布式消息中间件,思路起源于LinkedIn的Kafka,但并不是Kafka的一个Copy。MetaQ具有消息存储顺序写、吞吐量大和支持本地和XA事务等特性,适用于大吞吐量...

  • MQ消息中间件了解

    MQ 消息中间件 Rabbit MQ AMQP协议 1、交换器 Exchange Direct(直连)数据的分发,交给不同的队列来处理 通过绑定路由键,生产者发送消息到MQ的时候提供routing key(即路由键),指定发送给某个队列,或者说是给...

  • 消息队列中间件记录

    消息队列有无数开源实现,一般没必要自己实现。zmq也好rabbitmq也好甚至redis也好,找一个合适的装上用就行 就好像rdbms/nosql一样。 技术都是解决问题的,消息队列解决的是将突发大量请求转换为后端能承受的队列...

  • 【RabbitMQ消息中间件】1.RabbitMQ简介

    遵循Message Queue规则开发出来的,具有消息队列特点的产品,都可以称之为“消息中间件”(JMS消息服务器)。目前业内有很多消息中间件产品,例如Apache出品的“ActiveMQ”和“Kafka”(分布式发布订阅消息系统)、...

  • 主流消息中间件 SOA\ESB

    IBM Oracle MicroSoft SoftWare AG Tibco 这几家的ESB占市场份额较高 (1)IBM WebSphere MQ (也称MQSeries)... (2)ActiveMQ JMS消息服务器 : http://www.oschina.net/p/activemq ActiveMQ 是Ap

  • 《淘宝消息中间件概述》2015-07-11

    1. 消息中间件简介 目前主要提供了无序事务性高性能消息队列Notify与有序高性能消息队列RocketMQ(MetaQ)两大类产品,目前RocketMQ已经开源(https://github.com/alibaba/RocketMQ),产品被包括核心交易在内的几乎...

  • node-v0.10.31-sunos-x86.tar.gz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

  • node-v0.10.44-linux-x86.tar.gz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

  • 30KW三相PFC充电桩充电模块项目开发设计方案CCS源码AD原理图bom测试报告

    30KW三相PFC充电桩项目开发设计方案CCS源码AD原理图bom测试报告

Global site tag (gtag.js) - Google Analytics