爱奇艺广告平台的架构设计与演进之路
来源:广告买卖网 作者:广告买卖网 时间:2018-11-5 阅读:
爱奇艺广告平台的架构设计与演进之路
架构设计过程中积累的经验
最后分享几点我在架构设计过程中总结的经验。
深入理解业务。 在架构设计方面,业务和架构是要互相配合的,架构在满足业务需求的同时,也可以反过来给业务提需求甚至要求改变业务逻辑已达到系统的最优,这里的关键就是充分理解业务。架构上很难解决的问题,可能在业务上做个微小的调整就搞定了,能有这样的效果,何乐而不为呢。在系统或者架构优化方面,优化理论和策略已经研究的非常充分,剩下的只是如何跟业务场景进行结合和利用。
设计阶段要追求完美,实践阶段要考虑性价比,采用分阶段递进的方式演进到完美的架构。** 在设计阶段可以暂时抛开实现成本或者其他一些客观条件的束缚,按照理想的情况去做架构设计,这样得到的一个结果是我们所追求的一个理想目标,这个目标暂时达不到没关系,因为它的作用就是指明架构将来的发展或者演化的大方向;然后在结合实际的限制条件逐步调整这个完美的架构到一个可实际落地的程度,这个过程中还可以保留多个中间版本,作为架构演进升级过程的 Milestone。也可以这样理解,从现实出发,着眼于未来,随着技术发展的速度越来越快,在设计之初遇到的限制和障碍很快就会被解决,避免被这些暂时的限制和障碍遮住了对未来的想象。
监控先行。 监控信息是了解系统运行状态的重要信息,大部分监控信息都要持久化用来做数据分析使用,它可以做异常检测也可以辅助进行问题的分析和定位;做好监控工作是改善 TTA(Time To Detection)和 TTM(Time To Mitigation)指标的方法之一;这里还要强调的是要在设计阶段就考虑到相关的各种监控指标、统计粒度等细节内容,在开发阶段就在系统中进行相关指标的计算和统计,在服务部署阶段将这些指标同步到监控系统中;确保服务上线之初就有相应的监控“保驾护航”,避免裸奔。
容错能力。 这个世界是不完美的,不完美世界中的系统要面对各种各样的问题;在一个系统的整个生命周期中,研发运维人员要花费大量的时间来应对和解决各种错误甚至是灾难;两个方面去考虑,即 Design By Failure 和灾难演练(Netflex 已经开源了他们的相关工具)。我想谈谈自己的实际体会:
首先,在设计之初可以先划定系统的边界,分出系统内部和系统外部;从成本的角度考虑,系统内部因为可控性强,可以设定一些假设以减少相关的考量和系统容错设计;其余的系统内部问题以及系统外部的问题,优先解决影响较大的问题(譬如,外部服务不可用,对外接口访问量突增)和高频发生的问题(硬盘故障,网络割接),这样的问题大部分都有可借鉴的方案,如果因业务场景特殊而不能复用已有方案,那就要考虑自己来实现;应对外部服务不可用进行熔断并增加保底策略,访问量突增做限流,专线故障时走外网,硬盘做 Raid;其他的未考虑到问题在问题首次发生时要评估损失和应对成本来决定要否立即解决;
上篇:
下篇: