摘要: 我花了一周的时间评估比较了一下各种消息队列产品,非常的有趣。我做这个事的动机是因为一个客户有一个很高性能需求。他们的消息信息突破了1百万个并发。目前他们使用的是SQL server,并不理想,我建议他们使用消息队列服务器。为了对一些相似的候选产品获得一个全面的但是粗浅的性能上的了解,我们它们放在一起做了个测试。我让每个消息产品各发送和接受1百万千条1K的消 息。测试准备的有些仓促,我并没有修改任何的配置,只是快速的看了一下它们的安装文档,安装好每种软件,然后就让它们做这些最简单的收发信息的操作。所以 这是一次真正的“开箱即装即用”的性能表现。我完全理解,这对那些初始配置十分保守的消息队列产品将 阅读全文
posted @ 2012-04-24 20:48 vivianC 阅读(262) 评论(0) 推荐(0) 编辑
摘要: 以下内容是从网上各处简单整理而来,因为前段时间自己一直在研究Thrift,把研究的一点资料分享给需要的同行中人!第一节RPC技术及实现简介首先思考一下分布式系统中的RPC (Remote Procedure Call)问题,一个完整的RPC模块需要可以分为三个层次· 服务层(service):RPC接口定义与实现· 协议层(protocol):RPC报文格式和数据编码格式· 传输层(transport):实现底层的通信(如socket)以及系统相关的功能(如事件循环、多线程)在实际的大型分布式系统中,不同的服务往往会使用不同的语言来实现,所以一般的RPC系统会提供 阅读全文
posted @ 2012-04-24 17:57 vivianC 阅读(503) 评论(0) 推荐(0) 编辑
摘要: 以下是我在公司内部分享的关于分布式日志收集系统的PPT内容,现在与大家分享,希望对于需要使用的人能够起到基本的入门作用或是了解!1.分布式日志收集系统:背景介绍许多公司的平台每天会产生大量的日志(一般为流式数据,如,搜索引擎的pv,查询等),处理这些日志需要特定的日志系统,一般而言,这些系统需要具有以下特征:(1) 构建应用系统和分析系统的桥梁,并将它们之间的关联解耦;(2) 支持近实时的在线分析系统和类似于Hadoop之类的离线分析系统;(3) 具有高可扩展性。即:当数据量增加时,可以通过增加节点进行水平扩展。2.分布式日志收集系统:Facebook Scribe主要内容(1)Scribe简 阅读全文
posted @ 2012-04-24 17:42 vivianC 阅读(440) 评论(0) 推荐(1) 编辑
摘要: 1. 介绍 Scribe是Facebook一个开源的实时分布式日志收集系统。它提高了大规模日志收集的可靠性和可扩展性。你可以在不同的节点上安装Scribe服务,然后这些服务会把收集到的信息发布到中心的服务集群上去。当中心服务不可得到时,本地的Scribe服务会暂时把收集到的信息存储到本地,等中心服务恢复以后再进行信息的上传。中心服务集群可以把收集到的信息写入本地磁盘或者分布式文件系统上,如hdfs,或者分发到另一层的Scribe服务集群上去。Scribe提供了一种无阻塞的thrift服务,底层依赖libevent库和thrift库的支持。2. 安装 安装的方法在https://gi... 阅读全文
posted @ 2012-04-24 17:40 vivianC 阅读(578) 评论(0) 推荐(0) 编辑
摘要: 第9章 指针9.1 指针是什么9.1.1 指针是一类数据类型的统称对于C语言来说,计算机的内存由连续的字节(byte)构成。这些连续的字节同样被连续地编上了号码以相互区别,这个号码就是所谓的地址(Address),如图9-1所示。图9-1 内存单元与地址指针(Pointer)是C语言中的一类数据类型的统称。这种类型的数据专门用来存储和表示内存单元的编号,以实现通过地址得以完成的各种运算。这样看来指针似乎就是地址,然而,事实上却并非如此。后面将会看到,地址只是指针内涵中的一部分,甚至只是一小部分内容而远非其全部。片面地把地址理解为指针的全部,永远学不好指针。为了使得语言具有广泛的适用性,C语言标 阅读全文
posted @ 2012-04-24 17:24 vivianC 阅读(265) 评论(0) 推荐(0) 编辑
摘要: ZeroMQ的想法和初衷是好的,让你用串行的思路写异步的消息处理程序。并且在此基础之上提炼出了常见的消息模式,让你写起程序来更加省心。库替你完成了异步消息发送、故障恢复、甚至连磁盘的buffer都提供了。不可谓不全面。同时提供的接口非常简洁。但是,用很少的接口封装复杂的逻辑通常的结果就是:当你的业务场景跟库的设计者设想的业务场景一样时,你回很爽。但当业务有差别,或者对细节有要求时,你会很惨。用trick能解决已经算是较好的情况了。欺骗性质的封装。当你zmq_connect返回成功的时候,不要高兴,这并不意味着你真的创建好链接了,因为即使你连一个根本没人监听的地址也会成功,为什么呢,因为Zero 阅读全文
posted @ 2012-04-24 17:17 vivianC 阅读(775) 评论(0) 推荐(0) 编辑
摘要: ZeroMQ是一个很有个性的项目,它原来是定位为“史上最快消息队列”,所以名字里面有“MQ”两个字母,但是后来逐渐演变发展,慢慢淡化了消息队列的身影,改称为消息内核,或者消息层了。从网络通信的角度看,它处于会话层之上,应用层之下,有了它,你甚至不需要自己写一行的socket函数调用就能完成复杂的网络通信工作。借用官方的例子:客户端(发送N个“Hello”消息到服务端,接受回应):12345678910111213141516171819202122232425262728293031323334353637//// Hello World client// Connects REQ socke 阅读全文
posted @ 2012-04-24 17:15 vivianC 阅读(523) 评论(0) 推荐(0) 编辑
摘要: 在需要并行化处理数据的时候,采用消息队列通讯的方式来协作,比采用共享状态的方式要好的多。Erlang ,Go 都使用这一手段来让并行任务之间协同工作。最近读完了ZeroMQ的Guide。写的很不错。前几年一直有做类似的工作,但是自己总结的不好。而 ZeroMQ 把消息通讯方面的模式总结的很不错。ZeroMQ 并不是一个对 socket 的封装,不能用它去实现已有的网络协议。它有自己的模式,不同于更底层的点对点通讯模式。它有比 tcp 协议更高一级的协议。(当然 ZeroMQ 不一定基于 TCP 协议,它也可以用于进程间和进程内通讯。)它改变了通讯都基于一对一的连接这个假设。ZeroMQ 把通讯 阅读全文
posted @ 2012-04-24 17:10 vivianC 阅读(366) 评论(0) 推荐(0) 编辑
摘要: Apache 的开源项目 hadoop, 作为一个分布式存储和计算系统,已经被业界广泛应用。很多大型企业都有了各自基于 hadoop 的应用和相关扩展。当 1000+ 以上个节点的 hadoop 集群变得常见时,集群自身的相关信息如何收集和分析呢?针对这个问题, Apache 同样提出了相应的解决方案,那就是 chukwa。概述chukwa 的官方网站是这样描述自己的: chukwa 是一个开源的用于监控大型分布式系统的数据收集系统。这是构建在 hadoop 的 hdfs 和 map/reduce 框架之上的,继承了 hadoop 的可伸缩性和鲁棒性。Chukwa 还包含了一个强大和灵活的工具 阅读全文
posted @ 2012-04-24 10:22 vivianC 阅读(3180) 评论(0) 推荐(0) 编辑
摘要: Chukwa 是什么? 在印度神话中Chukwa是一只最古老的龟。它支撑着世界。在它的背上还支撑着一种叫做Maha-Pudma的大象,在大象的背上顶着这个地球。呵呵,大象?Hadoop?不难理解为什么在Hadoop中的这个子项目叫做Chukwa了,或许Chukwa的其中一位开发者是印度人?呵呵,我瞎猜的,神话中的Chukwa的,貌似是这样的,如图所示:Chukwa是由Yahoo贡献,基于Hadoop的大集群监控系统,可以用他来分析和收集系统中的数据(日志)。Chukwa运行HDFS中存储数据的收集器和MapReduce框架之上,并继承了Hadoop的可扩展性和鲁棒性, Chukwa使用MapR 阅读全文
posted @ 2012-04-24 10:20 vivianC 阅读(585) 评论(0) 推荐(0) 编辑