
分布式存储
andyhuabing
这个作者很懒,什么都没留下…
展开
-
用C实现面向对象
很多开发工程师都是从学习C语言的"Hello world!"开始的,都知道C语言中的指针是一把利剑,一不留意就伤了自个。但其C语言绝对是一个宗师级语言,这是不可否认的。 由于我们开发的需要在多个平台上运行且需要面向对象的一些特性、所以特写此文章。权当抛砖引玉。 一、概述 C语言是一种面向过程的程序设计语言、而C++在语言级别上添加了很多新机制(继承,多态等)原创 2015-03-05 15:48:32 · 2352 阅读 · 0 评论 -
Siege web 压测工具代码分析
一、功能简介“Siege”意为围攻、包围。是一款使用纯C语言编写的开源WEB压测工具,适合在GNU/Linux上运行,具有较强的可移植性。Siege使用多线程实现,支持随机访问多个URL,可以通过控制并发数、总请求数(or压测时间)来实现对web服务的压测。Siege支持http,https,ftp三种请求方式,支持GET和POST方法,压测方式为同步压测。因为编写http cli原创 2016-09-06 14:10:55 · 2231 阅读 · 2 评论 -
Redis 高性能内存存储
Redis是一个开源,先进的key-value存储,并用于构建高性能,可扩展的Web应用程序的完美解决方案。Redis从它的许多竞争继承来的三个主要特点:Redis数据库完全在内存中,使用磁盘仅用于持久性。相比许多键值数据存储,Redis拥有一套较为丰富的数据类型。Redis可以将数据复制到任意数量的从服务器。Redis 优势原创 2016-03-03 17:41:50 · 6372 阅读 · 1 评论 -
FastDFS 分布式系统需求分析
FastDFS是一款开源的轻量级分布式文件系统、纯C实现,支持Linux, FreeBSD等UNIX系统类google FS, 不是通用的文件系统,只能够通过专有API访问,目前提供了C,Java和PHP API为互联网应用量身定做,解决大容量文件存储问题,追求高性能和高扩展性。FastDFS可以看做是基于文件的key-value存储系统,称为分布式文件存储服务更为合适。FastD原创 2016-03-03 18:01:28 · 2545 阅读 · 2 评论 -
Memcached 源码分析--网络模型流程分析
一、功能介绍Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon)是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。memc原创 2016-09-07 12:16:16 · 2030 阅读 · 0 评论 -
Memcached 源码分析--命令流程分析
一、执行命令首先是启动memcached 自带参数如下:-p 设置TCP端口号(默认设置为: 11211)-U UDP监听端口(默认: 11211, 0 时关闭) -l 绑定地址(默认:所有都允许,无论内外网或者本机更换IP,有安全隐患,若设置为127.0.0.1就只能本机访问)-c max simultaneous connections原创 2016-09-07 18:03:40 · 2504 阅读 · 0 评论 -
Redis 之BIO与RIO
一、BIO 之后台IO操作BIO : Background I/O service for Redis. 负责我们需要在后台执行的操作。现在redis的版本中只有两类的操作,后台的close及fsync 系统调用。为了避免一个文件最后的owner在执行close操作带来的unlink使得阻塞server,将这类操作用单独的后台线程来执行将数据从内存写入磁盘这点非常重要,即f原创 2016-09-19 13:49:27 · 2924 阅读 · 0 评论 -
Redis AE 异步事件模块
首先想一个问题,为何Redis比Memcached快呢?一般想法:Memcached完全基于内存,而Redis具有持久化保存特性,即使是异步的,Redis也不可能比Memcached快。可实际测试情况基本上是:Redis占绝对优势。可能原因有二:1、Libevent: Memcached使用、而Redis没有选用。Libevent为了迎合通用性造成代码庞大及牺牲了在特定平台原创 2016-09-18 14:50:36 · 3265 阅读 · 0 评论 -
Redis的主要脉络梳理
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。由于工作需要,需要深入研究此开源代码用于选型及设计代码,先从main函数开始吧。参考版本:Redis-3.2.3首先从main函数开始@server.cint main(int argc, char **argv) { //原创 2016-09-18 09:49:09 · 1969 阅读 · 0 评论 -
Memcached特性及优缺点
需求来源:为了加快文件访问速度且提供多个使用者、需要在内存中建立内存缓存数据的管理减小读写磁盘的次数及保证数据的更新、因为需要使用cache缓存。1、Memcached 主要特性a、数据仅存在于内存中,宕机或重启数据将全部失效b、内容数据达到启动时设定内存指定值后、基于LRU算法删除缓存,LAZY模式、可指定最大内存用量。c、实际瓶颈在于网络连接、占应较少的原创 2016-09-08 14:38:30 · 8224 阅读 · 3 评论 -
GCC 对C语言的扩展
Linux内核必须使用GNU的GCC编译器来编译,而GCC提供了很多的C语言扩展,这些扩展对优化、目标代码布局、更安全的检查等提供了很强的支持。因此,内核代码所使用的C语法并不完全符合ANSI C标准,实际上,只要有可能,内核开发者总是要用到GCC提供的C语言扩展部分。所以特意找了几个常用的特性总结下。1、语句内嵌表达式(statement-embedded expressio原创 2015-01-12 12:04:53 · 6131 阅读 · 0 评论 -
Redis 主从复制--replication 代码分析
源码版本:redis-3.2.31、redis的主从复制实现简单却功能强大,其具有以下特点:1. 一个master支持多个slave连接,slave可以接受其他slave的连接2. 主从同步时,master和slave都是非阻塞的2、redis主从复制可以用来:1. data redundancy 2. slave作为master的扩展,提供一些read-only的原创 2016-11-14 15:35:14 · 3883 阅读 · 0 评论