短短几年时间新浪微博的用户数就从零增长到数亿,明星用户的粉丝数达数千万,围绕着新浪微博正在发展一个集社交、媒体、游戏、电商等多位一体的生态系统。

  同大多数网站一样,新浪微博也是从一个小网站发展起来的。简单的LAMP( Linux+ Apache+ MySQL+PHP)架构,支撑起最初的新浪微博,应用程序用PHP开发,所有的数据,包括微博、用户、关系都存储在 MySQL数据库中。

  这样简单的架构无法支撑新浪微博快速发展的业务需求,随着访问用户的逐渐增加,系统不堪重负。新浪微博的架构在较短时间内几经重构,最后形成现在的架构,如图所示。

  系统分为三个层次,最下层是基础服务层,提供数据库、缓存、存储、搜索等数据服务,以及其他一些基础技术服务,这些服务支撑了新浪微博的海量数据和高并发访问,是整个系统的技术基础。

  中间层是平台服务和应用服务层,新浪微博的核心服务是微博、关系和用户,它们是新浪微博业务大厦的支柱。这些服务被分割为独立的服务模块,通过依赖调用和共享基础数据构成新浪微博的业务基础。

  最上层是API和新浪微博的业务层,各种客户端(包括Web网站)和第三方应用通过调用API集成到新浪微博的系统中,共同组成一个生态系统。

  这些被分层和分割后的业务模块与基础技术模块分布式部署,每个模块都部署在一组独立的服务器集群上,通过远程调用的方式进行依赖访问。新浪微博在早期还使用过一种叫作MPSS( Multi Port Single Server,单服务器多端口)的分布式集群部署方案,在集群中的多台服务器上,每台都部署多个服务,每个服务使用不同的端口对外提供服务,通过这种方式使得有限的服务器可以部署更多的服务实例,改善服务的负载均衡和可用性。现在网站应用中常见的将物理机虚拟化成多个虚拟机后,在虚拟机上部署应用的方案跟新浪微博的MPSS方案异曲同工,只是更加简单,还能在不同虚拟机上使用相同的端口号。

  在新浪微博的早期架构中,微博发布使用同步推模式,用户发表微博后系统会立即将这条微博插入到数据库所有粉丝的订阅列表中,当用户量比较大时,特别是明星用户发布微博时,会引起大量的数据库写操作,超出数据库负载,系统性能急剧下降,用户响应延迟加剧。后来新浪微博改用异步推拉结合的模式,用户发表微博后系统将微博写入消息队列后立即返回,用户响应迅速,消息队列消费者任务将微博推送给所有当前在线粉丝的订阅列表中,非在线用户登录后再根据关注列表拉取微博订阅列表。

  由于微博频繁刷新,新浪微博使用多级缓存策略,热门微博和明星用户的微博缓存在所有的微博服务器上,在线用户的微博和近期微博缓存在分布式缓存集群中,对于微博操作中最常见的“刷微博”操作,几乎全部都是缓存访问操作,可以获得很好的系统性能。

  为了提高系统的整体可用性和性能,新浪微博启用了多个数据中心。这些数据中心既是地区用户访问中心,用户可以就近访问最近的数据中心以加快访问速度,改善系统性能;同时也是数据冗余复制的灾备中心,所有的用户和微博数据通过远程消息系统在不同的数据中心之间同步,提高系统可用性。

  同时,新浪微博还开发了一系列自动化工具,包括自动化监控,自动化发布,自动化故障修复等,这些自动化工具还在持续开发中,以改善运维水平提高系统可用性。

  由于微博的开放特性,新浪微博也遇到了一系列的安全挑战,垃圾内容、僵尸粉、微博攻击从未停止,除了使用一般网站常见的安全策略,新浪微博在开放平台上使用多级安全审核的策略以保护系统和用户。

