随着互联网技术的飞速发展,微博这样的大型平台也在不断进行技术革新。从最初到现在,微博的技术架构宛如一场波澜壮阔的变革之旅,这其中蕴含着无数的智慧与挑战,非常值得深入探究。
应用规模增长推动架构变革
微博在发展过程中,应用规模不断增长。早期的架构难以承受日益增长的业务需求,于是第二代架构应运而生。它对业务功能进行了模块化、服务化和组件化,这是一大进步。例如,后台系统从php替换为Java,逐渐构成SOA架构。这一变革奠定了微博很长一段时间的业务发展基础。从时间上看,这一阶段发生在微博发展的早期到中期。在此期间,尝试适配不同的技术,人物方面则是众多技术人员参与其中,据不完全统计,大概有数百人参与到这次架构变革的研发等工作中。
另一层面,这样的架构变革在其他大型社交平台也有迹可循,比如Facebook在发展过程中也经历了类似的从单一语言到多种语言结合,从简单架构到更复杂架构的转变过程。
第三代技术体系的分层模型
微博平台的第三代技术体系备受关注。它使用正交分解法建立模型,在水平方向,有典型的三级分层模型,即接口层、服务层与资源层。这种水平维度的划分在大中型互联网后台业务系统设计里相当基础,在微博每一代技术体系里都有体现。像一些新兴的社交类APP在搭建自己的技术架构时,也开始借鉴这种分层模型。
在地点上,各个研发中心里,技术团队都在围绕这个分层模型开展工作。这些团队里有不少经验丰富的架构师。例如,曾有一位有着5年以上大型互联网项目经验的架构师主导了部分架构设计。从数据来看,该分层模型下的业务量处理能力提升了约30%。
微博系统中的服务器类型
微博系统中的服务器主要包括前端机、队列机和存储。前端机提供API接口服务,就像网络世界的大门,用户的一切操作请求往往首先通过它。队列机则处理上行业务逻辑,主要是数据写入,能力不容小觑。
无论是何种规模的数据写入请求,队列机都能合理分配资源。存储涵盖了mc、mysql、mcq、redis、HBase等内容。不同的存储对应不同的数据任务。时间上,随着业务高峰低谷变化,这些服务器的负载情况也各有不同。像双十一这种流量超大的时候,存储设备将面临极大的数据写入和读取压力,相关的技术人员要提前做好应对准备。
接口框架的功能与构建
微博的接口框架基于Jersey进行二次开发。它创新性地基于annotation定义接口(url,参数),这一方式大大简化了接口构建。同时,其内置Auth、频次控制、访问日志、降级功能,可以进行有效的接口层监控平台与服务治理。
而且有自动化的Bean - json/xml序列化,这一功能看似不起眼却是数据传输和处理的得力助手。好比在一个大型的物流中心,接口框架就是货物调度和管理的一套完整方案。从微博日常的数据交互量来看,这个接口框架有效提高了数据交流的准确性和效率。
服务层广泛使用的框架
微博平台服务层主要涉及RPC远程调用框架以及消息队列框架。这两大框架使用非常广泛。就说MCQ这种基于MemCache协议的消息队列服务,它有诸多优势。消息数据持久化写入BerkeleyDB,只有get/set两个命令,方便进行操作。
同时,还非常容易做监控(stats queue),有丰富的client library,线上运行多年,性能比通用的MQ高很多倍。这背后是众多技术人员的不断测试、优化。时间上,每次微博业务拓展新功能时,这些框架都会进行对应的调整来适应业务的变化。
资源层的组件与特性
资源层的框架极为丰富,比如封装MySQL与HBase的Key - List DAL中间件、定制化的计数组件,还有支持分布式MC与Redis的Proxy等。微博平台将SSD应用在分布式缓存场景,将传统方式扩展,SSD Cache作为L2缓存使用。
这一改变降低了成本,解决了数据库访问压力的问题。从成本数据比较看,相比之前的缓存方式,大概能节省30%左右的缓存成本。地点方面,这一方案在微博的数据中心得到全面应用。
你是否对微博平台的技术架构变革有自己独特的见解?欢迎在评论区留言分享,如果你觉得这篇文章不错,也请点赞和分享。