7 zerok775

尚未进行身份认证

我要认证

从事linux的网络程序设计,擅长高性能高并发服务设计,对数据库存储、高并发系统和分布式存储感兴趣。

等级
TA的排名 3w+

webRTC是怎么应对网络变化的

在视频通信的技术领域WebRTC已成为主流的技术标准,WebRTC包涵了诸多优秀的技术,譬如:音频数字信号处理技术(AEC, NS, AGC)、编解码技术、实时传输技术、P2P技术等,这些技术目的都是为了实现更好实时音视频方案。但是在高分辨率视频通信过程中,通信时延、图像质量下降和丢包卡顿是经常发生的事,甚至在WiFi环境下,一次视频重发的网络风暴可以引起WiFi网络间歇性中断,通信延迟和图像质量...

2018-05-25 11:46:02

P2P技术是如何将直播带宽降低75%的

实时直播经过去年的千播大战后已经成为互联网应用的标配技术,但直播平台的成本却一直居高不下,各个平台除了挖主播、挖网红以外,其背后高额的带宽费用也是他们最大的一块成本。现阶段直播技术在传输方面分为两块:CDN和连麦系统,CDN负责流媒体的分发传输,连麦系统负责解决同时多个主播间互动的实时通信传输问题。我们始终认为基于CDN+连麦系统的直播技术是一个高成本高消耗的技术,从各大直播平台纷纷亏损就验证了这

2018-01-04 18:14:52

如何实现1080P延迟低于500ms的实时超清直播传输技术

本文是去年我发布在高可用架构公众号的文章,在此做一次转载。本来打算将WiredTiger系列的技术继续分享出来的,由于这段时间都在忙关于超清视频实时传输的事情,只能把WiredTiger的分享文章延后了,在这里先把这半年做的事情分享出来。最近由于公司业务关系,需要一个在公网上能实时互动超清视频的架构和技术方案。众所周知,视频直播用CDN + RTMP就可以满足绝大部分视频直播业务,我们也接

2017-11-20 17:34:09

WiredTiger实现:一个LRU cache深坑引发的分析

从mongoDB 3.0版本引入WiredTiger存储引擎(以下称为WT)以来,一直有同学反应在高速写入数据时WT引擎会间歇性写挂起,有时候写延迟达到了几十秒,这确实是个严重的问题。引起这类问题的关键在于WT的LRU cache的设计模型,WT在设计LRU cache时采用分段扫描标记和hazardpointer的淘汰机制,在WT内部称这种机制叫eviction cache或者WT cache,

2017-11-14 09:49:36

RUDP传输那些事儿

最近和很多实时音视频领域的朋友交流中都有谈论到RUDP(Reliable UDP),这其实是个老生常谈的问题,RUDP在很多著名的项目上都有使用,例如google的QUIC和webRTC。

2017-11-06 09:43:48

解析MongoDB存储引擎WiredTiger:事务实现

WiredTiger从被MongoDB收购到成为MongoDB的默认存储引擎的一年半得到了迅猛的发展,也逐步被外部熟知。WiredTiger(以下简称WT)是一个优秀的单机数据库存储引擎,它拥有诸多的特性,既支持BTree索引,也支持LSM Tree索引,支持行存储和列存储,实现ACID级别事务、支持大到4G的记录等。WT的产生不是因为这些特性,而是和计算机发展的现状息息相关。现代计算机近20

2017-10-25 11:26:31

聊天系统中的用户列表并发问题分析

1.问题描述上周末一个做视频直播的朋友向我咨询他们遇到的一个关于大量内存对象并发的问题,具体问题描述是这样的,在游戏视频直播的时候,需要向观看直播的人提供一个可以自由聊天的功能(相当于QQ群),这就要涉及到在服务器端实现一个管理用户列表的功能,这个用户列表可能很大(最大可以容纳300万人观看和聊天)。他们的做法是在后端服务分为两层,如图:图-1gate用来做客户端连接和

2015-06-10 16:54:25

MySQL系列:innodb源码分析之redo log恢复

在上一篇《innodb源码分析之重做日志结构》中我们知道redo log的基本结构和日志写入步骤,那么redo log是怎么进行数据恢复的呢?在什么时候进行redo log的日志推演呢?redo log的推演只有在数据库异常或者关闭后,数据库重新启动时会进行日志推演,将数据库状态恢复到关闭前的状态。那么这个过程是怎么进行的呢?以下我们逐步来解析。1.recv_sys_t结构 innod

2015-01-12 19:59:07

MySQL系列:innodb源码分析之重做日志结构

在innodb的引擎实现中,为了实现事务的持久性,构建了重做日志系统。重做日志由两部分组成:内存日志缓冲区(redo log buffer)和重做日志文件。这样设计的目的显而易见,日志缓冲区是为了加快写日志的速度,而重做日志文件为日志数据提供持久化的作用。在innodb的重做日志系统中,为了更好实现日志的易恢复性、安全性和持久化性,引入了以下几个概念:LSN、log block、日志文件组、che

2015-01-07 13:15:40

MySQL系列:innodb源码分析之page结构解析

在表空间结构分析当中,我们知道innodb的最小物理存储分配单位是page页,在MySQL-3.23版本的源码中,页只有两种页,一种是index page,一种是undo page。其类型值定义在fil0fil.h当中。                FIL_PAGE_INDEX                         数据索引页,在表空间的inode page和xdes page都是

2014-12-28 20:15:08

MySQL系列:innodb源码分析之表空间管理

