微博平台的发展一直备受关注。随着用户和业务量的增加,其技术架构不断演进,从第二代架构发展到第三代,这其中有着诸多值得探讨的地方。
第二代架构的变革与意义
第一代架构可能在初始阶段满足了微博平台的发展需求,但随着应用规模增长,第二代架构诞生了。这一代架构把业务功能模块化、服务化和组件化,这种变革使得业务开发更加灵活高效。像后台系统从php换为Java,然后逐渐形成SOA架构,这一架构在很长一段时间支撑着微博业务发展。这一转变在当时肯定是经过深思熟虑的,也是应对业务增长和技术发展趋势的必然。它促使微博平台能够承载更多的用户互动和海量的数据。并且这个时间跨度较长,足以说明这一架构对微博发展意义重大。
同时,这种架构变革也伴随着人员的调配和技术的学习曲线。技术团队需要适应Java环境,理解新架构的优势并且发挥出其最大效能,以此来保证微博平台在新架构下稳定高效运行。
第三代架构水平方向划分
进入第三代技术体系,微博采取了正交分解法建立模型。水平方向的三级分层模型是较为基底的架构逻辑。接口层、服务层和资源层这样的划分,基础且实用。这种划分并不是微博独有的,在大中型互联网后台业务系统设计里较为常见。
这显示出微博技术架构在发展中也借鉴了行业内的一些标准和经验。例如接口层的设计,需要考虑外部接入的各种需求、安全性等。服务层建立在接口层之上,为接口层提供支持,而资源层则为整个平台提供数据资源等底层支持。每个层次都有明确的功能定位,这种明确有助于整个平台高效运行。
微博系统中的服务器类型
与分层模型相应,微博系统的服务器基本上就是这三种类型。前端机提供API接口服务,是平台与外界交互的大门。队列机专注处理上行业务逻辑尤其是数据写入,在大量数据进出时起着调节的作用。存储方面包含多种如mc、mysql等,是平台的数据基地。
在实际运营中,前端机时刻面临着外部的请求压力,需要具备高效处理大量连接的能力。队列机则必须要保证数据写入的准确性和及时性,存储的作用更加重要,要确保数据的安全可靠,容灾备份等方面都要做到位,这关系到整个微博平台的数据质量。
接口框架的功能与特点
接口框架基于Jersey二次开发绝对是经过考量的。用annotation定义接口使得接口定义变得简洁明了,可以很好地定义url和参数等重要信息。同时框架内置了Auth等功能,这些功能能够保证接口的安全性和稳定性。
在实际的微博平台使用场景下,频次控制、访问日志、降级功能也是非常实用的。频次控制防止恶意攻击或者过度使用,访问日志有助于追踪问题,而降级功能在系统面临压力时保证核心功能的运行。并且通过对接口层监控平台与服务治理的支撑以及自动化的序列化,使得整个接口框架变得更加坚固实用。
服务层主要框架剖析
服务层中RPC远程调用框架与消息队列框架最为常用。PC远程调用框架建立起网络上不同主机或进程间的通讯桥梁,使得分布式系统的不同部分可以进行有效协同。消息队列框架则像是一个数据传输的管道。
以微博平台常用的MCQ消息队列服务来说,基于MemCache协议使得它在性能上有天然的优势。消息数据持久化等特性让它在处理海量数据时更加稳定,而且容易监控,丰富的client library也方便开发人员使用。这些框架一起保证了服务层在微博平台中的功能实现。
资源层组件概览
资源层的框架繁多。像有封装MySQL与HBase的Key - List DAL中间件、定制化计数组件以及支持分布式MC与Redis的Proxy等。重点谈谈SSD Cache组件,它被运用在分布式缓存场景。微博平台由原本的Redis/MC + Mysql方式扩展为Redis/MC + SSD Cache + Mysql方式。
这样做可以有效降低成本且减少数据库访问压力。通过资源层的这些组件协同工作,微博平台能够更加高效地进行数据处理、资源调用,从而推动整个平台业务不断发展。
你觉得微博平台在技术体系演进中最成功的地方是什么?欢迎评论点赞分享。