双11购物节即将来临,蘑菇街积极备战各种大型 促销活动,为全国性的互联网购物节贡献自己的 一份力量。保障这种大型促销活动能正常有序地 进行,确保99.99%以上的可用性,是我们需要面 对的一个严峻考验。因此,我们的工作主要依据 以下几个思路开展。
该做什么的就做什么
保障整个系统的可用性和稳定性,第一步需要做 的就是,使整体架构清晰化、层次化。那么,对系统进行合理拆分,是最直观的选择。从业务和技术角度出发,遵循SRP(Single Responsibility Principle)原则,合理拆分系统中的各个模块,明确每个模块的职责。这样可以方便快速定位和排查问题,甚至可以有针对性地对每个模块进行优化。
拆分方式基本上分为两种,路由拆分和物理拆 分。所谓路由拆分,就是按照请求特征,将请求流量分摊到两个或多个同质的集群里面;而物理拆分,就是在路由拆分的基础上,按照业务和技术上的特征,将同质的集群进行彻底拆分,成为非同质集群。
下面以交易流程为例,来看一下如何操作拆分。交易流程主要包括购物车、下单、支付等几个环节,具体的拆分结果,如图1所示。
图1 交易流程拆分结果
经过分析,整个交易流程按照架构层次可以分解为展示层、业务层及外围应用三块内容,这三部分由于职责差异比较大,所以先按照物理拆分,让层次清晰。
再来看展示层,由于存在一些共享的东西,如页面元素等,做物理拆分,会引入额外的成本,所以路由拆分是不错的选择。
接着来看业务层。这一层是很容易按照角色和业务场景进行拆分的,例如,交易管理服务是给管理人员提供管理功能的,需要考虑权限、内控等问题;交易核心服务是给业务主流程提供主要业务功能,需要考虑可用性;交易查询服务是读取交易数据的主要途径,需要考虑易用性;交易网关服务主要是对接外部支付渠道,需要考虑连通性。很明显,这一层由于自身的差异性比较大,所以采用物理拆分是上上策。
最后来看外围应用,其中包括后台管理、日志查 询、业务监控及交易超时控制等,这些应用基本上都是在底层系统平台(管理平台、日志平台、监 控平台以及任务平台)进行二次开发而成的,所以天生就适合进行物理拆分。
从上面不难看出,拆分是一个细活,可以选择的 维度很多,拆分方式也比较讲究。良好的拆分方案,会让系统更加清晰明了,每个模块该做什么的就做什么。这样应对大型促销活动时,可以游刃有余地按照模块特征进行优化。
……
小结
本文讲述了蘑菇街在确保可用性和稳定性实践中的一些工作思路,但并不是说做好以上几点,就能够保证网站在大型促销活动中的99.99%可用性和稳定性,只能算是在实践过程中得到的一些经验。
总结一下在可用性和稳定性工作中的一些感悟。 首先,清晰的架构划分可以大大减轻稳定性工作量;其次,功夫要尽量在平时做足,避免总是出临 时解决方案;再次,普及稳定性思维,注意细节;最后,出现问题,先快速恢复再查找根源。
作者姚明,蘑菇街架构支撑团队负责人兼架构师,负责蘑菇街的应用框架、基础服务、中间件产品、系统平台和安全体系等基础架构建设。擅长领域为应用系统架构设计、中间件技术产品设计、系统性能调优和Web安全防范。
更多精彩详见《程序员》11月刊,欢迎订阅《程序员》杂志iPad/Android版。
本文为ImapBox原创文章,未经允许不得转载,如需转载请联系market#csdn.net(#换成@)
阅读和此文章类似的: 程序员专区