写点什么

豆瓣首席架构师洪强宁的年度展望

2010 年 3 月 29 日

从我 2006 年加入豆瓣团队以来,豆瓣无论从规模上还是从架构上都发生了很大的变化,并且看起来这个变化会越来越快,越来越激烈。从刚入职时十万级PV,到百万级PV 到千万级PV 再到并不遥远的亿级PV 目标,在每一个阶段,都给系统架构带来不小的挑战。

2009 年 4 月份,我应泰稳和大辉的邀请在 QCon 大会上和大家分享了豆瓣从最初上线到当时的系统架构变迁历程,没想到得到了很多人的关注和共鸣,从一个侧面也反映出来系统架构如何按需而变是大家共同关注的问题。架构设计是为了解决实际问题,一切的考虑从这个出发,可以避免无用的过度设计。

关注性能和可用性

2009 年,豆瓣的用户规模达到了千万级,最直接的需求是要解决数据量增加带来的性能问题,以及作为一个有影响力的网站,可用性要求需要上一个台阶的问题。前一个问题,我们通过对 doubandb(开源版本 beansdb 已经在 12 月份在 google code 上发布了第一个版本)进行了进一步的性能优化(主要是哈希树的内存缓存和数据的异步读写),并对一些影响性能的MySQL 大表做了水平拆分来解决。后一个问题,则是逐步完善各服务的fail over 机制,建立服务部署规范,扩大监控范围,并开发了一系列的小工具来简化配置更新和上线操作。在按需设计的同时,注意对设计模式的识别和抽象,总结方法,以规范和基础设施的形式将好的设计推广,可以说是我在工作中最重要的心得。

建立面向服务的架构

当前豆瓣的信息架构正面临着巨大的调整,传统的读书、电影、音乐三个栏目将以独立的二级域名子站方式呈现,而www 域名则成为社区站。各子站在发展路线和资源配给上会依各自不同的产品特性而具有一定的独立性。反映在技术架构上,则是需要把原来耦合度较高的代码和服务,依照产品类型进行解耦,为各产品线的未来发展留出更大空间。如何让这个过程进行的更为平滑,对产品开发工程师的干扰更小,是我目前最关注的问题。

同时,随着解耦的进行,各产品线新功能的不断推出,以及移动客户端战略的推进,会有更多的功能模块需要以服务的形式独立出来,豆瓣的架构也会越来越向面向服务的架构(SOA)倾斜。这是一个逐步发展的过程,在这个过程中,如何实现好SOA 治理,如何在与性能和开发维护方便性的关系中取得好的平衡,不为将来的系统留下混乱的隐患,都是非常值得研究的课题,也是现在我正在重点考虑的内容。

2010 年的关注点

在 2010 年,我希望能够在以下几个技术点上有所收获:

  1. NoSQL 数据库。09 年可以说是 NoSQL 数据库蓬勃发展的一年,各个流派的 NoSQL 数据库层出不穷,豆瓣也贡献了分布式 Key-Value 存储类型的 beansdb 给开源社区。2010 年里,相信这些新兴数据库会逐步稳定和成熟起来,也能看见大量的实际使用案例。对其他类型的 NoSQL 数据库的应用,以及与传统 RDBM 的配合使用(NoSQL 的意思是 Not Only SQL,关系型数据库在不少场合下仍然是最优选择),消除 RDBM 在 scalability 上的劣势,会是一个很有意思的课题。

2. 多语言混合开发。豆瓣技术团队传统的开发语言是 Python 和 C,但随着团队成员兴趣的不断扩展,以及新鲜血液的不断流入,对其他开发语言的应用也逐步增多。C++、Java、R、Erlang 以及 Google 在 09 年新推出的 Go 语言,在团队内部都有爱好者,而且这些语言各有特色,各有特别适合的使用场景。如何充分发挥 Python 的胶水语言作用,以及充分发挥 SOA 架构实现无关的特性,来达到让每一个语言各尽其能的效果,也是一个不错的研究对象。

3. 并行计算平台。随着数据规模的增长,豆瓣的后台算法已经很难在单机上完成计算任务,越来越依赖多机并行计算来保证运算速度。目前已经初步实现了基于 MPI 的并行计算平台,基于 Hadoop 的 MapReduce 平台也正在搭建之中。希望能够对它们进行深度定制和二次开发,让它们协同工作,各取所长,并且能够与豆瓣的其他基础设施如 doubandb 完美协作,成为豆瓣规模化运算的方便平台。

  1. SaaS。随着豆瓣的商业发展,会出现面对合作伙伴或用户的付费服务需求。一个完备的 SaaS 架构会是成功的基础。这对豆瓣而言是个全新的领域,并且对可用性、数据准确性等提出了更高的要求,也是很有挑战性的。

相关内容:

1、架构师(三月刊)

