用户数爆发,从LNMP到Java分布式,再到微服务架构的平滑重构历程
Posted ArchSummit
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用户数爆发,从LNMP到Java分布式,再到微服务架构的平滑重构历程相关的知识,希望对你有一定的参考价值。
贝聊成立于 2013 年,是中国幼儿园家长工作平台,致力于通过互联网产品及定制化解决方案,帮助幼儿园解决展示、通知、沟通等家长工作中的痛点,促进家园关系和谐。贝聊是威创股份(A 股幼教第一股)、清华启迪、网易联手投资的唯一品牌。在短短几年内,用户规模迅速达到千万级别,每年 DAU 均呈倍数级增长。
面对如此快速的发展,原有的技术架构很难支撑越来越复杂的业务场景,在系统可用性以及稳定性方面,都给贝聊技术团队带来了很大的压力。因此,如何针对当前需求,选择合适的技术架构,保证架构平滑演进,值得我们深入思考。
贝聊架构总体经历了三次重大历程,由几台服务器搭建的单体架构到目前的几百台分布式部署架构,在整个变化过程中,我们踩过了很多坑,遇到过很多重大技术挑战。
创业初期,我们的初始创业团队在进行架构选型时,主要基于以下几点进行考虑:
在创业初期,研发资源有限,研发人力有限,技术储备有限,需要选择一个易维护、简单的技术架构;
产品需要快速研发上线,并能够满足快速迭代要求,现实情况决定了一开始没有时间和精力来选择一个过于复杂的分布式架构系统,研发速度必须要快;
创业初期,业务复杂度比较低,业务量也比较小,如果选择过于复杂的架构,反而会增加研发难度以及运维难度;
遵从选择合适的技术而不是最好的技术原则,并权衡研发效率和产品目标,同时创业初期贝聊只有一个 php 研发人员,过于复杂的技术架构必然会带来比较高昂的学习成本。
正是基于以上几点考虑,最终选择了经典的 LNMP 技术架构,贝聊 V1.0 架构就这样诞生了,为了加快产品研发速度,尽快上线产品,首期通过外包公司实现了研发以及部署,后续由我们的 PHP 研发人员接手,并进行后续的迭代开发。
初期部署时,部署了三台 ECS 服务器,其中接入层 nginx 与系统部署在同一台机器,RDS 数据库一台机器,Memcached 缓存一台机器,V1.0 架构具有以下特点:
单体架构,架构简单,清晰的分层结构;
可以快速研发,满足产品快速迭代要求;
没有复杂的技术,技术学习成本低,同时运维成本低,无需专业的运维,节省开支。
LNMP 架构支撑贝聊业务发展了将近一年半左右的时间,简单、易维护的架构为贝聊的快速发展做出了很大的贡献,期间业务发展迅速,用户体量也越来越大,原有架构逐渐暴露出越来越多的问题。
我是在 2015 年初加入了贝聊,初始研发团队只有三人,有幸在这一时期主导了贝聊技术架构重构,并经历了贝聊后续的几次架构演进路程,将原有 PHP 单体架构重构为 Java 分布式架构。
以上是关于用户数爆发,从LNMP到Java分布式,再到微服务架构的平滑重构历程的主要内容,如果未能解决你的问题,请参考以下文章
架构解密从分布式到微服务:深入Kubernetes微服务平台
1.SpringCloud -- 从单体架构到微服务架构代码拆分(maven 聚合)
架构解密从分布式到微服务:分布式系统基石之ZooKeeper