`
touya
  • 浏览: 75773 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

从博客系统优化联想到的

阅读更多
看到一篇比较有技术性的文章,讲的是博客系统优化,很有启发,联想到最近工作中遇到的系统瓶颈问题,很多可以借鉴,原文如下:
http://blog.sina.com.cn/s/blog_4b0f52990100foq2.html

新版博客宣讲会【第五讲】:体验双倍提速博客生活(2009-11-13 13:38:01)

新版博客的全面革新,来源于一支强有力的技术开发团队,在此次开发中,首要目标是完成产品更个性化的需求。开发理念则是坚持简单,稳定。最核心的则是加速。从各个细节去提高各个环节的处理速度。



数据库:

在此次改造前期博客的文章数据库处理能力已经严重不足,而产品在新版中对文章的萃取功能越来越多,所以这次数据库做了较大幅度的改造。博客的数据库物理是采用分库/分表的模式进行物理分离,有效的解决了横向扩展的问题,但由于文章表结构本身比较复杂(包含了所有的应用信息),再加上博客大量的用户数据,数据库物理文件已经很大,再加上大量的请求,处理能力已经严重不足。假如要从根本上解决这些问题,可能要改变目前的数据库应用模式,为了保证开发进度,根据应用特点进行了三个"取巧"的优化:



一、文章状态属性的无限扩展

文章萃取的需求,导致文章有更多的辅助属性,比如这篇文章是否有图片,这篇文章是否是wap发表的,以前的做法是新增字段来存储属性,这样做最大的坏处就是文章库结构越来越"恶心",且无法满足日后的一些扩展需求,更坏的是索引无法有效使用。所以本次设计了一个综合字段,用位的概念来代表文章的辅助属性。比如0001代表加密文章,0010代表wap文章,则0001和0010位与的值代表这篇文章既是加密文章也是wap文章。



二、文章大字段的剥离

以前文章库/表包含所有的文章信息,所以不管是什么应用,都要求数据库管理系统大量的进行i/o操作,带来了极大的负载,那么如何去拆分表结构呢?运维同事借鉴了数据库复制功能,便向的实现了大字段的剥离,更巧妙的不需要应用开发做过多的调整,具体的做法是在某些副库中强制将大字段的类型置为整形。这样在复制的过程中,大字段的内容被置为0。变向的实现了一组小字段的副库。



三、应用查询的拆分

传统做的比较多的是数据库物理的拆分,其实应用使用也可以进行拆分,主要是根据索引的使用进行副库拆分,某些副库可能就是大量查询文章列表,某些副库是查询单篇文章,而区别就是这些副库的索引不一样,这些库的存储引擎不一样,这些库的数量不一样,以满足应用的多点查询。而在实际使用过程中,这些库也根据使用效果,查询量进行合理的分配。



也许有人会说,这些优化可能根本就是滥用数据库,比如复制功能是实现备份,而我们却畸形的使用,数据库物理文件如此大,为什么不从根本上去进行分离,数据库的作用是存储,为什么要做如此多的逻辑处理,为什么不用数据库cache去进行数据的缓存。在这里要说的是,缓存我们有squid,物理的拆分可能无法解决真正的冷热数据剥离,在特定的架构下,数据库的使用方式尽量去迎合它,也许换种解决方式,那数据库可能就不是数据库。





博客渲染模式的变更:

博客首页元素特别的多,比如用户有自定义的模板信息,用户属性的设置,这些信息保存在conf高速接口中,该接口前端是nginx,后端是mdb。这个接口的最大的



好处是数据同静态页面分离,具有很强的灵活性。但是根据具体使用来看存在如下几个弊端:

(1)    该接口无法做到分布,这也可能局限于mdb本身的复制,所以在各个地方,实际响应速度可能比较慢。

(2)    前端ria太依赖于该接口,这个接口的执行顺序是最高的,一旦响应慢,则页面可能就是白屏,这也是博客页面经常出现"裸奔"的根本原因。

(3)    由于这是一个结构化数据的接口,无法直接对页面进行渲染,只能通过ria来进行页面渲染。造成页面的呈现非常不顺畅,且特别消耗客户端资源。

根据以上原因,我们尽量去慢慢剥离这些外部接口,尽量保证博客架构的一致性,具体的做法就是将这些自定义的渲染属性转化为特定的css属性,也就是每个博客用户都有一个自定义的css外联文件,这些css文件内容保存在squid中,也有效做到了web,用户属性有更新的时候,则删除存在在squid中的用户css文件。渲染模式变更的原则尽量是不依赖于ria的渲染,前端尽量简单化,强调异步处理。在目前的应用架构上,上述二点是从技术角度和应用特点进行的最多的改造。



在这次开发中,也在考虑一些问题,这也是博客技术未来发展的一些方向。



1.     数据cache和页面cache的一些使用区别,cache的分布,写入式缓存的使用,cache的自动清理机制。

2.     数据库的优化,数据结构设计的规范性,数据冷热的分离。

3.     博客整体的外布,目前我们仅仅是前端cache的外布,物理和应用并没有做到外布。

4.     队列机制在博客的应用及推广

5.     基础数据的萃取,任何技术的使用,方案都是建立在数据分析之上的,基础数据的灵活萃取和挖掘,也 能给产品提供更好的决策。

6.     应用开发结构的分离,尽量做到异步处理,低耦合,数据与表现的分离。

7.     最重要的一点就是,监控,具有前瞻性的监控机制。

8.     方法论的研究和使用。



产品最重要的是稳定和速度,而这是一个摸索和精益求精的过程,我们未必追求一些先进的技术方法,而是根据应用特点,去挖掘潜在的问题,去优化和改进。
分享到:
评论

相关推荐

    联想企业协作平台

    - **社交功能**:如博客、微博客、讨论板等。 - **集成工作场所**:集成多种工具和服务,提高工作效率。 - **任务中心**:集中管理个人任务。 - **仪表盘**:展示关键指标和个人文档等。 #### 四、功能介绍 - **...

    Oracle优化日记:一个金牌DBA的故事.pdf

    内容简介《Oracle优化日记:一个金牌DBA的故事》是一本介绍Oracle数据库优化方法的书,以一个实际的大型优化项目为原型,用日记的形式记录了一个优化小组的DBA 如何从纷繁的头绪中找到突破口,进而完成了一个看似不...

    联想的Vista培训教材3

    通过联想的Vista培训教材3,学员不仅能了解到Vista系统的基本操作,还能深入理解并掌握系统的安全防护措施,提高网上冲浪的安全性,以及提升办公环境中打印效率。这套教材是全面了解和优化Vista体验的理想资源,对于...

    WordPress最好用的博客系统之一

    WordPress 是全球最受欢迎的博客系统之一,以其小巧精悍、功能强大和使用简便著称。它遵循网络标准,提供丰富的主题和插件资源,这使得它成为个人和企业创建博客或网站的理想选择。自2006年以来,WordPress 在中国的...

    追求自我风格的博客模板_夕阳 棕色 博客 整体色.zip

    在使用这个压缩包中的文件时,你需要将它们导入到你的博客平台,如WordPress、Blogger或其他支持自定义模板的博客系统中。确保你了解平台的模板编辑器,以便正确安装和配置这些设计元素。如果你不熟悉HTML和CSS,...

    绿色导航房地产简洁的博客模板_蓝色 博客 导航 标准 英文 企业 html.rar

    9. **内容管理**:可能包含预设的博客文章格式和评论系统,便于发布和管理房地产相关的新闻、市场分析等内容。 10. **SEO优化**:对于提升搜索引擎排名,模板可能会遵循SEO(搜索引擎优化)的最佳实践,如使用合适...

    由数据库连接所联想到的5种设计模式

    它涉及到如何管理这些连接,优化资源使用,以及确保系统的稳定性和可扩展性。由此引出了五种设计模式,这些模式不仅适用于数据库连接管理,而且在软件设计中具有广泛的应用。下面我们将深入探讨这五种设计模式及其在...

    联想版Elan的精准触摸板驱动(支持三指/四指手势)

    标题中的“联想版Elan的精准触摸板驱动(支持三指/四指手势)”指的是专为联想笔记本电脑设计的一款Elan品牌的触摸板驱动程序,它优化了触控板的性能,尤其强调了对三指和四指手势的支持。在现代计算机中,触摸板...

    PJBlog2 蓝色心情模板

    PJBlog是一款基于ASP技术的个人博客系统,深受一些初级到中级技术水平的用户喜爱,因为它的安装和使用相对简单。这个模板可能是为了给用户的博客带来一种清新、宁静的视觉体验,蓝色通常被联想到平静和专业。 描述...

    模仿 百度的查询下拉框

    标题“模仿百度的查询下拉框”涉及到的是一个前端开发技术的应用,主要目的是实现类似百度搜索引擎的自动补全功能,即用户在输入框中输入关键词时,系统会根据已有的数据提供相关的搜索建议,提高用户的搜索效率。...

    ThinkPad E550 Opencore分区,EFI引导合集及工具。

    1. "ThinkPad E550 Catalina用OC换Clover引.MD":这可能是一个Markdown格式的文档,详细描述了如何从Clover引导切换到Opencore引导,用于在ThinkPad E550上安装macOS Catalina。 2. "[3]battary":可能是一个电池...

    PJBlog3 金秋模板

    PJBlog3是一个开源的博客系统,以其易用性和灵活性受到许多个人和小团队的喜爱。金秋模板以其秋天的元素和色彩为设计灵感,营造出温暖而富有诗意的浏览环境,让访客在阅读博主的文章时感受到浓厚的艺术氛围。 这款...

    PJBlog2 DTseasail

    【PJBlog2 DTseasail】是一个基于PHP的开源博客系统,主要针对个人或小团队进行内容管理和分享。这个系统以其简洁、易用的特点受到许多用户的喜爱。DTseasail是PJBlog2的一个主题模版,它为博客增添了海洋风格的设计...

    Eclipse+DB2下Liferay扩展开发环境的建立

    在IT行业中,开发环境的建立是开发者日常工作中的一项重要任务,尤其对于进行企业级应用开发时,如Liferay这样的开源...为了持续学习和优化,可以参考博客链接中的内容和其他在线资源,不断积累经验,提升开发技能。

    my pc ThinkPad E325 / ThinkPad yoga 12 / ThinkCenter M4350T / ThinkStation E31

    标题中的"ThinkPad E325 / ThinkPad yoga 12 / ThinkCenter M4350T / ThinkStation E31"提及了四个联想的IT设备型号,它们分别是: ...通过阅读这样的博客,读者可以学习到更多关于如何管理和优化这些设备的知识。

    t14gen1_ubuntu16.zip

    标题中的“t14gen1_ubuntu16.zip”表明这是一个与联想ThinkPad T14第一代笔记本电脑和Ubuntu 16.04操作系统相关的压缩文件。这个压缩包可能包含了安装Ubuntu 16.04时所需的特定驱动程序或更新,以确保在T14 Gen1上...

    旅行博客模板

    7. **加载速度**:考虑到旅行博客可能会包含大量媒体文件,模板需要优化代码以确保快速加载,避免访客因等待时间过长而流失。 8. **内容管理**:一个高效的后台管理系统可以让博主方便地添加、编辑和组织内容,包括...

    秋之声_csdn

    这涉及到了社交媒体平台的构建、内容管理、搜索引擎优化(SEO)以及数据分析,这些都是IT专业人员需要掌握的关键技能。 再者,"植一株红色玫瑰给你"可关联到数字世界的个性化体验。在IT领域,通过个性化推荐算法,...

    第五媒体数字杂志系统1.02build070201版

    Acer、联想、IDG、凯雷等风投纷纷出手,在数字杂志上砸进十几个亿。电子杂志、互动杂志、数字杂志、数码杂志、网络杂志、多媒体杂志等名称并行不悖,频繁地出现在各种媒体上。做一本酷酷的数字杂志,已不再是年轻...

Global site tag (gtag.js) - Google Analytics