分布式系统
文章平均质量分 81
zerok775
从事linux的网络程序设计,擅长高性能高并发服务设计,对数据库存储、高并发系统和分布式存储感兴趣。
展开
-
一种服务器的负载均衡选取算法
在很多分布式系统里面会遇到一个均衡节点选取的问题:一般是1个负载管理服务器,多个应用服务单元。当有连接或者业务来是,先会去询问负载管理器获取一个负载轻的服务单元,一般的选取就是选取负载最轻的那个。通常情况下是不会有问题的,如果你的应用服务器单元跑的是类似视频服务这种应用,就会出现这样一种情况,某个视频服务A崩溃或者异常了,这个视频服务的所有用户在瞬间会转移到负载最轻的B上,这个时候可能B也异常了,原创 2014-02-25 18:02:03 · 1871 阅读 · 1 评论 -
RUDP传输那些事儿
最近和很多实时音视频领域的朋友交流中都有谈论到RUDP(Reliable UDP),这其实是个老生常谈的问题,RUDP在很多著名的项目上都有使用,例如google的QUIC和webRTC。原创 2017-11-06 09:43:48 · 5264 阅读 · 2 评论 -
聊天系统中的用户列表并发问题分析
1.问题描述上周末一个做视频直播的朋友向我咨询他们遇到的一个关于大量内存对象并发的问题,具体问题描述是这样的,在游戏视频直播的时候,需要向观看直播的人提供一个可以自由聊天的功能(相当于QQ群),这就要涉及到在服务器端实现一个管理用户列表的功能,这个用户列表可能很大(最大可以容纳300万人观看和聊天)。他们的做法是在后端服务分为两层,如图:图-1gate用来做客户端连接和原创 2015-06-10 16:54:25 · 2344 阅读 · 2 评论 -
MySQL系列:innodb源码分析之基础数据结构
近一年来一直在分析关于数据库相关的源码,前段时间分析了levelDB的实现和BeansDB的实现,这两个数据库网络上分析的文章很多,也都比较分析的比较深,所以也就没有太多必要重复劳动。最近开始关注关系数据库和MYSQL,当然主要还是数据库存储引擎,首先我还是从innodb这个最流行的开源关系数据库引擎着手来逐步分析和理解。我一般分析源码的时候都是从基础的数据结构和算法逐步往上分析,遇到不明白的地方原创 2014-11-09 10:29:42 · 8028 阅读 · 0 评论 -
通过Nginx访问FastDFS文件系统并进行图片文件裁剪的性能测试和分析
前段时间公司的分布式图片文件系统(FastDFS)做了图片裁剪和缩放功能,并把缩放计算和FastDFS做了解耦分离,前端用虚拟机作为图片文件缩放的访问代理层(Nginx Proxy),后端使用nginx直接访问FastDFS的文件系统。以下是测试和分析过程。1测试场景 为了测试解耦后的图片读取并发和分析系统瓶颈,我们在内网中搭建了一个测试环境。以下是测试环境的网络的物理架构原创 2014-10-29 10:14:37 · 3848 阅读 · 0 评论 -
libpaxos分析心得
前一段时间在《大型分布式存储与实践》中作者提http://到一个观点:弄清楚PAXOS协议会大大增强你对分布式系统理解的信心。后来陆陆续续看过网络上的一些PAXOS的介绍,包括PAXOS的历史、PAXOS的第一版论文(The Part-Time Parlinment)、第二版论文( Paxos Made Simple)以及chubby的论文。都没太搞懂里面的细节,后来结合wiki上对paxos原创 2014-08-25 17:05:32 · 3617 阅读 · 0 评论 -
用C/C++实现对STORM的运行信息查看和控制
使用C++控制STORM需要在后端应用服务器上实时获取STORM集群的运行信息和topology相关的提交和控制,经过几天对STORM UI和CMD源码的分析,得出可以通过其thrift接口调用实现这些功能。先下载一个thrift库进行编码和安装。关于thrift可以参见这个地方。安装完成后,从STORM源码中将storm.thrift拷贝到thrift目录下。原创 2014-07-24 17:29:05 · 2002 阅读 · 0 评论 -
supervisord监控详解
1 Supervisord的安装Supervisord是运行在python环境下的服务监控程序。所以在安装supervisord之前必须有python环境。 如果系统没有PYTHON,键入:yum install python(CENTOS)或者apt-get installpython(UBUNTU) 键入:yum install python-setuptools原创 2014-06-05 15:09:01 · 10022 阅读 · 2 评论 -
Google File System系列:Snapshot流程
GFS的snapshot采用的是写时复制的机制进行的,GFS快照操作几乎可以瞬间完成对一个文件或者目录树(“源”)做一个拷贝,并且几乎不会对正在进行的其它操作造成任干扰。我们的用户可以使用快照迅速的创建一个巨大的数据集的分支拷贝(而且经常是递归的拷贝拷贝),或者是在做实验性的数据操作之前,使用快照操作备份当前状态,这样之后就可以轻松的提交或者回滚到备份时的状态。闲话少说,以下是我个人理解的流程序列原创 2014-04-03 18:01:11 · 2494 阅读 · 0 评论 -
redis数据记录过期源代码分析
最近在分析redis源代码,一直想写一点相关的东西,空不出时间来整理。今天好不容易空出时间来,把自己对redis关于记录过期和过期检测的流程理解写来。用过redis的人都知道,redis对相关记录的过期设置和memcached是相似的。原创 2014-03-14 13:20:43 · 5149 阅读 · 0 评论 -
Redis的字典(dict)rehash过程源码解析
Redis的内存存储结构是个大的字典存储,也就是我们通常说的哈希表。Redis小到可以存储几万记录的CACHE,大到可以存储几千万甚至上亿的记录(看内存而定),这充分说明Redis作为缓冲的强大。Redis的核心数据结构就是字典(dict),dict在数据量不断增大的过程中,会遇到HASH(key)碰撞的问题,如果DICT不够大,碰撞的概率增大,这样单个hash 桶存储的元素会越来愈多,查询效率就原创 2014-04-30 13:35:37 · 4560 阅读 · 0 评论 -
Merkle Tree算法详解
Merkle Tree是Dynamo中用来同步数据一致性的算法,Merkle Tree是基于数据HASH构建的一个树。它具有以下几个特点:1、数据结构是一个树,可以是二叉树,也可以是多叉树(本BLOG以二叉树来分析)2、Merkle Tree的叶子节点的value是数据集合的单元数据或者单元数据HASH。3、Merke Tree非叶子节点value是其所有子节点value的HASH值。原创 2014-03-29 11:14:55 · 15243 阅读 · 4 评论 -
P2P技术是如何将直播带宽降低75%的
实时直播经过去年的千播大战后已经成为互联网应用的标配技术,但直播平台的成本却一直居高不下,各个平台除了挖主播、挖网红以外,其背后高额的带宽费用也是他们最大的一块成本。现阶段直播技术在传输方面分为两块:CDN和连麦系统,CDN负责流媒体的分发传输,连麦系统负责解决同时多个主播间互动的实时通信传输问题。我们始终认为基于CDN+连麦系统的直播技术是一个高成本高消耗的技术,从各大直播平台纷纷亏损就验证了这原创 2018-01-04 18:14:52 · 15963 阅读 · 8 评论