上一页 1 ··· 39 40 41 42 43 44 45 46 47 ··· 54 下一页
  2018年3月8日
摘要: Apache Thrift 是FaceBook实现的一种跨平台的远程服务调用(RPC)的框架。它采用接口描述语言(IDL)定义并创建服务,传输数据采用二进制格式,相对于XML和Json等常用数据传输方式体积更小。 首先一个完整的RPC模块主要分三部分: 1.服务层(service):RPC接口的定义 阅读全文
posted @ 2018-03-08 09:20 xmj 阅读(596) 评论(0) 推荐(0) 编辑
摘要: 我的新浪微博:http://weibo.com/freshairbrucewoo。 欢迎大家相互交流,共同提高技术。 之前对Thrift自动生成代码的实现细节做了详细的分析,下面进行处理层的实现做详细分析了!会利用到自动代码生成的知识。 这部分是协议层和用户提供的服务实现之间的纽带,定义了调用服务实 阅读全文
posted @ 2018-03-08 09:20 xmj 阅读(316) 评论(0) 推荐(0) 编辑
摘要: IDL:接口描述语言 这里使用thrift-0.8.0-xsb这个版本来介绍IDL的定义以及简单实例分析。 1. namespace 定义包名 2.struct 结构体,定义服务接口的参数和返回值用到的类结构。基本类型不需要使用struct. 3.service 定义接口:demo.thrift 1 阅读全文
posted @ 2018-03-08 09:19 xmj 阅读(724) 评论(0) 推荐(0) 编辑
摘要: 这一层主要是用于实现网络通信,现在都是基于Tcp/Ip,而Tcp/Ip协议栈由socket来实现,换句话说就是现在网络通信服务底层大都是通过socket实现的,在thrift源码中,就是将socket包装成各种transport来使用。 TTransport:这是一个基类,并且是一个抽象类。 TIO 阅读全文
posted @ 2018-03-08 09:18 xmj 阅读(507) 评论(0) 推荐(0) 编辑
摘要: 本文为原创:http://www.cnblogs.com/leehfly/p/4958206.html,未经许可禁止转载。 关于Tprotocol层都是一些通信协议,个人感觉内容较大,很难分类描述清楚。故打算以TBinaryProtocol为例,分析客户端发请求以及接收服务端返回数据的整个过程。 先 阅读全文
posted @ 2018-03-08 09:17 xmj 阅读(342) 评论(0) 推荐(0) 编辑
摘要: epoll技术前两节已经阐述过了,目前主要做一下封装,很多epoll的服务器都是采用事件回调方式处理, 其实并没有什么复杂的,我慢慢给大家阐述下原理。 在networking.h和networking.cpp里,这两个文件主要实现了一些文件读写功能的回调函数 。 acceptCallBack 负责新 阅读全文
posted @ 2018-03-08 09:15 xmj 阅读(239) 评论(0) 推荐(0) 编辑
摘要: 本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 概述 最近在看内存回收,内存回收在进行同步的一些情况非常复杂,然后就想,不会内存压缩的页面迁移过程中的同步关系也那么复杂吧,带着好奇心就把页面迁移的源码都大致看了一遍,还好,不复杂,也容易理解,这里我们就说说在页 阅读全文
posted @ 2018-03-08 09:15 xmj 阅读(512) 评论(0) 推荐(0) 编辑
摘要: 前一篇介绍了epoll的LT模式,LT模式注意epollout事件在数据全部写成功后需要取消关注, 或者更改为EPOLLIN。 而这次epoll的ET模式,要注意的是在读和写的过程中要在循环中写完或者读完所有数据, 确保不要丢掉一些数据。 因为epoll ET模式只在两种边缘更改的时候触发,对于读事 阅读全文
posted @ 2018-03-08 09:14 xmj 阅读(130) 评论(0) 推荐(0) 编辑
摘要: 网络通信中socket有自己的内核发送缓冲区和内核接受缓冲区,好比是一个水池, 当用户发送数据的时候会从用户缓冲区拷贝到socket的内核发送缓冲区,然后从 socket发送缓冲区发出去, 当用户要读取数据时,就是从socket内核读缓冲区读 到用户缓冲区。所以TCP中recv, send, rea 阅读全文
posted @ 2018-03-08 09:13 xmj 阅读(226) 评论(0) 推荐(0) 编辑
摘要: 近期学习了redis底层框架,好多东西之前都没听说过,算是大开眼界了。 先梳理下redis正常的通讯流程吧 首先服务器启动都有主函数main,这个main函数就在redis.c里 首先是initserverconfig(),在这里初始化了redisserver基本的配置信息, 接着调用loadSer 阅读全文
posted @ 2018-03-08 09:12 xmj 阅读(238) 评论(0) 推荐(0) 编辑
上一页 1 ··· 39 40 41 42 43 44 45 46 47 ··· 54 下一页