学习豆瓣好榜样

这次的 QCon 会议, 《豆瓣网技术架构的发展历程》这个议题差不多是最受关注的。 洪强宁在演讲开始告诫大家期望值不要太高,我还是相信不会有人觉得失望的。
先说几句题外话,整个演讲听下来,我们会发现 豆瓣在发展的过程中也是有点弯路,这些是一个网站发展过程中的宝贵财富,能把自己有周折的地方大大方方的拿出来,是难能可贵的事情。尽管豆瓣批露了很多架构细节出来,也不会(也不可能)有哪个公司一拿到这些东西,就能照猫画虎再做一个豆瓣并且超过豆瓣。从某种程度上来说这体现了豆瓣同学们的气度,这是令国内大多数公司汗颜的。很多公司只愿索取,而不愿奉献哪怕一点点出来,用这样封闭的心态对待技术其实是小家子气,守财奴的思维。技术只有为更多人所用才是大道。
议论说完,再来叙述。写点对豆瓣架构的体会。戏法人人会变,各有巧妙不同。有些东西大家都在用(Nginx),但是有人的用得好,有人用了比不用还差。所以,需要逐渐总结,改进。学习别人的架构设计,不是要照搬,而是借鉴其思想。
技术的选择
一直以来,豆瓣在技术上都给人很前卫的感觉,看起来好像什么新用什么,其实是不是的,他们一直是"用已掌握的技术解决问题",现有的东西如果够用,那么就没必要一定迁移到新的上面去,而转换往往是为了解决当前问题。另外,换用新的东西,要有足够的驾驭能力,从演讲中得知,豆瓣曾有几次在临上线前发现基础库的Bug(比如 Libmemcached 的一致性哈希相关的Bug),技术团队能在第一时间有进行修复并且提交给开源社区。否则的话,就变成了一种错误决策了。
磁盘转速
小话题。如果可能,直接买 15000 转的磁盘好了。10000 转的磁盘可能省钱,但这东西部署了之后几乎就不太可能升级。所以,如果是初创公司,我的建议就是买高速磁盘,因为业务如果发展快了的话,先前对机器的定位也可能发生变化。
杜绝远程 I/O
在普通的 TCP/IP 网络的环境下,不要进行远程数据写入操作。跨网络操作的延时看似没什么大不了的,但一旦达到临界点就回天乏术。这个事情基本是不撞南墙不回头,有的技术人员总要亲身体验一把才肯罢休。
持续保持 URL 友好风格
演讲中有多次提到一致性 URL ,其实体现了豆瓣对 URL Rewrite 的重视,结构调整,或者应用程序变化的时候,URL 最好做到"用户友好"的。这算是"软技术",但是应该加以最大的重视。
数据库复制延迟问题
对于 MySQL 复制的环境,如果Slave 上有读取操作,那么有些情况下可能因为 Master 和 Slave 节点数据不一致对用户造成困惑。如果从一致性的角度上考虑,其实也不复杂:,只需要对"知道数据发生了变化的用户"提供一致性就行了(基本上就是发起变更的用户),不知道数据发生变化的用户对数据的不一致有一定的"容忍程度",当然说着简单,实现起来还是需要技巧和精巧的。
大量小文件同步问题:Merkle tree
关于大量小文件的同步问题,很多上了规模的网站都会遇到,如果设计得不好或者是比较偷懒,用传统的办法(比如 rsync 之类的老模式)很容易触发问题,也浪费资源。DoubanFS 是用 Merkle tree(Hash Tree)的方式进行数据同步的。对这个问题的具体描述可以参见 《大量小文件的实时同步方案》。Merkle Tree 是个很精巧的思路,ZFS 在用( refer), Amazon Dynamo 系统也在用。
不会一会儿又有人留言说:我们早就采用这个思路了...... 我这里预先来句回答:拜托,你早点共享啊?
--EOF--
完整的 PPT 过几天 InfoQ 中文站会发布,我这里就不掠美了。
职场 发展 休闲 运维

0

收藏

上一篇:linux ssh 安全自动登录 下一篇:sed 替换文件里的字符
《豆瓣网技术架构的发展历程》_第2张图片
cqfish

272篇文章,114W+人气,1粉丝

关注
《豆瓣网技术架构的发展历程》_第3张图片

Ctrl+Enter 发布

发布

取消

1条评论

按时间倒序 按时间正序

推荐专栏更多

《豆瓣网技术架构的发展历程》_第4张图片
网工2.0晋级攻略 ——零基础入门Python/Ansible

网络工程师2.0进阶指南

共30章 | 姜汁啤酒

¥51.00 1901人订阅
订   阅
《豆瓣网技术架构的发展历程》_第5张图片
CTO成长的道与术

IT人的互联网名企晋升之道

共28章 | CTO训练营

¥51.00 242人订阅
订   阅

猜你喜欢

我的友情链接 ELK-Logstash Linux 历史记录日志分析 发现大量的TIME_WAIT解决办法 vagrant打造自己的开发环境~~我也来一发 GNU开发工具——CMake快速入门 Jmeter之仿真高并发测试(集合点) Android 音视频开发入门指南 Android音频开发(1):基础知识 QT开发(三十四)——QT多线程编程 ip_forward与路由转发 百万级别长连接,并发测试指南 kubernetes集群中使用ingress发布服务 关于若干性能指标的阐述 罗振宇2019-2020“时间的朋友”跨年演讲-思维导图 跨过2019 - 如何立一个新的Flag?且看行业解读 1024 程序员节:简单粗暴,买专栏,我们送福利! 华为HC大会,我要去现场! 是时候给大家介绍 Spring Boot/Cloud 背后豪华的研发团队了。 刺猬文│以太坊交易信息解析方法 2018“硅谷技划”随笔(一):再论中美员工福利巨大差距的背后
《豆瓣网技术架构的发展历程》_第6张图片
《豆瓣网技术架构的发展历程》_第7张图片

扫一扫,领取大礼包

0

1
分享
《豆瓣网技术架构的发展历程》_第8张图片
关注
cqfish
《豆瓣网技术架构的发展历程》_第9张图片