如今互联网产品的技术架构演变总是能引起不少关注,微博平台也不例外。它从第二代架构发展到第三代架构,不断适应着自身业务规模的增长,这其中有很多值得探讨的点。
第二代架构的革新
随着微博平台应用规模不断扩大,第二代架构应运而生。业务开始走向功能模块化、服务化、组件化。这时后台系统从php换为Java是一个重大转变,逐渐形成的面向服务的SOA架构成为了微博发展的重要支撑。这一架构在当时满足了微博业务拓展的需求,使得运营效率提升,业务模块划分更加清晰,用户体验也得到提高。在那个时期轮廓初现的微博平台,凭借这些架构变革,能更好地应对日益增长的用户量。
这一架构改变就像一场及时雨,使得微博平台在当时得以走在正确的发展道路上。数据表明在架构调整后,微博在处理复杂业务场景时效率有明显提升,例如热门话题的检索和呈现速度在几秒内完成,大大增强了用户黏性。
第三代架构的分层模型
微博平台的第三代技术体系,采用正交分解法建立模型很有创新性。水平方向是典型的三级分层模型,有接口层、服务层与资源层。垂直方向进一步细分出业务架构、技术架构、监控平台与服务治理平台。这种分层模式使微博平台各部分职能更加明确。例如接口层专注API接口服务,就像一个桥梁,精准对接外部与平台内部。
在实际运行中,这种分层模型让微博的开发与调试变得更高效。开发人员能根据分层定位问题,监控和管理各个层级的运行状态。比如技术人员能通过资源层数据判断存储等相关设施是否正常工作,快速响应故障。
服务器类型及其职责
微博系统中的服务器主要有三种类型,各司其职。前端机提供API接口服务,是用户请求进入平台的重要入口。就像是门店的迎宾,迎接用户的请求。队列机处理上行业务逻辑,主要承担数据写入任务。存储方面涵盖了mc、mysql、mcq、redis 、HBase等多种形式。像存储部门的不同仓库,每种存储都存储着不同类型的数据。
从地理位置来讲,这些服务器分布在不同的数据中心。这些数据中心有专业的运维人员看守,以保证各服务器正常运转。在大型活动期间,如春晚期间微博服务器要处理海量用户的交互请求,这些服务器的协同合作确保微博服务不中断。
接口框架的功能与设计
接口框架基于jersey二次开发很有看点。通过annotation定义接口(url, 参数),这种方式让接口的定义一目了然。内置的Auth、频次控制、访问日志、降级功能等,作用显著。auth保证了数据的安全性,频次控制避免恶意刷接口。如果有异常情况,降级功能可以维持基本服务的进行。
从开发进程来看,这种接口框架的二次开发节省了大量时间。它支撑接口层监控平台与服务治理,同时自动化的Bean - json/xml序列化也加快了数据传输与转化的速度,减少了出错的概率。
服务层常用框架
服务层主要涉及RPC远程调用框架以及消息队列框架。这两个框架在微博平台应用广泛。RPC远程调用框架让不同的模块之间相互通讯和协作像打电话一样高效。而消息队列框架如同一个传送带,有序地传递消息。
特别是微博平台内部大量使用的MCQ消息队列服务,基于MemCache协议。它消息数据持久化写入BerkeleyDB,get/set两个命令简单实用,其独特的特性让它比通用的MQ性能更高。长期使用中优点明显,监控起来也比较容易。
资源层的框架与组件
资源层的框架十分丰富。有封装MySQL与HBase的Key - List DAL中间件、定制化的计数组件、支持分布式MC与Redis的Proxy等。同时微博平台在这方面有自己的创新点,如将SSD应用在分布式缓存场景。
SSD作为L2缓存使用,完美解决了传统模式Redis/MC + Mysql的缺陷。从成本来说,降低了MC/Redis成本过高和容量小的问题,从性能方面,缓解了穿透DB带来的数据库访问压力。这一应用模式在实际数据测试中能够明显提高数据的缓存和读取速度。
通过对微博平台的架构演变及各个层的组件分析,我们能看到微博技术架构的精妙之处。那么在你使用微博的过程中,有没有感受到这些技术架构带来的变化?你可以在评论区留言分享一下你的体验,也欢迎点赞和转发这篇文章给更多朋友。