学习豆瓣好榜样--网站架构

news/2024/5/9 17:12:09/文章来源:https://blog.csdn.net/chinalinuxzend/article/details/4065295

原贴:http://www.dbanotes.net/arch/douban_arch.html

学习豆瓣好榜样--网站架构

这次的 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 中文站会发布,我这里就不掠美了。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_831748.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小规模低性能低流量网站设计原则

原贴:http://www.dbanotes.net/arch/small_site_arch.html 小规模低性能低流量网站设计原则 作者: Fenng | 可以转载, 转载时务必以超链接形式标明文章原始出处和作者信息及版权声明 网址: http://www.dbanotes.net/arch/small_site_arch.html 到处都是什么大规模啊…

使用Varnish代替Squid做网站缓存加速器的详细解决方案[原创]

原贴:http://blog.s135.com/post/313/ 使用Varnish代替Squid做网站缓存加速器的详细解决方案 大 | 中 | 小 [2007-11-29 22:11 | by 张宴 ] [文章作者:张宴 本文版本:v1.2 最后修改:2008.01.02 转载请注明出处:http://blog.s135.…

简约而不简单:网站着陆页的设计(Landing Page Design)

着陆页是一个在线营销的概念,是指当访客点击一个搜索引擎优化的搜索结果进入的第一个页面或“着陆”页面。这是一个重要的页面,它和提供的产品或服务的广告有点类似,提供了与产品相关的精确的信息,告诉客户可以购买的产品或服务。…

大型高并发高负载网站的系统架构[转载]

鄙人先后在CERNET做过拨号接入,在Yahoo&3721搞过搜索前端,在猫扑处理过mop.com的架构升级,在6.cn视频网站从事开发工作,还在多年的工作中接触和开发过不少大中型网站的模块,因此在大型网站应对高负载和并发的解决方…

一步步学习SPD2010--第八章节--理解工作流(7)--创建网站工作流

一步步学习SPD2010--第八章节--理解工作流(7)--创建网站工作流 在之前版本的SP中,所有工作流都是以文档为中心。然而,不是所有的工作流都像那样。为了应对其他情况,SP2010现在支持网站工作流。网站工作流在SP网站上下文…

Hexo博客网站再配置

这两天整理网站方面的事&#xff0c;本地IIS部署&#xff0c;个人网站&#xff0c;发现我的hexo做的个人网站实在很单调&#xff0c;于是找来资料做进一步的配置。 一、网站图标 看一下hexo\themes\modernist\layout\_partial\head.ejs&#xff0c;找到这句&#xff1a; <li…

[前端]分享一个Bootstrap可视化布局的网站

如果你像我一样&#xff1a;是个前端渣&#xff0c;能看懂css和html&#xff0c;略懂Bootstarp&#xff0c;懒&#xff01; 当你每次都想独立完成一个web页面而不知道从哪里下手的时候&#xff0c;那么下面的这个网站&#xff0c;就是你所以需要的&#xff01; http://www.runo…

unity3D 在官方网站 下载资源 路径存储问题

第一步打开 官网 https://store.unity3d.com/account/users 或者 在unity3D软件中&#xff0c;单击 window 再单机 asset store 即可进入商店&#xff0c;在商店中可以找到免费的学习案例&#xff0c;如&#xff1a;Unity Sample UI&#xff0c;在搜索栏中输入Unity Sample …

你必须知道的,常用的机器学习相关网站!!!

很多人因为人工智能的大火&#xff0c;转变了职业规划或研究方向&#xff0c;开始了学习相关领域的知识之路&#xff0c;虽说人工智能领域应用很广泛&#xff0c;涉及到的知识的也很广泛&#xff0c;但机器学习作为基础知识是每个人必须要了解的知识。 机器学习的相关资料相信…

网站接入短信平台验证流程

以网站注册用户为例 前端页面,此处用到volicity前端验证,暂时不做深入 <form action"$!webPath/register_finish.htm" method"post" name"theForm" id"theForm"><table width"900" border"0" cellpaddin…

