04 2012 档案

摘要:“文件存储要选用B+树这样的数据结构”——没记错的话,这是严蔚敏那本数据结构书上的一句结论。不知道是我没细看还是她没细讲,反正当时纯粹应试地记了这么个结论。不求甚解终究不是一个好的学习态度,一直以来我都没有细想过这个事情,直到看到了这篇博文http://blog.csdn.net/v_JULY_v/article/details/6530142。此文信息量很大,值得mark下来慢慢精读。今天就暂记一下关于磁盘文件存储选用B+ tree这一点以前没深究过的问题。毕竟,好记性不如烂笔头,虽然这篇里面ctrl-v担当了比较多的任务……另一个比较有趣的收获是终于知道没有B减树这个东西了。以前老看到B- 阅读全文
posted @ 2012-04-27 19:23 vivianC 阅读(1583) 评论(0) 推荐(0)
摘要:我花了一周的时间评估比较了一下各种消息队列产品,非常的有趣。我做这个事的动机是因为一个客户有一个很高性能需求。他们的消息信息突破了1百万个并发。目前他们使用的是SQL server,并不理想,我建议他们使用消息队列服务器。为了对一些相似的候选产品获得一个全面的但是粗浅的性能上的了解,我们它们放在一起做了个测试。我让每个消息产品各发送和接受1百万千条1K的消 息。测试准备的有些仓促,我并没有修改任何的配置,只是快速的看了一下它们的安装文档,安装好每种软件,然后就让它们做这些最简单的收发信息的操作。所以 这是一次真正的“开箱即装即用”的性能表现。我完全理解,这对那些初始配置十分保守的消息队列产品将 阅读全文
posted @ 2012-04-24 20:48 vivianC 阅读(266) 评论(0) 推荐(0)
摘要:以下内容是从网上各处简单整理而来,因为前段时间自己一直在研究Thrift,把研究的一点资料分享给需要的同行中人!第一节RPC技术及实现简介首先思考一下分布式系统中的RPC (Remote Procedure Call)问题,一个完整的RPC模块需要可以分为三个层次· 服务层(service):RPC接口定义与实现· 协议层(protocol):RPC报文格式和数据编码格式· 传输层(transport):实现底层的通信(如socket)以及系统相关的功能(如事件循环、多线程)在实际的大型分布式系统中,不同的服务往往会使用不同的语言来实现,所以一般的RPC系统会提供 阅读全文
posted @ 2012-04-24 17:57 vivianC 阅读(525) 评论(0) 推荐(0)
摘要:以下是我在公司内部分享的关于分布式日志收集系统的PPT内容,现在与大家分享,希望对于需要使用的人能够起到基本的入门作用或是了解!1.分布式日志收集系统:背景介绍许多公司的平台每天会产生大量的日志(一般为流式数据,如,搜索引擎的pv,查询等),处理这些日志需要特定的日志系统,一般而言,这些系统需要具有以下特征:(1) 构建应用系统和分析系统的桥梁,并将它们之间的关联解耦;(2) 支持近实时的在线分析系统和类似于Hadoop之类的离线分析系统;(3) 具有高可扩展性。即:当数据量增加时,可以通过增加节点进行水平扩展。2.分布式日志收集系统:Facebook Scribe主要内容(1)Scribe简 阅读全文
posted @ 2012-04-24 17:42 vivianC 阅读(460) 评论(0) 推荐(1)
摘要:1. 介绍 Scribe是Facebook一个开源的实时分布式日志收集系统。它提高了大规模日志收集的可靠性和可扩展性。你可以在不同的节点上安装Scribe服务,然后这些服务会把收集到的信息发布到中心的服务集群上去。当中心服务不可得到时,本地的Scribe服务会暂时把收集到的信息存储到本地,等中心服务恢复以后再进行信息的上传。中心服务集群可以把收集到的信息写入本地磁盘或者分布式文件系统上,如hdfs,或者分发到另一层的Scribe服务集群上去。Scribe提供了一种无阻塞的thrift服务,底层依赖libevent库和thrift库的支持。2. 安装 安装的方法在https://gi... 阅读全文
posted @ 2012-04-24 17:40 vivianC 阅读(641) 评论(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 阅读(287) 评论(0) 推荐(0)
摘要:ZeroMQ的想法和初衷是好的,让你用串行的思路写异步的消息处理程序。并且在此基础之上提炼出了常见的消息模式,让你写起程序来更加省心。库替你完成了异步消息发送、故障恢复、甚至连磁盘的buffer都提供了。不可谓不全面。同时提供的接口非常简洁。但是,用很少的接口封装复杂的逻辑通常的结果就是:当你的业务场景跟库的设计者设想的业务场景一样时,你回很爽。但当业务有差别,或者对细节有要求时,你会很惨。用trick能解决已经算是较好的情况了。欺骗性质的封装。当你zmq_connect返回成功的时候,不要高兴,这并不意味着你真的创建好链接了,因为即使你连一个根本没人监听的地址也会成功,为什么呢,因为Zero 阅读全文
posted @ 2012-04-24 17:17 vivianC 阅读(790) 评论(0) 推荐(0)
摘要:ZeroMQ是一个很有个性的项目,它原来是定位为“史上最快消息队列”,所以名字里面有“MQ”两个字母,但是后来逐渐演变发展,慢慢淡化了消息队列的身影,改称为消息内核,或者消息层了。从网络通信的角度看,它处于会话层之上,应用层之下,有了它,你甚至不需要自己写一行的socket函数调用就能完成复杂的网络通信工作。借用官方的例子:客户端(发送N个“Hello”消息到服务端,接受回应):12345678910111213141516171819202122232425262728293031323334353637//// Hello World client// Connects REQ socke 阅读全文
posted @ 2012-04-24 17:15 vivianC 阅读(561) 评论(0) 推荐(0)
摘要:在需要并行化处理数据的时候,采用消息队列通讯的方式来协作,比采用共享状态的方式要好的多。Erlang ,Go 都使用这一手段来让并行任务之间协同工作。最近读完了ZeroMQ的Guide。写的很不错。前几年一直有做类似的工作,但是自己总结的不好。而 ZeroMQ 把消息通讯方面的模式总结的很不错。ZeroMQ 并不是一个对 socket 的封装,不能用它去实现已有的网络协议。它有自己的模式,不同于更底层的点对点通讯模式。它有比 tcp 协议更高一级的协议。(当然 ZeroMQ 不一定基于 TCP 协议,它也可以用于进程间和进程内通讯。)它改变了通讯都基于一对一的连接这个假设。ZeroMQ 把通讯 阅读全文
posted @ 2012-04-24 17:10 vivianC 阅读(379) 评论(0) 推荐(0)
摘要:Apache 的开源项目 hadoop, 作为一个分布式存储和计算系统,已经被业界广泛应用。很多大型企业都有了各自基于 hadoop 的应用和相关扩展。当 1000+ 以上个节点的 hadoop 集群变得常见时,集群自身的相关信息如何收集和分析呢?针对这个问题, Apache 同样提出了相应的解决方案,那就是 chukwa。概述chukwa 的官方网站是这样描述自己的: chukwa 是一个开源的用于监控大型分布式系统的数据收集系统。这是构建在 hadoop 的 hdfs 和 map/reduce 框架之上的,继承了 hadoop 的可伸缩性和鲁棒性。Chukwa 还包含了一个强大和灵活的工具 阅读全文
posted @ 2012-04-24 10:22 vivianC 阅读(3231) 评论(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 阅读(676) 评论(0) 推荐(0)
摘要:在互联网安全通信方式上,目前用的最多的就是https配合ssl和数字证书来保证传输和认证安全了。基本概念信息加密,对信息进行加解密,加密算法有对称加密和非对称加密;鉴别,消息接受者确认消息发送者确实为发送者本人,而非入侵者,---》数字证书技术;完整性,确保信息没被修改,---》数字签名技术;抗抵赖,数字鉴别技术;对称加密:即加解密的密钥能相互推算出来,或一样。算法要求通信双方开始通信时,要先商量一个用于加解密的密钥。优点,加密解密速度快;缺点:需要事先商量密钥,若通过网络传输,则可被监听;若存放在数据库,则当有n个Client时,需要n(n-1)/2个。非对称加密: 亦叫公开密钥算法,有一公 阅读全文
posted @ 2012-04-20 10:42 vivianC 阅读(1310) 评论(0) 推荐(0)
摘要:作者:Jeff Moser译者:马国耀原文链接:http://www.infoq.com/cn/articles/HTTPS-Connection-Jeff-Moser当你在浏览了一个网站上面的商品之后,点击“继续并结帐”时会发生什么?本文即将对(浏览器)与Amazon建立安全连接的整个过程中最初的若干毫秒进行分析。当你点击继续按钮时一个新的页面将被加载:在短暂的220毫秒内,发生了很多有趣的事情,Firefox修改了地址栏的颜色,并在其右下角放置了一个锁状的图标。在我最喜爱的网络工具Wireshark以及略微修改的Firefox调试版的帮助下,我们可以对正在发生的事情看个究竟。根据RFC 2 阅读全文
posted @ 2012-04-20 10:29 vivianC 阅读(455) 评论(0) 推荐(0)
摘要:今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显。关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事情。当我们去设计数据库表结构,对操作数据库时(尤其是查表时的SQL语句),我们都需要注意数据操作的性能。这里,我们不会讲过多的SQL语句的优化,而只是针对MySQL这一Web应用最多的数据库。希望下面的这些优化技巧对你有用。0. 为查询缓存优化你的查询大多数的MySQL服务器都开启了查询缓存。这是提高性最有效的方法之一,而且这是被MySQL的数据库引擎处理的。当有很多相同的查询被执行了多次的时候,这些查询结果会被放到一个缓存中,这样,后 阅读全文
posted @ 2012-04-19 17:26 vivianC 阅读(307) 评论(0) 推荐(1)
摘要:2008-11-16:老版本的MySQL 3.22中,MySQL的单表限大小为4GB,当时的MySQL的存储引擎还是ISAM存储引擎。但是,当出现MyISAM存储引擎之后,也就是从 MySQL 3.23开始,MySQL单表最大限制就已经扩大到了64PB了(官方文档显示)。也就是说,从目前的技术环境来看,MySQL数据库的MyISAM存储 引擎单表大小限制已经不是有MySQL数据库本身来决定,而是由所在主机的OS上面的文件系统来决定了。而MySQL另外一个最流行的存储引擎之一Innodb存储数据的策略是分为两种的,一种是共享表空间存储方式,还有一种是独享表空间存储方式。当使用共享表空间存储方式的 阅读全文
posted @ 2012-04-19 17:16 vivianC 阅读(4383) 评论(0) 推荐(0)
摘要:WTLS的作用是保证传输层的安全,作为WAP 协议栈的一个层次向上层提供安全传输服务接口。WTLS是以安全协议TLS1.0标准为基础发展而来的,提供通信双方数据的机密性、完整性和通信双方的鉴权机制。WTLS在TLS的基础上,根据无线环境、长距离、低带宽、自身的适用范围等增加了一些新的特性,如对数据报的支持、握手协议的优化和动态密钥刷新等。 WTLS能够提供下列三种类别的安全服务: i.第一类服务:能使用交换的公共密钥建立安全传输,使用对称算法加密解密数据,检查数据完整性,可以建立安全通信的通道,但没有对通信双方的身份进行鉴权。 ii.第二类服务:除完成第一类服务的功能外还可以交换服务器证书.. 阅读全文
posted @ 2012-04-16 15:56 vivianC 阅读(1084) 评论(0) 推荐(0)
摘要:SSL session resumption的原理是在服务端缓存所有的session,客户端之后在每次和服务端握手时通过Session ID完成session resumption。这种机制对服务端有如下挑战:如果是在本机缓存session,必须保证同一个客户端的请求要落到同一台服务器,这无疑给前端负载均衡策略增大了压力。如果是为一个集群单独一个shared的session cache,同样也增加了请求的处理环节,并增加了系统的成本(都是money啊)。之所以如此纠结是因为SSL觉得session信息必须放在服务端缓存,而SSL的替代者TLS则提供了新的选择,服务端无状态的session re 阅读全文
posted @ 2012-04-15 17:45 vivianC 阅读(331) 评论(0) 推荐(0)
摘要:SSL session resumption原理很多人熟悉HTTPS,却不知道SSL。HTTPS正是通过SSL和HTTP的组合来提供加密通讯以及对网络服务器身份的鉴别。SSL全称为 Secure Socket Layer,是一种在两台机器之间提供安全通道的协议。它具有保护传输数据以及识别通信机器的功能。客户与服务器之间的数据是经过加密的。SSL 假定其下层的数据包发送机制是可靠的。写入网络的数据将依顺序发送给另一端的程序,不会出现丢包或重传情况。依赖于可靠传输协议发送数据的特点使得SSL 只能在TCP 上工作,不能在UDP 或直接在IP 上运行。SSL 开始就是为Web 设计的,所以SSL可以 阅读全文
posted @ 2012-04-15 17:39 vivianC 阅读(695) 评论(0) 推荐(0)
摘要:PHP中的CURL函数库(Client URL Library Function)curl_close — 关闭一个curl会话curl_copy_handle — 拷贝一个curl连接资源的所有内容和参数curl_errno — 返回一个包含当前会话错误信息的数字编号curl_error — 返回一个包含当前会话错误信息的字符串curl_exec — 执行一个curl会话curl_getinfo — 获取一个curl连接资源句柄的信息curl_init — 初始化一个curl会话curl_multi_add_handle — 向curl批处理会话中添加单独的curl句柄资源curl_mult 阅读全文
posted @ 2012-04-09 10:45 vivianC 阅读(396) 评论(0) 推荐(0)
摘要:cURL是一个利用 URL 语法规定来传输文件和数据的工具,支持很多协议,如 HTTP、FTP、TELNET 等。最爽的是,PHP 也支持cURL库。本文将介绍cURL的一些高级特性,以及在 PHP 中如何运用它。为什么要用 cURL?是的,我们可以通过其他办法获取网页内容。大多数时候,我因为想偷懒,都直接用简单的PHP函数:12345$content = file_get_contents("http://www.nettuts.com");// or$lines = file("http://www.nettuts.com");// orreadfi 阅读全文
posted @ 2012-04-09 10:34 vivianC 阅读(208) 评论(0) 推荐(0)
摘要:1.分布式日志收集系统:背景介绍许多公司的平台每天会产生大量的日志(一般为流式数据,如,搜索引擎的pv,查询等),处理这些日志需要特定的日志系统,一般而言,这些系统需要具有以下特征:(1) 构建应用系统和分析系统的桥梁,并将它们之间的关联解耦;(2) 支持近实时的在线分析系统和类似于Hadoop之类的离线分析系统;(3) 具有高可扩展性。即:当数据量增加时,可以通过增加节点进行水平扩展。2.分布式日志收集系统:Facebook Scribe主要内容(1)Scribe简介及系统架构(2)Scribe技术架构(3)Scribe部署结构(4)Scribe主要功能和使用方案(5)Scribe的具体应用 阅读全文
posted @ 2012-04-08 10:37 vivianC 阅读(323) 评论(0) 推荐(0)
摘要:记录UMLhttp://cloud.ozyegin.edu.tr/Hadoop-UML-Diagrams/Documentation/html/d2/d77/namespaceorg_1_1apache_1_1hadoop_1_1hdfs.htmljava code: TestUtilhttp://grepcode.com/file/repository.cloudera.com/content/repositories/releases/org.apache.hadoop/hadoop-test/0.20.2-cdh3u1/org/apache/hadoop/hdfs/DFSTestUtil 阅读全文
posted @ 2012-04-08 10:29 vivianC 阅读(477) 评论(0) 推荐(0)