2、 2010 年大规模技术架构的思路

3、淘宝网架构师岳旭强的年度展望

4、一个技术观察者的年度展望


个人简介:洪强宁,2002 年毕业于清华大学,现任北京豆瓣互动科技有限公司首席架构师。洪强宁和他带领的技术团队致力于用技术改善人们的文化和生活品质,在网站架构、性能、可伸缩性上进行深入研究。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大 家加入到 InfoQ 中文站用户讨论组中与我们的编辑和其他读者朋友交流。

2010 年 3 月 29 日 21:059846

评论

发布
暂无评论
  • 架构作业 -- 相交链表

    有两个单向链表(链表长度分别为 m,n),这两个单向链表有可能在某个元素合并,也可能不合并,如下图所示的这样。现在给定两个链表的头指针,在不修改链表的情况下,如何快速地判断这两个链表是否合并?如果合并,找到合并的元素,也就是图中的 x 元素。

    2020 年 11 月 14 日

  • 机器学习在苏宁搜索平台中的实践

    演讲嘉宾李春生,苏宁易购 IT总部搜索研发中心技术总监内容介绍搜索引擎作为网站的主要流量入口,搜索的用户体验对整个网站起到至关重要的作用,优化搜索、提升用户体验,首先需要大量的数据,用户行为数据、商品专家数据以及海量的用户输入表达数据。其次需要机器学习算法针对既有的数据进行学习与组织数据,建立合理的模型,用数据去理解用户创建用户画像,同时还需要及时识别各种异常情况,对异常行为数据进行相应的惩处措施,在充分了解用户行为与商品模型的前提下为用户提供更优的搜索体验。本次分享主要基于多年搜索实践经验,讲述搜索如何利用机器学习在商品排序、用户意图识别、商品异常检测、异常流量检测、架构优化等方面的应用。内容大纲 搜索系统总体介绍 (1)苏宁易购搜索系统范围 (2)苏宁易购搜索系统架构演变 搜索系统面临哪些难题 (1)用户意图的理解 (2)如何智能纠正与扩展用户query (3)商品乱挂现象影响搜索排序 (4)作弊给搜索带来的影响 如何利用机器学习技术解决搜索难点 (1)基于CRF的中心词识别模型 (2)基于知识图谱的query扩展 (3)基于CNN与Naive Bayes实现图片与文本类别识别 (4)基于常用分类器实现的黑白分类检测作弊行为 问答式内容搜索系统试水 (1)搜索的召回更加丰富性 (2)基于NLP技术对query进行处理 (3)基于知识图谱进行查询推导 (4)问答式搜索适用场景与用户

    2019 年 1 月 7 日

  • 2011 互联网技术发展浅析

    杨卫华先生从编程语言、数据及存储、平台及应用、技术动向等方面为读者分析了2011年互联网技术的发展。

  • NoSQL 开篇——为什么要使用 NoSQL

    NoSQL在2010年风生水起,大大小小的Web站点在追求高性能稿可靠性方面,不由自主都选择了NoSQL技术作为优先考虑的方面。今年伊始,InfoQ中文站有幸邀请到凤凰网的孙立先生,为大家分享他之于NoSQL方面的经验和体会。本文为专栏的开篇,从整体上介绍了NoSQL。

  • 专访 SegmentFault 创始人祁宁

    社会化问答网站自去年起就成为了互联网行业的热点之一,针对程序员的垂直类问答网站也已经出现,本文所提到的SegmentFault(思问)就是其中典型的代表,我们采访到了高阳(@高阳Sunny)和祁宁(@joyqi)。

  • ArchSummit 讲师专访:腾讯微博张松国谈腾讯微博的架构成长过程

    由InfoQ主办的全球架构师峰会将于2012年8月10日-12日在深圳举行,为了更好地诠释架构的意义、方法和实践,InfoQ中文站近期会集中对参会的讲师进行专访,本期采访的是来自腾讯微博事业部的技术总监张松国 ,他将会做题为“腾讯微博的架构成长过程”的分享。

  • 从手机 QQ 技术发展,看架构设计核心 3 原则

    架构设计的三条核心原则:合适原则、简单原则和演化原则。

  • QCon 北京报道:豆瓣首席架构师洪强宁谈 Python 语言

    在4月23日至25日召开的QCon Beijing 2010大会上,来自豆瓣网的洪强宁为与会开发者分享了Python语言用于Web 2.0网站开发的经验。豆瓣网从开发初期,便选用Python作为主要的网站构建语言,同时Python也是目前豆瓣网使用最广泛,基础最深厚的语言。作为豆瓣网首席架构师,洪强宁和他带领的技术团队在网站开发过程中,在Python语言使用方面积累了大量经验,同时在网站架构、性能、可伸缩性方面进行了深入研究。在QCon大会期间,InfoQ中文站编辑就Python语言本身的特性,Python在Web 2.0站点开发中的适用性,以及豆瓣网的BeansDB开源项目等内容,对洪强宁进行了访谈。

  • 黄晶谈人人网架构

    在2010年的QCon北京大会上,InfoQ的编辑对人人网产品技术高级总监黄晶进行了采访,其中他谈到了关于人人网从校内到现在所做的架构上的转变,还谈到了人人网创建并使用的两个开源项目。

  • 第十二章总结

    第十二章架构总结:

    2021 年 1 月 10 日

  • 基于 AI 的移动端自动化测试框架设计与实现

    演讲嘉宾何梁伟,爱奇艺 Android架构师内容介绍本次演讲主要从 AI 在自动化测试领域的应用角度出发,介绍了一款结合传统图像处理技术和深度学习在视觉处理和 OCR 上的应用,以视觉识别为技术支撑点的全新的自动化测试框架。由于传统框架存在对系统视图树的依赖强、资源 ID 和视图类型锁定繁琐、ID 混淆维护成本高等问题,而该框架从视觉识别出发,生成了一套直观的视图树,恰好屏蔽了这些问题,大大降低测试用例的编写成本和维护成本,提升框架的跨平台能力,让测试用例变得更加人性化。同时还与大家一起分享在实践过程中领悟到的深度学习的优势与挑战。内容大纲 理想中的自动化测试框架; 深度学习带来的机会; 基于 AI 的自动化测试框架的诞生; 基于 AI 的测试框架优势与挑战; 利用 AI 做更多的技术升级。

    2019 年 1 月 2 日

  • Powerset:HBase 的老东家

    Powerset是一家被微软收购多年的创业公司,它在Hadoop的生态圈里实现了BigTable的开源版。

    2018 年 4 月 27 日

  • 智能风控 SaaS 服务高可用演进之路

    演讲嘉宾孙奇,同盾科技高级技术专家内容介绍同盾科技智能风控SaaS服务作为ToB的第三方风控系统,具有客户数量多,客户需求多样化,流量与客户流量同步上涨,虚假黑产流量占比高且流量变化大等业务特点。本次议题将讨论智能风控SaaS服务系统,在客户数不断增多,业务流量不断上涨的过程中,为了满足99.99%,200ms以内响应的目标,在架构调整,应用优化,在线计算能力提升,存储升级,多机房建设等方面所做的实践。

    2018 年 12 月 18 日

  • 聊聊 Flutter,面对层出不穷的新技术该如何跟进?

    Flutter在保证性能下实现跨平台开发,更是成为谷歌下一代操作系统的UI框架,为移动技术的发展提供了非常大的想象空间。

    2019 年 4 月 11 日

  • NewSQL 在转转的千亿规模应用实践

    本次分享介绍一些一线的调研和使用 NewSQL 的经验,以及相关的业务场景的表现。

  • Amazon Aurora 在西云数据运营的 AWS 中国(宁夏)区域落地

    很多用户在开发软件系统时,使用了传统的 MySQL 数据库,随着访问用户的增长,数据库读写变的异常频繁,常常会遇到性能瓶颈。

  • 为知笔记:从 PC 软件到移动应用的选型思考

    相比传统的PC软件,移动互联网应用服务对界面、业务逻辑与底层架构往往有着不同的需求,因此PC软件转型到移动互联网应用服务往往需要较大的重构工作。近日,InfoQ中文站与为知笔记CEO李峻进行了沟通,了解为知笔记在客户端开发与后端架构设计方面的一些选型思考。

  • 电商搜索系统质量保障体系建设

    演讲嘉宾李友科,京东 商城搜索与推荐平台部架构师内容介绍背景:电商搜索的主要对象是商品,目标是用户精确找到商品,卖家有机会曝光商品,商城构建良好的生态。围绕这个三个核心业务指标,系统稳定、结果精确、研发效率、排序效果,既是电商搜索系统研发的目标,也是挑战。几个具体的例子,从规模上,有30多个搜索系统,服务3亿+活跃用户;数据量上,商品量数十亿;人员上,开发和测试比 12:1,北京、深圳和硅谷多地协调。实施后效果:质量保障体系建设起来后,200+研发团队协同开发,平均每周上线40多个功能,平均迭代速度5-6天;其中算法ab,每天多次上线。快速把业务需求转化成收益,同时保证系统的稳定、业务的 KPI 和用户体验。解决方案选型:质量保障体系有几个特点:服务化、自动化、智能化。服务化,解决是 测试/开发占比低、异地协同的问题。自动化,主要是提高研发、测试和部署速度。智能化,主要是对搜索结果精确、排序效果的评估,发现业务 KPI 异常、badcase。方案介绍: 服务化(platform as a service),提供自助部署 All-in-one min 集群的服务、code review 服务、性能压测服务、diff 评估服务、搜索效果评估服务、个性化评估服务。 自动化:完整的持续集成流水线,包括:precomit、component、deploy、test;为了提高部署效率,对AB集群搭建持续部署流水线。智能化:是把人工标注的、用户投诉和反馈的体验问题,转化为人工智能识别的特征与标注类别,最终通过监督学习的方法进行模型训练,把训练好的模型用来检测搜索效果问题,最终人工对人工智能预测出的效果问题进行二次评价和处理,并反馈给模型持续训练。 另外,强调2点:一个是流程规范,一个是可运维和可运营。流程规范就是把研发有序组织起来研发和交付,是形成意识培养文化,服务化、自动化和智能化是帮助流程规范落地;整个质量保障体系,能否落地关键是可运维和可运营。内容大纲 质量保障体系 电商搜索业务场景和问题挑战 电商搜索质量保障体系实践 3.1 服务化 3.2 自动化 3.3 智能化 电商搜索质量保障体系难点 规范流程制定和落地、可运营和可运维

    2019 年 1 月 2 日

  • 潘磊谈阿里巴巴国际站发展历程

    InfoQ中文站记者在QCon北京站期间采访了阿里巴巴国际站架构师潘磊,就阿里巴巴国际站的现状、发展历程以及一些诸如Cache、跨IDC数据同步、NoSQL之类的技术问题做了深入探讨。潘磊还对那些希望成长为架构师的朋友提出了宝贵建议。

  • 大数据:编程语言真的重要吗?

    在大数据领域内,每一毫秒的性能损失都影响巨大。然而,像Python这样通常被认为性能不是太好的编程语言,在过去一年中却变得越来越流行了。大数据社区最近出现的一些文章和讨论,又一次点燃了用于数据科学以及大数据领域的编程语言选择之争。

