您当前的位置:首页 > 电脑百科 > 程序开发 > 架构

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

时间:2019-12-02 11:45:09  来源:  作者:

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

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

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

 

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

开发

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

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

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

LIB 库封装常用的功能。基于这个解决方案,开发者开发应用,只需完成业务逻辑部分。

中间层,如下图所示,包含在业务逻辑层中,对于业务逻辑层的快速迭代非常重要。中间层对下做交互抽象,支持各种协议屏蔽协议细节;通过资源定位屏蔽部署细节;通过负载均衡提高系统稳定性。中间层对上做接口抽象,支持服务整合、接口适配、公共逻辑。

中间层首先建立系统–子系统–模块的体系,进行服务整合,图中的 API-LIB 就是根据子系统划分,将各模块的接口(MIDL: Module IDL)转化为子系统接口(SIDL: Service IDL);接口适配,SERVICE 的接口通过 SIDL 描述,让接口描述、接口文档、线上代码等自动同步,可维护性大大提高,同时通过元数据规范保证全系统的接口一致,易用性大大提高;收敛公共逻辑,对于公共逻辑,比如权限逻辑,收敛起来可维护性大大提高。

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

 

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

 

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

 

 

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

测试

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

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

 

运维

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

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

 

展望

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



Tags:百度贴吧   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
图片来源@视觉中国文 | 一刻商业,作者 | 云梦泽,编辑 | 于沐沉寂已久的百度贴吧又受到了关注。不过,此次引发讨论的却是“百度贴吧用户流失近九成”的话题。根据易观千帆公布数...【详细内容】
2021-11-10  Tags: 百度贴吧  点击:(22)  评论:(0)  加入收藏
我们在做视频,或写文章,写公众号的时候,经常需要用到一些素材图片,这时候我们可以去百度贴吧搜索该类型贴吧的图片,但是我们如果每个帖子都去看去寻找,就会浪费掉我们大量时间,今天...【详细内容】
2021-08-09  Tags: 百度贴吧  点击:(55)  评论:(0)  加入收藏
身为全球最大的中文社区,贴吧是百度旗下的一个免费流量池,不管做站内流量还是搜索引擎流量,都是巨大金矿。贴吧百度权重PC端移动端都是10,什么概念,按1-10排名,10属于最顶级的权重...【详细内容】
2021-02-01  Tags: 百度贴吧  点击:(166)  评论:(0)  加入收藏
网友“深圳城中村租”爆料,最近逛贴吧发现百度贴吧开始大量封禁IDC行业贴吧,以后个人空间商再想蹭百度贴吧搞推广引流和做百度排名怕是越来越难了! 深入了解到,百度贴吧这次封...【详细内容】
2020-11-19  Tags: 百度贴吧  点击:(135)  评论:(0)  加入收藏
贴吧是功能性产品,唯快不破是永恒的准则,这一特点决定了快速迭代是需要解决的关键性问题。快速迭代,分解开来有如下部分:开发阶段,快速开发;测试阶段,包含了环境快速搭建、自动化测...【详细内容】
2019-12-02  Tags: 百度贴吧  点击:(89)  评论:(0)  加入收藏
百度贴吧作为亚文化聚集地之一,其影响力,不言而喻。同样是贴吧引流,有的人粉丝源源不断,有的人却只能看其帖子下沉,究其原因,就在于是否狠抓每个细节。从贴吧帐号、帖子标题、帖子...【详细内容】
2019-08-19  Tags: 百度贴吧  点击:(225)  评论:(0)  加入收藏
网站建设好后,很多企业最关心两个问题,一个是网站排名,一个是流量增长。在做SEO优化的时候应该注意,百度这样的搜索引擎,对自己旗下的产品,比如百度贴吧,百度知道等,是有权重倾斜的,...【详细内容】
2019-07-19  Tags: 百度贴吧  点击:(277)  评论:(0)  加入收藏
▌简易百科推荐
为了构建高并发、高可用的系统架构,压测、容量预估必不可少,在发现系统瓶颈后,需要有针对性地扩容、优化。结合楼主的经验和知识,本文做一个简单的总结,欢迎探讨。1、QPS保障目标...【详细内容】
2021-12-27  大数据架构师    Tags:架构   点击:(5)  评论:(0)  加入收藏
前言 单片机开发中,我们往往首先接触裸机系统,然后到RTOS,那么它们的软件架构是什么?这是我们开发人员必须认真考虑的问题。在实际项目中,首先选择软件架构是非常重要的,接下来我...【详细内容】
2021-12-23  正点原子原子哥    Tags:架构   点击:(7)  评论:(0)  加入收藏
现有数据架构难以支撑现代化应用的实现。 随着云计算产业的快速崛起,带动着各行各业开始自己的基于云的业务创新和信息架构现代化,云计算的可靠性、灵活性、按需计费的高性价...【详细内容】
2021-12-22    CSDN  Tags:数据架构   点击:(10)  评论:(0)  加入收藏
▶ 企业级项目结构封装释义 如果你刚毕业,作为Java新手程序员进入一家企业,拿到代码之后,你有什么感觉呢?如果你没有听过多模块、分布式这类的概念,那么多半会傻眼。为什么一个项...【详细内容】
2021-12-20  蜗牛学苑    Tags:微服务   点击:(9)  评论:(0)  加入收藏
我是一名程序员关注我们吧,我们会多多分享技术和资源。进来的朋友,可以多了解下青锋的产品,已开源多个产品的架构版本。Thymeleaf版(开源)1、采用技术: springboot、layui、Thymel...【详细内容】
2021-12-14  青锋爱编程    Tags:后台架构   点击:(21)  评论:(0)  加入收藏
在了解连接池之前,我们需要对长、短链接建立初步认识。我们都知道,网络通信大部分都是基于TCP/IP协议,数据传输之前,双方通过“三次握手”建立连接,当数据传输完成之后,又通过“四次挥手”释放连接,以下是“三次握手”与“四...【详细内容】
2021-12-14  架构即人生    Tags:连接池   点击:(17)  评论:(0)  加入收藏
随着移动互联网技术的快速发展,在新业务、新领域、新场景的驱动下,基于传统大型机的服务部署方式,不仅难以适应快速增长的业务需求,而且持续耗费高昂的成本,从而使得各大生产厂商...【详细内容】
2021-12-08  架构驿站    Tags:分布式系统   点击:(23)  评论:(0)  加入收藏
本系列为 Netty 学习笔记,本篇介绍总结Java NIO 网络编程。Netty 作为一个异步的、事件驱动的网络应用程序框架,也是基于NIO的客户、服务器端的编程框架。其对 Java NIO 底层...【详细内容】
2021-12-07  大数据架构师    Tags:Netty   点击:(17)  评论:(0)  加入收藏
前面谈过很多关于数字化转型,云原生,微服务方面的文章。虽然自己一直做大集团的SOA集成平台咨询规划和建设项目,但是当前传统企业数字化转型,国产化和自主可控,云原生,微服务是不...【详细内容】
2021-12-06  人月聊IT    Tags:架构   点击:(23)  评论:(0)  加入收藏
微服务看似是完美的解决方案。从理论上来说,微服务提高了开发速度,而且还可以单独扩展应用的某个部分。但实际上,微服务带有一定的隐形成本。我认为,没有亲自动手构建微服务的经历,就无法真正了解其复杂性。...【详细内容】
2021-11-26  GreekDataGuy  CSDN  Tags:单体应用   点击:(35)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条