阅读更多

10顶
5踩

企业架构

转载新闻 百度贴吧10亿量级LAMP架构分享

2011-12-02 15:34 by 资深编辑 luiang1018 评论(17) 有13298人浏览
导读:天下武功,唯快不破。对日益激烈的互联网竞争你所拥有的利器就是快!本文来自百度贴吧的LAMP解决方案介绍,摘录至此旨在研究分享,看看其是如何全面支持快速迭代的。

贴吧是功能性产品,唯快不破是永恒的准则,这一特点决定了快速迭代是需要解决的关键性问题。快速迭代,分解开来有如下部分:开发阶段,快速开发;测试阶段,包含了环境快速搭建、自动化测试工具;运维阶段,包含了集群管理技术、自动化运维工具;同时,这三方面的工作需要一个整体性的解决方案衔接起来。

早期的贴吧,作为一个高性能社区,功能相对单一,全部采用C语言开发,系统可重用程度低,开发、测试效率低,运维方面的积累也很少。为了提高效率,开始尝试LAMP架构,经过几年的发展,贴吧已全部迁移到了LAMP。随着产品规模急剧膨胀,30+子系统,150+模块,500+机器,10亿+流量,在LAMP架构方面积累了很多经验,逐渐形成了快速迭代的一体化方案。如下图所示:


该解决方案由开发阶段、测试阶段、运维阶段组成。开发阶段又分成接入层、业务逻辑层、存储层。该解决方案支撑大规模的线上应用,同时保持了快速迭代的特性。基于该解决方案,开发人员能专注于业务逻辑开发,测试人员能专注于持续集成,运维成本能大大降低。

开发

开发方面分为接入层、业务逻辑层、存储层。

接入层处于浏览器和后端服务之间,用来解析http协议并组织成相应的协议格式,完成客户端和服务器之间的通信,还包括攻击防范、页面缓存、负载均衡等多种功能。Web server是其核心组成部分。接入层的目标是通过统一的方案提供简单可依赖的接入层架构,经过全面调研nginx具有通用性强、效率高、功能全面、配置灵活等特点,是webserver未来发展的主力军,确定采用nginx统一接入层。

业务逻辑层包含了PHP框架、业务逻辑、LIB库、交互层。业务逻辑层常常包含一些开发规范,这些规范就像法律一样,我们不仅要有法可依,还要有法必依。在我们的解决方案中,PHP框架=规范+库,规范比如目录部署规范、URL规范、配置规范等,这些规范通过相应的库实现,以达到有法必依的目的。LIB库封装常用的功能。基于这个解决方案,开发者开发应用,只需完成业务逻辑部分。

中间层,如下图所示,包含在业务逻辑层中,对于业务逻辑层的快速迭代非常重要。中间层对下做交互抽象,支持各种协议屏蔽协议细节;通过资源定位屏蔽部署细节;通过负载均衡提高系统稳定性。中间层对上做接口抽象,支持服务整合、接口适配、公共逻辑。中间层首先建立系统–子系统–模块的体系,进行服务整合,图中的API-LIB就是根据子系统划分,将各模块的接口(MIDL: Module IDL)转化为子系统接口(SIDL: Service IDL);接口适配,SERVICE的接口通过SIDL描述,让接口描述、接口文档、线上代码等自动同步,可维护性大大提高,同时通过元数据规范保证全系统的接口一致,易用性大大提高;收敛公共逻辑,对于公共逻辑,比如权限逻辑,收敛起来可维护性大大提高。


存储层,提供各种通用服务、组件。其中的通用数据存储框架提供通用的数据存储和访问解决方案,以一种统一的设计模式来支持大多数数据存储模块的设计和实现;统一数据访问接口,对外部屏蔽数据拆分和存储的细节;做到数据存储的良好扩展性,通过通用的数据拆分模式来应对数据增长;将具有共性的需求抽象成通用服务或通用库,以简化设计和开发。

基于该解决方案,开发一个应用只需要:在接入层配置相应的分流,在业务逻辑层开发业务逻辑,使用存储层合适的服务或基于框架完成数据模块开发。能大大的提高开发效率,支持快速迭代。

测试

测试方面,为了支持快速迭代,必须提高自动化程度。而影响自动化的首要因素就是环境自动构建,常见的问题有:环境复杂,比如关联关系复杂;环境搭建代价过大;环境功能不完整等。采用基准环境能解决这一问题,项目上线后自动从scmpf更新到基准环境;测试环境/开发环境从基准环境同步。基于基准环境,系统级别的持续集成也成为可能,同时可以集中大量测试工具。


运维

运维方面面临着很多问题:服务迁移成本高,环境不一致带来各种回滚,机器利用率不均衡,运维自动化程度低。为了解决这些问题,提出PHP系统运维方案。环境同步方面,主要是代码同步的问题,采用运维规范+监控的方案;性能监控方面,基于交互层完成请求状态、交互性能监控,基于调度中心获取机器状态;机器调度方面,通过调度中心完成动态/半自动机器调度。如下图所示:


展望