innodb在实现表空间(table space)基于文件IO之上构建的一层逻辑存储空间管理,table space采用逻辑分层的结构:space、segment inode、extent和page.在实现层的逻辑使用了磁盘链表这种结构来管理逻辑关系。我们先来介绍磁盘链表。1.磁盘链表磁盘链表的实现fut0lst.*文件当中, innodb为了管理表空间和索引模块,定义了一个基于磁盘的链表

2014-12-14 15:55:18

MySQL系列:innodb源码分析之mini transaction

日志是innodb一个非常重要的模块,在innodb中有两类日志:redo log和undo log。其中redo log日志是用来做数据异常恢复和数据库重启时页数据同步恢复的,redo log是建立在在mini transaction基础上。数据库在执行事务时,通过mini transaction产生

2014-12-03 17:02:11

MySQL系列:innodb源码分析之文件IO

innodb作为数据库引擎,自然少不了对文件的操作,在innodb中所有需要持久化的信息都需要文件操作,例如:表文件、重做日志文件、事务日志文件、备份归档文件等。innodb对文件IO操作可以是煞费苦心,其主要包括两方面,一个是对异步io的实现,一个是对文件操作管理和io调度的实现。在MySQL-5.6版本的innodb还加入了DIRECT IO实现。做了这么多无非是优化io操作的性能。在inno

2014-11-23 21:50:40

MySQL系列:innodb源码分析之线程并发同步机制

innodb是一个多线程并发的存储引擎,内部的读写都是用多线程来实现的,所以innodb内部实现了一个比较高效的并发同步机制。innodb并没有直接使用系统提供的锁(latch)同步结构,而是对其进行自己的封装和实现优化,但是也兼容系统的锁。我们先看一段innodb内部的注释(MySQL-3.23):Semaphore operations in operating systems are s

2014-11-16 11:18:56

MySQL系列:innodb源码分析之内存管理

在innodb中实现了自己的内存池系统和内存堆分配系统,在innodb的内存管理系统中,大致分为三个部分:基础的内存块分配管理、内存伙伴分配器和内存堆分配器。innodb定义和实现内存池的主要目的是提供内存的使用率和效率,防止内存碎片和内存分配跟踪和调试。我们先来看看他们的关系和结构。以下是它的关系结构图:上图中的:ut_mem_block块是基础内存管理Buddy all

2014-11-10 20:05:05

MySQL系列:innodb源码分析之基础数据结构

近一年来一直在分析关于数据库相关的源码,前段时间分析了levelDB的实现和BeansDB的实现,这两个数据库网络上分析的文章很多,也都比较分析的比较深,所以也就没有太多必要重复劳动。最近开始关注关系数据库和MYSQL,当然主要还是数据库存储引擎,首先我还是从innodb这个最流行的开源关系数据库引擎着手来逐步分析和理解。我一般分析源码的时候都是从基础的数据结构和算法逐步往上分析,遇到不明白的地方

2014-11-09 10:29:42

通过Nginx访问FastDFS文件系统并进行图片文件裁剪的性能测试和分析

前段时间公司的分布式图片文件系统(FastDFS)做了图片裁剪和缩放功能,并把缩放计算和FastDFS做了解耦分离,前端用虚拟机作为图片文件缩放的访问代理层(Nginx Proxy),后端使用nginx直接访问FastDFS的文件系统。以下是测试和分析过程。1测试场景         为了测试解耦后的图片读取并发和分析系统瓶颈,我们在内网中搭建了一个测试环境。以下是测试环境的网络的物理架构

2014-10-29 10:14:37

夏夜

儿时的夏夜毕竟是最有夏夜的味道,屋堂的煤油灯啪嗒的跳动,忽明忽暗,真怕它脆弱的明亮突然变黑暗。屋外弯月星稀,月光优雅的撒在平静的湖面上,纯洁而又温柔。水鸟在湖岸边慵懒的伸了伸脖子,正享受着夏夜的宁静和清凉。调皮的小孩朝它扔了个石头,鸟惊飞远,湖面上泛起涟漪的月光,仿佛出尘少女的羞涩。远方不知名的笛声,清脆、古老而悠扬,一直在诉说莫名的忧伤。村中唯一的石板路上铺满了纳凉的竹板床,劳累了的人们正享受一

2014-10-23 10:23:25

我程序世界的“术”与“道”

17年前高考的时候,本人就立志要从事所谓的科技行业,所以在填写志愿的时候填写的是通信工程,顺便后面同意了服从志愿调剂。就因为服从调剂,我这个完全能上得了通信工程专业分数的人得到了“爱因斯坦”老先生的眷顾被调到物理专业了(在这里不得不吐槽一下高考招生的黑暗与混乱)。本着对他老先生的好心就将就成为他的徒子徒孙吧。但经过一段时间,我才发现本人对物理一点兴趣没有,他老人家肯定对我是恨铁不成钢,彻底把我抛弃

2014-09-24 21:38:54

libpaxos分析心得

前一段时间在《大型分布式存储与实践》中作者提http://到一个观点:弄清楚PAXOS协议会大大增强你对分布式系统理解的信心。后来陆陆续续看过网络上的一些PAXOS的介绍,包括PAXOS的历史、PAXOS的第一版论文(The Part-Time Parlinment)、第二版论文( Paxos Made Simple)以及chubby的论文。都没太搞懂里面的细节,后来结合wiki上对paxos

2014-08-25 17:05:32

查看更多

勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!