
分布式与缓存设计
gauss
这个作者很懒,什么都没留下…
展开
-
一个高性能RPC框架的连接管理
既然说连接,先对EpollServer的连接管理做个介绍吧。客户端与服务器一次conn,被封装成为Connection类在服务器进行管理。服务器连接有三种类型,分别为:enum EnumConnectionType { EM_TCP = 0, EM_UDP = 1, EM_BUS =转载 2015-04-14 15:08:35 · 491 阅读 · 0 评论 -
Memcached简介
在Web服务开发中,服务端缓存是服务实现中所常常采用的一种提高服务性能的方法。其通过记录某部分计算结果来尝试避免再次执行得到该结果所需要的复杂计算,从而提高了服务的运行效率。 除了能够提高服务的运行效率之外,服务端缓存还常常用来提高服务的扩展性。因此一些大规模的Web应用,如Facebook,常常构建一个庞大的服务端缓存。而它们所最常使用的就是Memcached。 在本文中,我们就将对转载 2015-10-05 00:48:54 · 323 阅读 · 0 评论 -
懒 Redis 是更好的 Redis
大家都知道 Redis 是单线程的。对 Redis内行 的人会告诉你,Redis 其实也不完全是单线程的,因为还有一些线程在处理特定的慢的磁盘操作。到目前为止,这些线程里的操作都集中在 I/O 上,以至于这些线程用到的库被称为 bio.c,也就是后台 I/O(Background I/O)。不过之前我提交了一个 issue,承诺给 Redis 新增一个很多人(包括我自己)都想要的特性,转载 2015-10-05 00:11:05 · 407 阅读 · 0 评论 -
分布式存储引擎
目录[-]2.1 RootServer实现机制2.1.1 数据结构2.1.2 Tablet复制与负载均衡2.1.3 Tablet分裂与合并2.1.4 UpdateServer选主2.1.5 RootServer主备2.2 UpdateServer实现机制2.2.1 内存存储引擎2.2.2 任务处理模型2.2.3 主备同步模块2.3 ChunkServer实现机制2.3.1 SSTable2转载 2015-08-16 10:27:05 · 994 阅读 · 0 评论 -
linux下redis安装配置及redis常用命令
一、下载redis下载地址:http://code.google.com/p/redis/downloads/list2013年12月7号,我下载的是最新版本:redis-2.6.14.tar.gz另附上csdn上该版本的资源:http://download.youkuaiyun.com/detail/wantianwen/6677973使用root安装[plain]转载 2015-06-22 00:21:55 · 373 阅读 · 0 评论 -
redis服务器模型分析
redis的服务器程序采用的是单进程,单线程的模型来处理客户端的请求。对读写等事件的响应是通过对epoll函数的包装来做到的。 下图是整个服务器模型原理图。 首先我们来说明下整个服务器初始化的过程: 1.初始化asEventLoop。 2.初始化服务器socket监听,并且绑定acceptTcpHandler事件函数,以应对建立客户端连接的请求。 3.绑定befo转载 2014-10-19 13:17:56 · 458 阅读 · 0 评论 -
Redis安装部署维护篇
Redis是个高性能的key-value数据库,它的key具有丰富的数据结构:string,hash,list set和sorted set。作为NOSQL,比起memcache之类,不仅仅key数据结构丰富,而且具有持久化的功能,并且能够支持主从复制,很方便构建集群。redis高性能很大程度上源于它是个内存型数据库,它的高性能表现在:set操作11w/s,get操作8.1w/s,与其他类型数据库转载 2014-10-18 00:22:31 · 617 阅读 · 0 评论 -
Redis如何处理客户端连接
本文主要介绍了 Redis 处理客户端连接的一些内部实现机制,包括连接处理、超时、缓冲区等一系列内容。注:本文所述内容基于 Redis2.6 及以上版本。连接的建立Redis 通过监听一个 TCP 端口或者 Unix socket 的方式来接收来自客户端的连接,当一个连接建立后,Redis 内部会进行以下一些操作:首先,客户端 socket 会被设置为非阻塞模式,因为 Redi转载 2014-10-17 23:54:23 · 538 阅读 · 0 评论 -
Redis学习笔记2--Redis数据类型及相关命令
Redis支持的种数据类型包括string、list 、set 、sorted set 和hash。Redis相关的命令可以查看:http://redis.io/commands 这是官方的命令使用手册,也有中文翻译的:http://redis.readthedocs.org/en/2.4/index.html1. keys: redis本质上一个key-value sto转载 2014-10-17 20:12:58 · 346 阅读 · 0 评论 -
游戏服务器之内存数据库redis客户端应用
本文主要介绍游戏服务器的对redis的应用。介绍下redis c++客户端的一些使用。存储结构设计:(1)装备道具的redis存储结构为例(Hashes存储类型)存储结构为: key : EQUIPMENTBAG角色id frield: 装备位置 value:装备信息存储一个装备道具到redis(使用hset 命令)一次存储玩家的装备转载 2014-10-17 20:10:48 · 1141 阅读 · 0 评论 -
Redis学习笔记6--Redis事务
redis对事务的支持目前还比较简单。redis只能保证一个client发起的事务中的命令可以连续的执行,而中间不会插入其他client的命令。 由于redis是单线程来处理所有client的请求的所以做到这点是很容易的。一般情况下redis在接受到一个client发来的命令后会立即处理并 返回处理结果,但是当一个client在一个连接中发出multi命令有,这个连接会进入一个事务上下文,该连接后转载 2014-10-17 20:07:43 · 399 阅读 · 0 评论 -
redis 命令行操作记录
redis命令学习Redis 的vauleredis 提供五种数据类型:string,hash,list,set 及sorted set。hash 类型hash 是一个string 类型的field 和value 的映射表。添加,删除操作都是O(1)(平均)。hash 特别适合用于存储对象。相对于将对象的每个字段存成单个string 类型。将一个对象存储在has转载 2014-09-09 16:55:32 · 902 阅读 · 0 评论 -
Redis笔记(三)添加密码并修改默认端口后的主从同步
今天发现在Redhat as 5上编译2.6.14会报错,所以下面的演示基于2.4.18,报错信息:[root@as5 src]# uname -aLinux as5.cooly.slum 2.6.18-8.el5xen #1 SMP Fri Jan 26 14:42:21 EST 2007 i686 i686 i386 GNU/Linux[root@as5 src]# make转载 2014-09-09 16:48:32 · 360 阅读 · 0 评论 -
理解memcached的内存存储
Slab Allocation机制:整理内存以便重复使用最近的memcached默认情况下采用了名为Slab Allocator的机制分配、管理内存。 在该机制出现以前,内存的分配是通过对所有记录简单地进行malloc和free来进行的。 但是,这种方式会导致内存碎片,加重操作系统内存管理器的负担,最坏的情况下, 会导致操作系统比memcached进程本身还慢。Slab Allocator就是转载 2015-10-05 01:17:19 · 309 阅读 · 0 评论 -
CDN对流媒体和应用分发的支持及优化 | 高可用CDN架构详解
此文是根据马涛在【QCon高可用架构群】中的分享内容整理而成,转发请注明出处。马涛,前迅雷网络CDN系统研发工程师,也曾任EMC/Pivotal大数据处理系统Hawq研发工程师。从事CDN之前主要做数据库内核,平时关注大数据处理、并行系统容错和优化、后台服务性能优化。1.CDN系统工作原理1.1 DNS解析方式客户网站使用CDN加速应用或其他下载类资源:转载 2015-10-04 23:31:37 · 1383 阅读 · 0 评论 -
RabbitMQ基础概念详细介绍
转至:http://www.ostest.cn/archives/497引言你是否遇到过两个(多个)系统间需要通过定时任务来同步某些数据?你是否在为异构系统的不同进程间相互调用、通讯的问题而苦恼、挣扎?如果是,那么恭喜你,消息服务让你可以很轻松地解决这些问题。消息服务擅长于解决多系统、异构系统间的数据交换(消息通知/通讯)问题,你也可以把它用于系统间服务的相互调用(RPC)。本文将要介转载 2015-05-03 23:52:00 · 301 阅读 · 0 评论 -
leveldb实现原理
转至:http://www.cnblogs.com/haippy/archive/2011/12/04/2276064.html此文是大部分内容是转载,并补充了一小部分原创内容。 LevelDb日知录之一:LevelDb 101 说起LevelDb也许您不清楚,但是如果作为IT工程师,不知道下面两位大神级别的工程师,那您的领导估计会Hold不住了:Jeff Dean和Sa转载 2015-05-03 23:53:49 · 316 阅读 · 0 评论 -
淘宝分布式文件系统TFS设计
原文地址:http://blog.chinaunix.net/uid-20196318-id-3904914.htmlTFS(Taobao File System)是一个高可用、高性能、高可扩展的分布式文件系统,基于普通的Linux服务器构建,主要提供海量非结构化数据存储服务。TFS被广泛地的应用在淘宝的各项业务中,目前已部署的最大集群存储文件数已近千亿。 TFS已在TaoCode转载 2015-05-03 23:28:18 · 560 阅读 · 0 评论 -
Go语言并发之美
简介 多核处理器越来越普及,那有没有一种简单的办法,能够让我们写的软件释放多核的威力?答案是:Yes。随着Golang, Erlang, Scale等为并发设计的程序语言的兴起,新的并发模式逐渐清晰。正如过程式编程和面向对象一样,一个好的编程模式需要有一个极其简洁的内核,还有在此之 上丰富的外延,可以解决现实世界中各种各样的问题。本文以GO语言为例,解释其中内核、外延。转载 2015-06-27 11:40:10 · 785 阅读 · 0 评论 -
Tair-淘宝自主开发的一个分布式key/value存储系统
简介tair 是淘宝自己开发的一个分布式 key/value 存储引擎. tair 分为持久化和非持久化两种使用方式. 非持久化的 tair可以看成是一个分布式缓存. 持久化的 tair 将数据存放于磁盘中. 为了解决磁盘损坏导致数据丢失, tair 可以配置数据的备份数目,tair 自动将一份数据的不同备份放到不同的主机上, 当有主机发生异常, 无法正常提供服务的时候, 其于的备转载 2015-07-26 17:06:15 · 3612 阅读 · 0 评论 -
海量存贮设计一
相关文章推荐:海量数据存储之Key-Value存储简介海里数据存储之存储设计(二)Je的排版真的让人难过......从本文开始着重讲解存储细节,思路比较飘逸,观者多包涵。翻译了一篇Redis作者antirez的文章做为本文的切入点,翻译得不好,这部分可以大致一览,后面会有分析。Append Only和Reuse Blocks的一些区别对于一颗append only转载 2015-07-26 23:50:46 · 423 阅读 · 0 评论 -
Key-value存储简介
Key-value存储简介具备高可靠性及可扩展性的海量数据存储对互联网公司来说是一个巨大的挑战,传统的数据库往往很难满足该需求,并且很多时候对于特定的系统绝大部分的检索都是基于主键的的查询,在这种情况下使用关系型数据库将使得效率低下,并且扩展也将成为未来很大的难题。在这样的情况下,使用Key-value存储将会是一个很好的选择。它被广泛应用于缓存,搜索引擎等等领域。 根转载 2015-07-26 23:15:10 · 3628 阅读 · 0 评论 -
Kafka剖析(一):高扩展、高吞吐的分布式消息系统初探
Kafka是由LinkedIn开发的一个分布式的消息系统,使用Scala编写,它以可水平扩展和高吞吐率而被广泛使用。目前越来越多的开源分布式处理系统如Cloudera、Apache Storm、Spark都支持与Kafka集成。InfoQ一直在紧密关注Kafka的应用以及发展,“Kafka剖析”专栏将会从架构设计、实现、应用场景、性能等方面深度解析Kafka。背景介绍转载 2015-09-03 08:24:55 · 2214 阅读 · 0 评论 -
Kafka深度解析
背景介绍Kafka简介 Kafka是一种分布式的,基于发布/订阅的消息系统。主要设计目标如下:以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间的访问性能高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒100K条消息的传输支持Kafka Server间的消息分区,及分布式消费,同时保证每个partition内的消息顺序传输同时支持离线数据转载 2015-09-03 08:52:24 · 706 阅读 · 0 评论 -
Kafka设计解析(二):Kafka High Availability (上)
Kafka在0.8以前的版本中,并不提供High Availablity机制,一旦一个或多个Broker宕机,则宕机期间其上所有Partition都无法继续提供服务。若该Broker永远不能再恢复,亦或磁盘故障,则其上数据将丢失。而Kafka的设计目标之一即是提供数据持久化,同时对于分布式系统来说,尤其当集群规模上升到一定程度后,一台或者多台机器宕机的可能性大大提高,对Failover要求非常高。转载 2015-09-03 08:29:19 · 434 阅读 · 0 评论 -
Kafka设计解析(三)- Kafka High Availability (下)
摘要 本文在上篇文章基础上,更加深入讲解了Kafka的HA机制,主要阐述了HA相关各种场景,如Broker failover,Controller failover,Topic创建/删除,Broker启动,Follower从Leader fetch数据等详细处理过程。同时介绍了Kafka提供的与Replication相关的工具,如重新分配Partition等。Broker Failove转载 2015-09-03 08:46:19 · 323 阅读 · 0 评论 -
Raft一致性算法
Why Not PaxosPaxos算法是莱斯利·兰伯特(LeslieLamport,就是 LaTeX 中的”La”,此人现在在微软研究院)于1990年提出的一种基于消息传递的一致性算法。由于算法难以理解起初并没有引起人们的重视,使Lamport在八年后1998年重新发表到ACM Transactions on Computer Systems上(The Part-TimeParlia转载 2015-09-13 10:06:45 · 428 阅读 · 0 评论 -
Redis笔记(二)主从复制
单台redis会遇到单点故障的问题,为了解决redis的高可用,主从复制应该是学习的第二个步骤。本文想达到的目的是,一个master带一个slave,而slave又带了一个slave,这样的好处是,当master故障后,直接把slaver1改为master,其他的配置不需要修改,服务又可以正常使用。作为master的redis配置文件不需要修改,此处只修改slave1和slave12的转载 2014-09-09 16:44:57 · 349 阅读 · 0 评论