发现更多内容

告别手写,一键生成 Helm Chart README

郭旭东

Kubernetes Helm

Linux-常用命令

Flychen

Linux

听保洁老大爷讲Java的垃圾回收

侯树成

JVM

tcp_tw_recycle 【坑】

孤星可

TCP 服务端

职场寒冬,给你讲四个小故事

池建强

人生 职场

我的理财小心得

史前靓仔

扎心!天天写代码,方向真的对吗?

Apache Flink

大数据 flink 流计算 实时计算 大数据处理

自动化测试框架知识,读这一篇就够了!

陈琦

程序员 DevOps 自动化 测试

NumPy 运算规则总结

张利东

Python

常用电脑软件清单

彭宏豪95

软件 工具 windows 生产力

PyTorch 1.5 发布,与 AWS 合作 TorchServe

神经星星

人工智能 facebook 微软 亚马逊云 AWS Lightsail 工具

docker安装mysql5.7并挂载目录到本地

桥哥技术之路

Docker

自助设备系列——上下游

孙苏勇

产品 行业资讯 智能设备

聊聊“坚持”这件事

小天同学

个人成长 写作 坚持 自控力

2020年程序猿必读10本好书推荐

ABC实验室

学习 2020 程序员 好书推荐

5G来临,我们该如何打造自己的家庭数据中心基础篇