通过该LAMP解决方案,在开发、测试、运维方面都能极大的提高效率。未来在LAMP架构方面,需要更多的在规范化、平台化上下功夫。规范之后才能开展这种自动化的工作提高效率;平台化可以把各种规范固化下来,提供自动化的支持。

  • 大小: 38.7 KB
  • 大小: 32.8 KB
  • 大小: 9.2 KB
  • 大小: 12.8 KB
来自: baidu-tech
10
5
评论 共 17 条 请登录后发表评论
17 楼 kurier 2011-12-18 21:37
没看到什么关键点,泛泛而谈
16 楼 advantech 2011-12-05 13:58
泛泛而谈,对一线开发人员没太大的实际价值。
15 楼 wuxi7227 2011-12-05 11:09
贴吧没用过,进去看过几次。感觉这篇文章没说到重点上,不愿意透露技术还是作者不了解说不出重点呢。看完了还是不知道大流量系统怎么设计架构,采用何种技术来性能调优的。
14 楼 jansel 2011-12-05 10:53
贴吧的逻辑还是比较简单,而且比较独立,性能解决方案还比较容易想到。难的是那种,逻辑复杂,依赖强,但是还要求性能的。
13 楼 lonelybug 2011-12-04 23:25
流量大,就买好点的卫生巾。这种如何搭建系统的文章太没有可指导性了,没一个网站都有自己的侧重点和性能平静。
12 楼 red_devils 2011-12-04 22:37
http://stblog.baidu-tech.com/?cat=20这里有原文,有些人别那么酸,贴吧的量级很多人做一辈子技术都接触不到.
11 楼 wangfy1685 2011-12-04 11:34
没怎么用,估计是快被淘汰出局的产品了。
10 楼 awol2005ex 2011-12-03 16:29
贴吧很快很稳定 ,反而是百科经常很卡
9 楼 ruby_tei 2011-12-03 11:12
javaeye还是有不少这样的人.嫉妒,小心眼.记得刚来时发个帖子.问一些就业问题,一通贬低.最关键的是不帮我回答问题,只是贬低.怪不得,程序员有好多找不到女朋友.就这样谁跟,谁sb.
8 楼 _j_ 2011-12-03 09:20
百度贴吧不太用

