- 博客(14)
- 收藏
- 关注
转载 Memcached源码分析之内存管理
一)模型分析 在开始解剖memcached关于内存管理的源代码之前,先宏观上分析一下memcached内存管理的模型是怎样子的: 提个建议,我觉得memcached内存管理的模型与我们平时做作业的作业本“画格子给我们往格子里面写字”的逻辑很像,一本本作业本就是我们的内存空间,而我们往里写的字就是我们要存下来的数据,所以分析的时候可以想像一下用方格作业本写字的情景。
2017-07-27 15:46:15
487
转载 分布式服务框架 Zookeeper -- 管理分布式环境中的数据
原文地址:http://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/#icomments安装和配置详解本文介绍的 Zookeeper 是以 3.2.2 这个稳定版本为基础,最新的版本可以通过官网 http://hadoop.apache.org/zookeeper/来获取,Zookeeper 的安装非常简单,下面将从单机
2017-01-08 15:14:16
433
原创 TProfiler工具的使用
背景前两天做了一个新接口,接口的逻辑也比较简单,从第三方拿到数据,做一些封装返回给客户端即可,但压测时发现当QPS为300左右,机器负载已经达到13左右,看了代码半天没有头绪,不知道问题出现在哪一步,所以就在网上查找性能优化的相关工具,觉得TProfiler简单易用、功能强大,就简单介绍下如何使用。TProfiler下载与安装第一步先去Github TProfiler
2017-01-05 11:49:51
3260
2
原创 Thrift源码系列----4.数据的解析与发送、接收
前言 在了解了Transport、TProtocol层的接口后,这一章我们来研究Thrift在客户端调用了方法后,是如何将我们传递的参数对象进行解析并发送出去的,服务端是如何将字节数组还原成一个对象的。创建Thrift文件 由于所有的序列化、反序列化操作、客户端的生成等都是在Thrift编译器生成的代码中,所以我们创建一个Thrift文件并生成Java类,后续都以该文件的
2016-12-19 14:31:38
3588
1
原创 Thrift源码系列----3.TProtocol层功能分析
前言 这一章我们来看TProtocol提供了哪些方法,重点介绍方法的功能,不对每个方法的源码实现做细致的分析,由于这一章牵扯到了上一层方法的调用问题,会有些难以理解,更多细节会在下一章详述。数据结构 在Thrift中有一套规则,规定了如何将我们传入的对象转为自身可使用的参数,下面我们来看三个类。 TField代表一个字段,无论该字段是一个对象还是基本字段,都
2016-12-16 10:29:48
1039
原创 Thrift源码系列----2.TTransport层源码分析
概述前言 前几篇博客为大家介绍了Thrift类体系及非阻塞服务模型的框架实现,分析过程中对TTransport、TProtocol的类功能做简单介绍,忽略了实现细节,作者本人对一些细节实现也不很清楚,觉得很有必要再深入每一层的细节研究,所以从本章开始将对每一层次的类源码详细介绍,本章主要讲解服务端和客户端用到的TTransport。客户端与服务端 看源码前,有必要向大家说
2016-12-15 10:43:24
6252
原创 Thrift源码系列----6.TThreadedSelectorServer源码实现
前言上一章我们介绍了Thrift非阻塞型服务的父类AbstractNonblockingServer,搞清楚了该类的内部的特性后,TThreadedSelectorServer还是比较容易理解的。 #
2016-12-07 19:03:59
3356
4
原创 Thrift源码系列----1.服务端类体系
背景在转载的另一篇博客里,主要包括了thrift服务端现有的5种运行方式,其中的阻塞服务TSimpleServer,TThreadPoolServer模型相对简单,底层都是使用阻塞IO模型,源码实现也较简单,本文将就TThreadedSelectorServer类型服务作源码分析,相信搞清楚了该种模型的运作原理后,TNonblockingServer与THsHaServer的源码也会很容易读懂
2016-11-03 19:54:54
1725
原创 Thrift源码系列----5.AbstractNonblockingServer源码
前言 接上一章,我们继续服务端源码的探索,本来打算将五种服务模型的源码都分析一遍,但看完源码后觉得阻塞型服务实现非常简单,这里便不做详述。而非阻塞型服务都继承AbstractNonblockingServer类,理解该类是理解非阻塞型服务实现的关键,所以本章开始探索AbstractNonblockingServer。TServer 由于所有的服务模型都是由父类定义好框架,
2016-11-03 19:51:39
2302
原创 网络编程的5个IO模型
原文地址:http://www.cnblogs.com/duanxz/p/3696849.html 据Unix网络编程,Unix主要有阻塞IO、非阻塞IO、信号驱动IO、IO复用、异步IO;前五种都是同步,只有最后一种才是异步IO。1.先贴上Unix网络编程的几张大图: 同步IO和异步IO的区别就在于:数据拷贝的时候进程是否阻塞! 阻塞IO和非阻塞IO的区别就在于:应用程序的调用是否立即返回!
2016-10-18 16:26:46
703
转载 Thrift server端的几种工作模式分析
源文地址:http://blog.youkuaiyun.com/houjixin/article/details/42779915相关示例代码见:http://download.youkuaiyun.com/detail/hjx_1000/8374829Thrift服务器端几种工作模式分析与总结 Thrift为服务器端提供了多种工作模式,本文中将涉及以下5中工作模式:TSimpleServer、TNonblo
2016-10-16 16:46:02
843
原创 Thrift连接池优化
背景众所周知,thrift是一款很优秀的rpc框架,公司今年在部门间推行thrift框架来提高部门间的通信效率,作者本人的工作内容主要是作为客户端(本人所在组为服务端,对于提供服务的其他部门来说是客户端)调用其他部门的接口,在工作过程中发现thrift有个较大的弊端,一般情况下服务端会向客户端提供一组服务IP,所有的负载均衡工作,连接是否可用等工作都需要客户端自己来维护,而apach
2016-10-10 17:06:56
12907
1
原创 CAS与sun.misc.Unsafe
什么是Compare And Swap(CAS)? 顾名思义,简单说就是比较并交换。CAS操作一般涉及三个操作数:内存值,预期原值,新值。如果内存值与预期原值相同,则将会用新值替换内存值,返回更新成功,否则,什么也不处理,返回更新失败。java.util.concurrent包的底层即是依靠CAS操作来实现,CAS在java中的具体实现是sun.misc.Unsafe类,作为java.
2016-10-10 11:16:42
825
原创 J.U.C框架学习顺序
背景 Java concurrent包提供了很多高性能的并发类,类的设计思路及源码值得我们学习参考,但在学习其原理过程中,作者经常碰到这种情况,在学习ConcurrentHashMap时,里面的部分方法操作牵扯到其他类,例如Unsafe、ReentrantLock,又需要了解ReentrantLock,进而又去学习AQS原理,导致整个学习过程非常的复杂,没有条理性,所以本文主要介绍根据
2016-10-09 17:53:05
2694
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人