ABC实验室

5G 数字资产 家庭数据中心

freecplus框架,Linux平台下C/C++程序员提高开发效率的利器

C语言技术网-码农有道

我的工作原则与思考

梁帅

互联网 工作效率 原则

从全国首起暗网案件告破说起——暗网,超乎你想象

石君

网络安全 暗网 洋葱网络

我是如何读完技术书,然后忘得一干二净的

ayesd

读书 读书方式

为什么公众号订阅没有「分组」的功能?

Fenng

微信公众平台 产品设计

使用JUnit、AssertJ和Mockito编写单元测试和实践TDD (二)为什么要写单元测试

编程道与术

编程 编程语言 TDD 代码审查 单元测试

Flutter Andorid真机或打包APK杂症记录

北风烈

flutter 打包APK

Oracle 将为职场歧视买单,4100 位女员工集体诉讼

神经星星

oracle 互联网巨头 互联网 职场

python 文章中图片下载

Flychen

游戏夜读 | 游戏数据分析师

game1night

2020版Kubernetes快速上手指南,让你所见即所得

ABC实验室

Kubernetes 容器 云原生 群集安装 新手指南

最新Idea 2020.1 二种方法激活教程

公众号:V5codings

intellij-idea

给程序员的错误找个台阶

曲水流觞TechRill

人是一切

Neco.W

个人感想 感悟

理解 Java 序列化

RookieMZL

InfoQ 极客传媒开发者生态共创计划线上发布会

InfoQ 极客传媒开发者生态共创计划线上发布会

豆瓣首席架构师洪强宁的年度展望-InfoQ