随笔分类 -  分布式开源软件研究

摘要:我的新浪微博:http://weibo.com/freshairbrucewoo。欢迎大家相互交流,共同提高技术。一、RPC概述第一节、RPC结构网络RPC(RemoteProcedureCallProtocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。首先,客户机调 阅读全文
posted @ 2012-05-13 10:54 蔷薇理想人生 阅读(3011) 评论(0) 推荐(0) 编辑
摘要:我的新浪微博:http://weibo.com/freshairbrucewoo。欢迎大家相互交流,共同提高技术。六、NFS协议之RPC的实现因为nfs服务器启动时的端口是不确定的,所以nfs服务器将自己的端口注册到rpc服务,客户端通过rpc请求知道nfs服务器的监听端口。下面就分析整个rpc的处理过程。现在假设客户端有一个rpc请求达到服务器端了,通过上面nfs协议初始化的分析知道:所有的数据读写事件都是在函数nfs_rpcsvc_conn_data_handler中处理,因为是客户端发送来的请求数据,所以执行的是epoll_in事件处理相关代码,这些事件的处理都是在函数nfs_rpcsv 阅读全文
posted @ 2012-05-09 22:42 蔷薇理想人生 阅读(3316) 评论(0) 推荐(1) 编辑
摘要:我的新浪微博:http://weibo.com/freshairbrucewoo。欢迎大家相互交流,共同提高技术。五、Glusterfs实现NFS服务器第一节、启动过程分析Glusterfs的nfs服务器启动命令如下:/usr/local/sbin/glusterfs-f/etc/glusterd/nfs/nfs-server.vol-p/etc/glusterd/nfs/run/nfs.pid-l/usr/local/var/log/glusterfs/nfs.log说明:所有列出的代码都把错误处理、参数检查和日志输出去掉了!上面的命令会启动glusterfsd程序,下面是入口函数main的 阅读全文
posted @ 2012-05-08 21:57 蔷薇理想人生 阅读(4913) 评论(0) 推荐(2) 编辑
摘要:我的新浪微博:http://weibo.com/freshairbrucewoo。欢迎大家相互交流,共同提高技术。一、网络文件系统概述SunMicrosystems公司于1984年推出了一个在整个计算机工业中被广泛接受的远程文件存取机制,它被称为Sun的网络文件系统(NetworkFileSystem),或者简称为NFS。该机制允许在一台计算机上运行一个服务器,使对其上的某些或所有文件都可以进行远程存取,还允许其他计算机上的应用程序对这些文件进行存取。它使我们能够达到文件的共享。当使用者想用远端档案时只要用"mount"就可把remote档案系统挂接在自己的档案系统之下,使 阅读全文
posted @ 2012-05-07 22:38 蔷薇理想人生 阅读(4350) 评论(0) 推荐(1) 编辑
摘要:我的新浪微博:http://weibo.com/freshairbrucewoo。欢迎大家相互交流,共同提高技术。上一篇博客详细分析了GlusterFS之内存池的实现技术,今天我们看看GlusterFS是怎么使用这个技术的。第一步:分配和初始化:cli进程在初始化的过程中会涉及到内存池的建立和初始化,具体涉及到内存池初始化的代码如下(在cli.c文件中的glusterfs_ctx_defaults_init函数): 1 /* frame_mem_pool size 112 * 64 */ 2 pool->frame_mem_pool = mem_pool_new (call_frame_ 阅读全文
posted @ 2012-04-28 14:39 蔷薇理想人生 阅读(3365) 评论(0) 推荐(1) 编辑
摘要:我的新浪微博:http://weibo.com/freshairbrucewoo。欢迎大家相互交流,共同提高技术。最近一直在研究glusterfs的源代码,自己也在上面做了一些小的改动。我最开始研究的是3.2.5这个版本,因为据同行和网上资料显示这个版本目前是最稳定的版本。glusterfs实现比较复杂,具体的设计思想和架构就不详细介绍了,网上有这方面的资料(CSDN博客里面就有很好介绍的文章)。 研究开源系统的一个好处就是可以充分了解它的实现,如果是看这方面的论文只能了解一些原理性的东西,但是我们真正做项目还需要实际的实现。很多开源系统可能本身不一定就很适合你的系统,但是如果可以改造那... 阅读全文
posted @ 2012-04-26 21:35 蔷薇理想人生 阅读(4279) 评论(2) 推荐(2) 编辑
摘要:我的新浪微博:http://weibo.com/freshairbrucewoo。欢迎大家相互交流,共同提高技术。3生成C++语言代码的代码详解这个功能是由t_cpp_generator类实现(在文件t_cpp_generator.cc定义和实现),直接继承至t_oop_generator类(这个类是所有面向对象语言生成器类的直接基类,封装了面向对象语言生成器共有的特征与行为),而t_oop_generator又从t_generator继承(上面已经介绍),下面详细分析这个类是怎样生成C++语言的代码文件的。这个还有从上面介绍的generate_program函数开始说起,因为这个函数才是控制 阅读全文
posted @ 2012-04-25 23:06 蔷薇理想人生 阅读(4249) 评论(0) 推荐(2) 编辑
摘要:我的新浪微博:http://weibo.com/freshairbrucewoo。欢迎大家相互交流,共同提高技术。2t_generator类和t_generator_registry类这个两个类的主要功能就是为生成所有语言的代码提供基础信息和提供具体代码生成器对象,上面就是调用这个两个类的方法来生成具体语言的代码生成器对象和执行生成代码的功能函数。下面主要分析两个函数的功能,一个是t_generator_registry类的get_generator函数,这个是一个静态的函数可以直接通过类调用;另一个是t_generator类的generate_program函数。(1)t_generator 阅读全文
posted @ 2012-04-25 00:24 蔷薇理想人生 阅读(2746) 评论(0) 推荐(2) 编辑
摘要:我的新浪微博:http://weibo.com/freshairbrucewoo。欢迎大家相互交流,共同提高技术。又很久没有写博客了,最近忙着研究GlusterFS,本来周末打算写几篇博客的,但是由于调试GlusterFS的一些新增功能就用了整整的一天,还有一天就陪老婆大人逛街去了!今晚浏览完微博发现时间还早就来博客一篇,本篇博客内容主要是前一段时间研究的Thrift的代码生成器的源码详细分析,没有具体分析语法解析,因为是工具字段生成的代码,人是没有办法阅读的----到处都是跳转表!由于Thrift支持N多种语言,但是生成代码原理都差不多,我主要分析了C++相关代码生成。关于Thrift的使用 阅读全文
posted @ 2012-04-24 00:03 蔷薇理想人生 阅读(5052) 评论(4) 推荐(5) 编辑
摘要:我的新浪微博:http://weibo.com/freshairbrucewoo。欢迎大家相互交流,共同提高技术。以下内容是从网上各处简单整理而来,因为前段时间自己一直在研究Thrift,把研究的一点资料分享给需要的同行中人!第一节 RPC技术及实现简介首先思考一下分布式系统中的 RPC (Remote Procedure Call) 问题,一个完整的 RPC 模块需要可以分为三个层次· 服务层(service):RPC 接口定义与实现· 协议层(protocol):RPC 报文格式和数据编码格式· 传输层(transport):实现底层的通信(如 socket) 阅读全文
posted @ 2012-01-15 00:04 蔷薇理想人生 阅读(11312) 评论(3) 推荐(2) 编辑
摘要:我的独立博客网址是:http://wuyouqiang.sinaapp.com/。我的新浪微博:http://weibo.com/freshairbrucewoo。欢迎大家相互交流,共同提高技术。写入日志到Scribe的解决方案1.概述 Scribe日志收集服务器只负责收集主动写入它的日志,它本身不会去主动抓取某一个日志,所以为了把日志写入到scribe服务器,我们必须主动向scribe服务器发送日志信息。由于scribe服务器是基于thrift框架实现的,并且thrift支持多种编程语言的通信,所以对于写入scribe服务器的客户端实现也可以使用多种语言,这就为把写入日志的客户端集成到各种应 阅读全文
posted @ 2011-12-15 23:53 蔷薇理想人生 阅读(4223) 评论(0) 推荐(5) 编辑
摘要:我的独立博客网址是:http://wuyouqiang.sinaapp.com/。我的新浪微博:http://weibo.com/freshairbrucewoo。欢迎大家相互交流,共同提高技术。scribe结构及源码详细分析1. 整体类关系图2. 客户端写日志序列图3. 活动及状态图Scribe活动图4. 启动代码详解启动过程流程图(1) 调用setrlimit函数设置能够打开的最大文件数为65535;(2) 调用getopt_long函数解析运行scribe所带参数信息,如-p port指定运行端口号;(3) 调用srand、time和getpid产生唯一的随机种子(不知道有什么作用);( 阅读全文
posted @ 2011-12-14 23:06 蔷薇理想人生 阅读(5247) 评论(2) 推荐(2) 编辑
摘要:我的独立博客网址是:http://wuyouqiang.sinaapp.com/。我的新浪微博:http://weibo.com/freshairbrucewoo。欢迎大家相互交流,共同提高技术。 上一篇文章介绍了一些关于scribe的基础知识,也是自己在公司内部分享的一些内容,当时公司很多同事也积极与我沟通,没想到网上也有这么多人关注,下面几篇文章继续分享一些自己研究scribe的一些成果和心得吧! 其实我们研究一个开源的系统,第一步通常是先把它用起来,因为一个开源的系统能够出现在大家的面前肯定是比较出名和流行的,所有功能是比较出色的。所以我们必须很清楚的这些功能,而scribe最大的特点就 阅读全文
posted @ 2011-12-13 23:24 蔷薇理想人生 阅读(3825) 评论(0) 推荐(1) 编辑
摘要:我的新浪微博:http://weibo.com/freshairbrucewoo。欢迎大家相互交流,共同提高技术。以下是我在公司内部分享的关于分布式日志收集系统的PPT内容,现在与大家分享,希望对于需要使用的人能够起到基本的入门作用或是了解!1.分布式日志收集系统:背景介绍许多公司的平台每天会产生大量的日志(一般为流式数据,如,搜索引擎的pv,查询等),处理这些日志需要特定的日志系统,一般而言,这些系统需要具有以下特征:(1) 构建应用系统和分析系统的桥梁,并将它们之间的关联解耦;(2) 支持近实时的在线分析系统和类似于Hadoop之类的离线分析系统;(3) 具有高可扩展性。即:当数据量增加时 阅读全文
posted @ 2011-12-13 00:38 蔷薇理想人生 阅读(29834) 评论(5) 推荐(7) 编辑