不知名网站编程(一)

不知名网站编程记录&#xff08;一&#xff09; function place(a) {c.fillStyle "red";c.fillRect(a,0,20,20);c.fillStyle "green";c.fillRect(a20,20,20,20);c.fillStyle "blue";c.fillRect(a40,40,20,20); }var a 0; while(a<200) {…

不知名网站编程(二)

不知名网站编程记录&#xff08;二&#xff09; var a 0; var b 0; while(b<6) {c.fillStyle "blue";c.fillRect(12*a,12*a,240-24*a,240-24*a);a 1;c.fillStyle "orange";c.fillRect(12*a,12*a,240-24*a,240-24*a);a 1;b 1; }var a 0; var b …

不知名网站编程(三)

不知名网站编程记录&#xff08;三&#xff09; var a 0; var b 0; do { c.fillStyle rgb(0,0,a);c.fillRect(b,b,20,20);a a 60;b b 20; }while(b<80);var a 0; var b 0; do {c.fillStyle rgb(255-1.2*a,255-0.6*a,a);c.fillRect(b,b,200-2*b,200-2*b);a a 6…

不知名网站编程(四)

不知名网站编程记录&#xff08;四&#xff09; var a 0; var b 0; do {c.fillStyle rgb(128a,0,128-a);c.fillRect(b,b,200-2*b,200-2*b);a a 32;b b 20; }while(b<80);var a 0; var b 100; do {c.fillStyle rgb(255-a,0,0);c.fillRect(0,0,b,b);a a 63;b b …

基于jsp技术的校园二手交易网站

【项目介绍】基于jsp的校园二手商品交易网站系统使用jsp技术进行开发&#xff0c;项目主要实现了一整套的校园二手交易逻辑&#xff0c; 主要功能如下&#xff08;包括但不限于&#xff0c;只列出主要功能&#xff09;&#xff1a;管理员模块 |-----用户管理 |-----商品管…

Windows 2012 R2版本下部署IIS网站

Windows 2012 R2是一个比较稳定的服务器版本&#xff0c;本文分享一篇在Windows 2012 R2版本下搭建IIS项目的操作流程。 1. 安装IIS Web服务器 打开远程桌面->控制面板->程序和功能->打开或关闭Windows功能->添加角色和功能 安装您的实际需求勾选必要的安装&#x…

技术文章精美配图模板网站推荐-创客贴

最近上海的风景很好&#xff0c;有清晨的微风、有蓝天白云&#xff0c;小编被大好河山迷住了&#xff0c;只顾着欣赏美景佳人&#xff0c;今天开始上班&#xff0c;把思绪和心情收回来&#xff0c;得花一些时间来写写东西&#xff0c;记录记录生活。我经常逛知乎&#xff0c;也…

手把手教你查看网站遭受到的Web应用攻击类型

常见Web应用攻击类型有&#xff1a;webshell、SQL注入、文件包含、CC攻击、XSS跨站脚本攻击、敏感文件访问、远程命令、恶意扫描、代码执行、恶意采集、特殊攻击、其他攻击十二种攻击类型。 如何查看网站遭受的Web应用攻击&#xff1f; &#xff08;请参照以下步骤&#xff1a;…

MySQL 测试数据(附开源网站)

MySQL测试数据 前言&#xff1a; 笔者接下来要步入MySQL DQL的学习阶段了&#xff0c;然而在开始学习时&#xff0c;苦苦没有测试数据&#xff0c;故花了很长时间利用某开源网站&#xff08;附在文章最后&#xff09;制作了4个数据表&#xff0c;四个表之间笔者经过考虑并没有…

DEDECMS打开网站后台系统首页卡解决方法

找到根目录下&#xff08;一般是dede&#xff09; templets文件夹下找到index_body.htm文件&#xff0c;将第25行至第41行部分注释或删除 保存文件&#xff0c;然后再打开后台&#xff0c;就不会有这个问题了。 转载于:https://www.cnblogs.com/500m/p/10534323.html