"藏经阁-微信月活9亿的高效业务运维之道.pdf"
这篇文档主要介绍了微信团队在处理大规模业务运维中的实践经验,特别是在GOPS全球运维大会2017·北京站上的分享。微信作为一款月活跃用户高达9亿的应用,其运维挑战巨大,而他们通过一系列高效的方法和策略来保证服务的稳定性和效率。
首先,文档强调了运维效率与成本之间的关系,指出自动化是提升效率、降低成本的关键。微信团队通过自动化弹性伸缩,实现了在需求波动时的快速响应,确保服务的平稳运行。此外,他们建立了严格的运营规范,包括云化管理、容量管理和自动调度,以应对日益复杂的业务环境。
在配置文件规范方面,微信团队设定了统一的目录结构标准,对跨服务的相同配置项、同一服务内的差异配置项以及开发、测试、现网环境的差异配置项进行了精细化管理。他们还确保同一服务下同一版本的多个实例在所有环境下的配置文件MD5值严格一致,以保证一致性。
在名字服务规范上,接入层采用了类LVS实现,逻辑层使用类etcd实现,存储层则涉及路由配置,并且强调服务伸缩应作为独立于研发的变更发布过程,以减少错误的可能性。
数据存储规范中,微信团队明确了接入层不携带数据,逻辑层带有短周期缓存和静态数据,但禁止动态数据落地,而存储层则负责长周期缓存和基于Paxos协议的数据落地。这种设计使得接入层和逻辑层的服务伸缩无需考虑数据迁移和缓存命中率,简化了运维流程。
运营规范的实施分为服务可运维的阶段目标,包括变更系统的拦截和全网扫描不规范服务的落实措施。同时,微信团队探讨了上云的原因,如解决微服务数量众多以及物理机上多服务资源抢占的问题。
在选择上云的部分时,他们根据服务的特性和需求,将接入层、逻辑层和存储层进行了区分,部分服务保持在物理机上以保证稳定,部分则迁移到云环境以实现更灵活的容量管理和调度。
微信团队采用了基于Cgroup的云化方案,定制了虚拟机型如VC11和VC24,以及对物理机进行分片,以实现资源的精细化管理。尽管他们目前没有采用Docker,但拥有自己的svrkit框架,以非侵入式的方式实现了服务的标准化和规范化。
最后,他们开发了一套私有云调度系统,该系统基于svrkit框架并吸取了borg、yarn、k8s和mesos等主流调度系统的优点,覆盖了大部分微服务。这个系统架构设计有助于实现服务间的资源隔离,提高整体运维效率。
这份文档揭示了微信如何通过规范化的运维流程、高效的云化管理和自动化策略,来支持9亿月活用户的业务运维,为其他大型互联网企业提供了宝贵的经验和参考。