到是在google里搜到百度知道的很多内容,但每次点进去都很慢
7 楼 achun 2011-12-03 07:50
百度还是有很多好产品的,但是贴吧这种垂直搜索的产品应该可以有多种可行的技术实现
而这篇新闻的内容给的不像技术方案,到像是部门组织结构,至于那些层,呵呵,只要有多台服务器的都有这样的架构,没啥新鲜的。
ITEYE和厂商合作是好事儿,这是个大环境,需要沟通合作。不过如果这样操作内容的话。
ITEYE就变成新闻BD站了。
如果给我下任务写百度贴吧,我宁愿写一篇贴吧的管理流程,而不谈技术。
6 楼 dieslrae 2011-12-03 01:43
百度贴吧还行吧,流量蛮大的
5 楼 foohsinglong 2011-12-03 01:12
怎么看,怎么象软广告.
4 楼 aa87963014 2011-12-02 21:31
楼上这2位。。。人家一个贴吧的帖子数可能是你们应用记录数好几倍。。。
3 楼 groovyzhou 2011-12-02 21:30
百度贴吧一到晚上慢得一塌糊涂
2 楼 shaomeng95 2011-12-02 20:18
狗屎,还有脸上新闻?
1 楼 fjjiaboming 2011-12-02 15:57
快个屁.
便宜倒是.

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 转载 - 百度贴吧10亿量级LAMP架构分享

    本文来自百度贴吧的LAMP解决方案介绍,摘录至此旨在研究分享,看看其是如何全面支持快速迭代的。 文章内容如下: 贴吧是功能性产品,唯快不破是永恒的准则,这一特点决定了快速迭代是需要解决的关键性问题。快速迭代...

  • 百度贴吧10亿量级LAMP架构

    本文来自百度贴吧的LAMP解决方案介绍,摘录至此旨在研究分享,看看其是如何全面支持快速迭代的。 贴吧是功能性产品,唯快不破是永恒的准则,这一特点决定了快速迭代是需要解决的关键性问题。快速迭代,分解开来...

  • Bookmarks

    CSDN.NET - 全球最大中文IT社区,为IT专业技术人员提供最全面的信息传播和服务平台博客园 - 程序员的网上家园OPEN开源文档,技术文档分享平台Java开源大全IBM 网站 - 您访问的页面无法显示。中国知识资源总库——...

  • 使用 Simulink(R) 在 AWGN 信道上执行带穿孔的软判决维特比解码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手

  • 极化码的高斯近似过程,基于matlab平台.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手

  • 广东省关于人工智能赋能千行百业的若干措施.docx

    广东省关于人工智能赋能千行百业的若干措施.docx

  • 湖北省数据条例(草案)(征求意见稿).docx

    湖北省数据条例(草案)(征求意见稿).docx

  • CSS网站布局与开发技巧(pdf电子书)最新版本

    中软国际IT培训中心的培训教程,属于学习CSS网页设计的基础入门教程,讲一些原理和概念,高深的理论不太多。

  • Python 中数据结构和算法的最少示例.zip

    Python Data Structures and Algorithms Minimal and clean example implementations of data structures and algorithms in Python 3. Contribute Thank you for your interest in contributing! There are many ways to contribute to the project. Start testing from here Take note when running all tests using unittest $ python3 -m unittest discover tests To run some specific tests you can do the following (e.g. sort) $ python3 -m unittest tests.test_sort Run all tests using pytest Make a note when $ python3 -m

  • TeamIDE-win-2.6.31Team IDE 集成MySql、Oracle、金仓、达梦、神通等数据库、SSH、FTP、Redis、Zookeeper、Kafka、Elasticsearch、M

    TeamIDE-win-2.6.31Team IDE 集成MySql、Oracle、金仓、达梦、神通等数据库、SSH、FTP、Redis、Zookeeper、Kafka、Elasticsearch、M

  • C/C++/Python/Java四种语言下的算法实现资源概览

    内容概要:本文综述了C、C++、Python、Java这四种主流编程语言中,用于实现常见和高级算法的学习资料,覆盖范围广泛,从书籍、在线课程平台到GitHub上的开源代码仓库均有提及。每种语言都详述了推荐的学习资源及其优势,旨在满足不同程度学习者的需要。 适合人群:对算法实现有兴趣的学生、自学爱好者、开发者等。 使用场景及目标:帮助读者挑选合适的语言和资源深入理解算法的理论与实际编码技巧,适用于个人提升、项目实践或教学使用。 其他说明:文章提供了丰富的学习渠道和实战项目,既适合作为基础理论的学习,也适合于实际操作练习,尤其强调通过实做加深理解的重要性。

  • aiuiphone0000000000000000000

    aiuiphone0000000000000000000

  • 支持多场景回调开箱即用 原生仿百度登录验证.zip

    支持多场景回调开箱即用 原生仿百度登录验证.zip

  • 2023 年“泰迪杯”数据分析技能赛B题-企业财务数据分析与造假识别

    2023 年“泰迪杯”数据分析技能赛B题-企业财务数据分析与造假识别 完整代码

  • Levenshtein Python C 扩展模块包含用于快速计算 Levenshtein 距离和字符串相似度的函数.zip

    Levenshtein Python C 扩展模块包含用于快速计算 Levenshtein 距离和字符串相似度的函数内容需要维护者介绍文档执照历史源代码作者需要维护者我 (Mikko Ohtamaa) 目前不维护此代码。我只是为了方便起见才将其拉到 Github 上的(之前在公共存储库中不可用)。因此,如果您提交了任何问题,我都不会调查。介绍Levenshtein Python C 扩展模块包含用于快速计算的函数Levenshtein(编辑)距离和编辑操作字符串相似度近似中位数字符串,以及一般字符串平均值字符串序列和集合相似度它同时支持普通字符串和 Unicode 字符串。需要 Python 2.2 或更新版本。StringMatcher.py 是一个基于 Levenshtein 构建的类似 SequenceMatcher 的示例类。它缺少一些 SequenceMatcher 的功能,但又有一些额外的功能。Levenshtein.c 也可以用作纯 C 库。您只需在编译时定义 NO_PYTHON 预处理器符号 (-DNO_PYTH

  • 基于OpenCV像素检测的Onmyoji游戏脚本

    基于OpenCV像素检测的Onmyoji游戏脚本

  • 机器人算法的 Python 示例代码 .zip

    Pythonbot高斯网格图射线投射网格图激光雷达至网格地图k-均值对象聚类矩形接头大满贯迭代最近点 (ICP) 匹配FastSLAM 1.0路径规划动态窗口方法基于网格的搜索Dijkstra 算法A* 算法D*算法D* Lite 算法位场算法基于网格的覆盖路径规划国家网格规划偏极采样车道采样概率路线图(PRM)规划快速探索随机树(RRT)回程时间*RRT* 和 reeds-shepp 路径LQR-RRT*五次多项式规划Reeds Shepp 规划基于LQR的路径规划Frenet 框架中的最佳轨迹路径追踪移动到姿势控制斯坦利控制后轮反馈控制线性二次调节器 (LQR) 速度和转向控制模型预测速度和转向控制采用 C-GMRES 的非线性模型预测控制手臂导航N关节臂对点控制带避障功能的手臂导航航空导航无人机三维轨迹跟踪火箭动力着陆双足动物倒立摆双

  • 可信任的企业4.0生态系统.pptx

    可信任的企业4.0生态系统.pptx

  • C语言档案管理系统 代码完整

    学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。试设计一学生信息管理系统,系统提供菜单方式作为人机界面并具有如下功能: 学生信息录入功能 学生信息浏览功能 按学号、姓名等进行查询、排序功能 2、要求界面简单明了;对输入的数据具有有效性检查能力,比如输入的成绩不在0~100之间,要求重新输入;

Global site tag (gtag.js) - Google Analytics