微博平台作为社交媒体的重要平台,其技术架构的发展历程充满了各种创新与突破,这其中有很多值得深入探讨的地方。
架构的代际更替
第一代架构可能因业务规模较小而相对简单。随着应用规模的增长,第二代架构出现了。在这个时期,业务功能走向模块化、服务化和组件化,这是个重大变革。例如,后台系统从php替换为Java,形成了SOA架构。这种改变支撑了微博平台较长时间的业务发展,这期间可能在很多大型活动时,比如春节晚会期间微博流量大增时,技术架构都能稳定支撑业务,可见其重要性。从地点上来说,微博总部的技术团队肯定是倾尽全力完成这些转变。
第二代架构的转变也意味着新的技术人才的引入,一些精通Java的开发人员加入了团队,他们为架构的优化与后续维护做出了不可磨灭的贡献。
正交分解法建立模型
微博平台的第三代技术体系则使用了正交分解法建立模型。在水平方向,那个典型的三级分层模型涵盖了接口层、服务层与资源层。就像现实中建筑的不同分层一样,每层都有不同的功能。这种分层模型在大中型互联网后台业务系统设计中非常基础,一直在微博的每代技术体系中有所体现。无论是在纽约还是东京的微博开发中心,开发人员都会遵循这个理念。
比如在开发一些新功能时,就会依据这个分层模型进行工作分配。接口层负责与外部交互,每一个接口的更新都需要准确的时间记录以便后续的维护。服务层要保证内部数据的高效调用,资源层则关注各类资源的整合与管理。
微博系统中的服务器类型
在微博平台中,服务器主要包括三种类型。前端机承担着提供API接口服务的工作。比如用户在手机端使用微博时,所有的操作如登录、查看热门话题等请求都会先到前端机。这中间涉及到非常多的数据交互。
队列机主要处理上行业务逻辑,尤其是数据写入操作。当用户发布新微博、点赞或者评论时,队列机就开始工作了。北京总部的数据中心在这些操作频繁时,队列机的稳定至关重要。存储涵盖了mc、mysql、mcq、redis 、HBase等多种类型。不同的存储方式负责的数据类型和功能有所不同,就像一个巨大的仓库有不同的分区一样。
接口框架特性
微博平台的接口框架是经过二次开发的Jersey。它通过annotation来定义接口(url, 参数)。这种方式让接口的定义更加清晰和规范。内置的Auth功能保证了数据的安全性。曾经有过黑客试图入侵微博账号获取数据,但Auth功能阻止了这种事情的发生。
频次控制也是接口框架的一个重要功能,当大量用户在同一时间对某个热门话题进行交互时,频次控制可以避免服务器瘫痪。访问日志则记录每个接口的操作情况,方便日后的查询与问题排查。而降级功能可以在服务器承受不住压力时做出适当调整,保障整体平台的稳定。而且这个接口框架能支撑接口层监控平台与服务治理,还有自动化的Bean - json/xml序列化。
服务层的主要框架
服务层主要涉及RPC远程调用框架以及消息队列框架。RPC远程调用框架在整个微博系统中非常重要。比如说当一个微博用户的某个操作涉及到多个后台服务时,RPC框架就能保证这些服务之间有序高效的调用。
微博平台内部大量使用的MCQ消息队列服务有很多独特之处。基于MemCache协议,消息数据持久化写入BerkeleyDB,只有get/set两个命令,这使得操作简单但效率很高。在微博日常运营中的很多数据传输场景下,比如信息的实时推送,MCQ消息队列服务能轻松应对。同时,它非常容易做监控,这保证了技术人员能随时了解其运行状态,还有丰富的client library,而且线上运行多年,性能比通用的MQ高很多倍。
资源层的丰富框架
资源层的框架非常多。其中封装MySQL与HBase的Key - List DAL中间件简化了数据库的操作流程。定制化的计数组件可以准确地统计微博的各项数据,比如点赞数、评论数等,这些数据对于微博的运营分析意义重大。
在支持分布式MC与Redis方面有Proxy。像在某些节假日微博流量高峰期,这个Proxy就能协调分布式MC与Redis的工作,保障数据传递的稳定高效。微博平台将SSD应用在分布式缓存场景中,创新地扩展为Redis/MC + SSD Cache + Mysql方式。它有效降低了MC/Redis成本过高、容量小的问题,也缓解了穿透DB带来的数据库访问压力。并且所有的日志采集点分布在技术框架中间件中,方便技术人员整体把握系统运行情况。
读者朋友们,你觉得微博平台未来的技术架构会朝什么方向发展?希望大家评论互动、点赞和分享本文。