由于请求被分配到不同机房,因此多机房之间的数据也需要同步。目前我们使用虚拟消息管道WMB来同步机房之间的数据:所有的上行请求在到达某个机房后都会通过WMB重放到其他机房,从而保证机房后端资源一致。除此之外,为了容灾,后端资源如缓存,DB的主从集群会分布在不同机房。彼此之间通过应用自身(Redis、MySql)或者客户端(Memcached)来同步主从数据。
平台Web框架
下面给大家简单介绍下我们使用的Web框架。前面我们提到,在请求到达应用容器后,首先会被统一Web框架进行处理。用户请求在应用容器中的整个处理链路如下。
Web框架的处理主要是将Http形式的请求转换成应用运行环境(如JVM)理解的请求,包括接口路由、参数处理和参数校验等等。平台目前使用Credus作为统一的Web框架,它是一个基于Jersey改造的自研框架。
Jersey是JAX-RS(JSR311)开源参考实现用于构建RESTful Web service。特性比较丰富,包括
接口路由
功能丰富的Filter
Http参数校验
文档生成
此外Jersey还提供一些额外的API和扩展机制,所以开发人员能够按照自己的需要对Jersey进行扩展。
在Jersey提供的扩展机制上,我们开发了Credus,主要功能有
封装Jersey框架
定制内容
Wiki模板
在Jersey提供的Filter机制上,Credus框架定制了一系列接口通用策略和功能。包括用户认证、接口频次限制、接口信息统计和返回接口JsonP封装。另外,还进一步扩展了Jersey原有的参数校验,增加了更多了参数校验方式。Web请求在Credus框架中的处理过程如下
总结
这次和大家分享了微博平台的相关知识,包括平台功能、平台服务部署以及平台Web框架介绍。希望通过本次分享,大家能够对微博平台有所了解,同时对服务结构有一个整体的认识,对以后的工作有所帮助。
湘ICP备2022002427号-10湘公网安备:43070202000427号
© 2013~2019 haote.com 好特网