`
chinese.darren
  • 浏览: 101312 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

百度贴吧10亿量级LAMP架构

阅读更多
网上看到一篇不错的文章,和大家分享一下

导读:天下武功,唯快不破。对日益激烈的互联网竞争你所拥有的利器就是快!本文来自百度贴吧的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架构方面,需要更多的在规范化、平台化上下功夫。规范之后才能开展这种自动化的工作提高效率;平台化可以把各种规范固化下来,提供自动化的支持。
分享到:
评论

相关推荐

    百度贴吧10亿量级LAMP架构分享

    贴吧是功能性产品,唯快不破是永恒的准则,这一特点决定了快速迭代是需要解决的关键性问题。...随着产品规模急剧膨胀,30+子系统,150+模块,500+机器,10亿+流量,在LAMP架构方面积累了很多经验,逐

    互联网公司技术架构资料.百度.贴吧架构实践

    贴吧架构实践”主要聚焦于百度贴吧这一中国领先的在线社区平台的技术架构,尤其是其面对大数据量、高并发访问、快速开发及复杂应用类型时所采取的策略与解决方案。百度贴吧,作为百度旗下的一个大型综合性社区,不仅...

    cpp-一个开源的BigtableC实现百度万亿量级分布式数据库Tera

    《C++实现的Bigtable开源版:百度Tera——万亿量级分布式数据库解析》 在IT领域,尤其是在大数据处理与存储方面,分布式数据库系统扮演着至关重要的角色。百度Tera,作为一款基于C++实现的开源Bigtable版本,为海量...

    百度开源的万亿量级数据库系统 ​Tera.zip

    Tera 是一个高性能、可伸缩的数据库系统,被设计用来管理搜索引擎万亿量级的超链与网页信息。为实现数据的实时分析与高效访问,我们使用按行键、列名和时间戳全局排序的三维数据模型组织数据,使用多级Cache系统,...

    Druid 实时OLAP数据仓库架构详解

    • 快,亚秒级响应,官网说10亿量级下做到亚秒响应,我们实际应用也是亚秒响应,实时导入,导入即可查询。导入了以后我们就可以查询到,这个还是非常非常的牛的。 • 好,就是高可用,分布式容错架构,可以做到无宕...

    京东亿级流量海量数据搜索架构.pdf

    京东亿级流量海量数据搜索架构主要关注的是如何处理大规模数据的高效检索问题,这在电商领域至关重要,因为搜索是用户获取商品信息的主要途径。京东的搜索系统经历了从简单到复杂、从非实时到实时、从集中式到分布式...

    16_分布式搜索引擎在几十亿数据量级的场景下如何优化查询性能?.zip

    分布式搜索引擎在处理几十亿数据量级的场景时,面临着巨大的挑战,主要集中在查询性能优化、数据分布与索引构建、负载均衡以及系统扩展性等方面。本文将深入探讨这些关键知识点。 首先,对于查询性能优化,分布式...

    b2Core MVC 架构 v3.0.zip

    b2Core是一个超轻量级的架构。它的核心代码不到200行。包括 3个核心类,2个核心函数。 它可以被用做学习 PHP MVC 架构的快速入门。如果你用过 CI 或者类似的构架看过代码后你可以马上上手。   b2Core 更新至 3.0 ...

    阿里万亿交易量级下的秒级监控.docx

    综上所述,阿里万亿交易量级下的秒级监控通过创新的架构设计、实时处理技术以及高可用性策略,成功地应对了大数据量下的实时监控挑战,确保了业务的稳定运行和问题的快速定位。这种解决方案对于其他大型互联网公司和...

    物联网技术驱动,互联网通信云市场有望增长至千亿量级.pdf

    在物联网技术的驱动下,互联网通信云的应用场景边界将向外拓展,使得互联网通信云的市场空间有潜力从现在的百亿元增长到千亿元量级。这种增长前景主要基于三个方面的机遇:一是把握移动互联网产业周期,积极开拓新兴...

    万亿交易量级下的秒级监控.pdf

    总的来说,Sunfire是针对万亿交易量级下实现秒级监控的解决方案,它通过高效的数据处理架构、精确的数据验证和强大的稳定性保障,确保了在大规模交易环境下的实时监控能力和故障应对能力。这一系统对于大型互联网...

    Tumblr 架构设计

    这种架构在初期能够满足需求,但随着用户量级的增长,尤其是面对每天5亿次页面浏览、每秒约4万次请求的峰值、每日新增约3TB数据的存储需求,原有的架构开始显现出瓶颈。更关键的是,在仅有的四名工程师的支持下,...

    mysql百万量级优化

    随着业务规模的不断扩大,数据库性能成为系统架构中至关重要的部分。MySQL作为一款广泛使用的开源关系型数据库管理系统,在面对大规模数据处理时,如何有效地进行优化显得尤为重要。本文将围绕“MySQL百万量级优化”...

    物联网技术驱动,互联网通信云市场有望增长至千亿量级.zip

    随着5G、AI、大数据等新兴技术的融合,互联网通信云市场正迎来前所未有的增长机遇,有望在未来几年内增长至千亿量级。 物联网(Internet of Things, IoT)是指通过网络将各种设备、物品、传感器等连接在一起,实现...

    android原生User-agent数据,10万量级

    android原生User-agent数据,10万量级。数据来源于https://user-agents.net/random

    iOS应用架构介绍

    iOS应用架构是一个用于指导开发者如何设计和构建iOS应用程序的概念框架。在开发iOS应用时,通常会涉及到视图层、网络层和数据存储层这三个关键层次的架构设计,每个层次都有其特定的功能和设计原则。 视图层是用户...

    JAVA架构师掌握内容.pdf

    架构师需要把产品的需求翻译成软件工程的设计文档,确定各个系统与模块的边界,评估系统的量级; 2.团队指导 架构师需要把较大的项目和需求拆分,合理分配给研发团队的成员,并且在必要的时候进行技术上的培训指导;...

Global site tag (gtag.js) - Google Analytics