架构模式在新浪微博的应用相关推荐

  1. 2.2 架构模式在新浪微博的应用[读书敲录]

    短短几年时间新浪微博的用户数就从零增长到数亿,明星用户的粉丝数达数千万,围绕着新浪微博正在发展一个集社交.媒体.游戏.电商等多位一体的生态系统. 同大多数网站一样,新浪微博也是从一个小网站发展起来的. ...

  2. 一文讲透大型网站架构模式核心原理与案例分析

    什么是模式?每一个模式描述了一个在我们周围不断发生的问题及该问题解决方案的核心.这样,你就能一次又一次地使用该方案而不必做重复的工作. 也许互联网产品不是随便复制就能成功的,创新的产品更能为用户创造价 ...

  3. 大型网站架构模式【大型网站技术架构.核心原理与案例分析】(阅读分享)

    这本书分几个章节,其中有一个值得和大家分享的技术知识. 大型网站架构模式中引入了模式概念:每一个模式描述了一个在我们周围不断重复发生的问题及该问题解决方案的核心.这样,你就能一次又一次地使用该方案而不 ...

  4. 大型网站技术架构-2. 大型网站架构模式

    分层 分层是企业应用中最常见的一种架构模式,将系统在横向维度上切分为几个部分,每个部分负责一部分相对比较单一的职责,然后通过上层对下层的依赖和调用组成一个完整的系统. 在大型网站架构中也采用分层结构, ...

  5. 一乐 :煎饼果子与架构模式

    编者按:本文由一乐在高可用架构群分享,转载请注明来自高可用架构「 ArchNotes 」. 一乐是我,也是梁宇鹏.现任环信首席架构师兼 IM 技术总监,负责即时通讯云平台的整体研发和管理.曾任新浪微博 ...

  6. 大型网站架构之大型网站架构模式

    大型网站架构模式 什么是模式呢?(模式就是针对特定问题目前行业的解决方案) 模式描述了一个在我们周围不断重复发生的问题以及该问题解决方案的核心.借助模式我们可以减少很多重复的工作. 大型互联网公司在实 ...

  7. 软件体系架构模式之三微内核体系架构

    当您的软件系统或产品包含许多与外部实体的集成点时,微内核体系结构模式将非常有用.最重要的是,您将无法准确判断出将来将哪些实体集成到您的系统中.可以将微内核架构模式识别为基于插件的模式..也称为插件架构 ...

  8. 软件体系架构模式之二分层体系结构

    分层体系结构模式是n层模式,其中组件被组织在水平层中.这是设计大多数软件的传统方法,并且具有独立性.这意味着所有组件都是互连的,但彼此之间不依赖. 图1:分层架构 在此体系结构中有四层,其中每一层在模 ...

  9. 软件体系架构模式之一什么是软件架构模式

    什么是软件架构模式 计划启动未开发的软件项目?然后选择正确的架构模式将对项目的结果起关键作用.选择市场上最流行或最新的技术并不总是意味着会带来最好的结果.但是,选择最合适的解决方案将为行之有效的问题和 ...

最新文章

  1. Editplus下载、安装并最佳配色方案(强烈推荐)
  2. windows mysql增量备份_windows下mysql增量备份与全备份批处理
  3. boost::hana::decltype_用法的测试程序
  4. 第16章:MongoDB-聚合操作--聚合管道--$project
  5. 数组的合并和升序排列_区间调度问题之区间合并
  6. cuda nvcc版本不一致_windows 验证CUDA和CUDNN是否安装成功
  7. 12款免费素材图标系列三
  8. android 输出流对象,Android-IO流之对象操作流ObjectInputStream/ObjectOutputStream
  9. C#之不得不上的网站。
  10. Windows平台JDK安装
  11. 独家 | 林元庆告别百度
  12. java炫酷龙卷风源码_Java-使用二叉树实现快速排序-遁地龙卷风
  13. 【转】Nginx双机热备高可用解决方案【二】
  14. cocos2d笔记 (3)cocos2d四个基本概念
  15. 工程之星位置服务器,工程之星5.0中求坐标转换参数需要谨记这七大点!
  16. 三菱FX3U 485ADP与东元TECO变频器N310通讯程序
  17. pytorch(11)-- crnn 车牌端到端识别
  18. nmap 查看服务器版本信息,nmap命令-nmap命令扫描服务器信息的格式
  19. 你想要的宏基因组-微生物组知识全在这(2021.12)
  20. 硬件选型之如何看光耦器件的开关频率

热门文章

  1. 网站流量怎么快速飙升?如何获取网站精准流量?
  2. 安装sql server 2000时又出现:安装程序配置服务器失败。参考服务器错误日志和 C:/WINNT/sqlstp.log 了解更多信息。
  3. 人生里的酸甜苦辣,缺了哪样都是遗憾
  4. 【游戏介绍】aiwi体感balance
  5. mediawiki修改用mysql数据库_修改MediaWiki的动态页面列表DPL设置降低MySQL负载
  6. Windows Java开发环境搭建
  7. 我们见面吧,钛媒体年度国际大会“坚定”来了!
  8. mysql怎么把只读改为读写
  9. 发现同义词 python_python – 使用WordNet查找同义词,定义和例句
  10. 七个人生工具SWOT、PDCA、6W2H、SMART、WBS、时间管理、二八原则——送给自己