ITPub博客

首页 > 数据库 > 数据库开发技术 > 互联网技术演进的模式

互联网技术演进的模式

原创 数据库开发技术 作者:greencoatman 时间:2024-05-07 07:36:00 0 删除 编辑

由于不同行业的业务发展路径具有其特定性,无法为所有架构师提供一个通用的解决方案模板。因此,我将以互联网行业为例,探讨其技术演进的模式,以便其他行业的架构师借鉴此分析方法来适应自己行业的需求。

互联网业务虽然多种多样,但它们共同遵循一个基本原则:“规模是关键”。互联网业务的发展通常经历以下几个阶段:创立期、成长期、竞争期和成熟期。

这些阶段的主要区别在于业务的复杂性和用户规模的不同。


业务复杂性

在讨论互联网业务的发展路径时,我们看到它主要遵循一个从简到繁的复杂性增长轨迹。以下是不同发展阶段下业务复杂性的表现:

初创期

互联网业务在这一阶段通常集中于一个创新的业务点。这时的重点是创新而非完善,因为创新能够吸引用户关注。由于业务的新颖性,初始阶段业务往往不够完善,只有通过用户的不断使用和反馈,快速迭代和试错,业务才能逐步完善并继续创新。此时,技术团队的主要需求是“速度”,尽管团队规模可能较小,团队成员需要灵活运用各种技术手段:购买现成的系统、使用开源技术等。

以淘宝和QQ的初版为例,从早期版本到现在的产品,几乎难以认出是同一个业务。

第一版的 QQ

发展期

一旦业务模型经过市场验证,用户数量开始迅速增长,业务进入快速发展阶段。这一期间的主要任务是将原始的不完善业务逐步完善,不断加入新功能。对技术团队而言,迅速实现业务需求成为核心任务。

  • 堆功能阶段:在业务快速发展的初期,团队规模尚小,业务需求迫切,最直接的应对策略是在现有系统中持续堆砌新功能。尽管团队可能希望进行重构和优化,但人力和业务压力往往使这些工作被搁置。

  • 优化阶段:随着系统功能不断增加,系统逐渐变得复杂,继续添加新功能变得困难。这通常表现为小的改动可能引起大问题。当技术和产品团队难以忍受低效率时,就会着手解决这些问题。解决方式分为两派:优化派和架构派。优化派倾向于通过改进现有系统进行快速实施,而架构派则主张调整系统架构,进行更彻底但耗时更长的系统重建。

  • 架构阶段:当业务继续增长,即使是优化也难以满足需求时,就不得不进行架构调整。这通常意味着需要“拆分”现有的系统,如将单一系统拆分为多个子系统。

竞争期

当业务规模扩大并形成市场影响力后,竞争对手纷纷入场,市场竞争激烈。这一阶段业务不断完善,创新不断涌现。技术需求因此提升到新的高度,业务的增长导致系统数量激增,系统间交互复杂化。

  • 系统重复造轮子现象日益严重,导致效率低下。

  • 系统间交互复杂,导致开发、测试和部署过程中的困难增加。

这一发展轨迹表明,随着业务的不断扩展和市场竞争的加剧,技术团队需要不断调整策略,以适应不断变化的业务需求和外部环境。

针对这个时期业务变化带来的问题,技术工作主要的解决手段有:


平台化

目的在于解决“重复造轮子”的问题。

存储平台化:淘宝的 TFS、京东 JFS。

数据库平台化:百度的 DBProxy、淘宝 TDDL。

缓存平台化:Twitter 的 Twemproxy,豆瓣的 BeansDB、腾讯 TTC。

服务化

目的在于解决“系统交互”的问题,常见的做法是通过消息队列来完成系统间的异步通知,通过服务框架来完成系统间的同步调用。

消息队列:淘宝的 Notify、MetaQ,开源的 Kafka、ActiveMQ 等。

服务框架:Facebook 的 thrift、当当网的 Dubbox、淘宝的 HSF 等。

4. 成熟期

当企业在激烈的竞争中脱颖而出,成为行业的领导者,或者当整个行业进入到一个较为成熟的阶段,企业的市场位置已经相对稳固,这时业务创新的空间可能变得有限,竞争的压力也相对减小。在这个阶段,企业可能不再追求速度和创新,而是转向追求精细化管理和优化:我们的响应速度是否超过了竞争对手?我们的用户体验是否更胜一筹?我们的运营成本是否更低?

技术层面也通常进入了成熟期,大规模的系统重构或平台化改造已经完成,此时的技术挑战更多地转向细节的优化。然而,有时为了实现某些关键性能的提升,如将用户响应时间从200毫秒减少到50毫秒,可能需要对系统的多个方面进行深入优化,包括CDN、数据库和网络架构等。在这种情况下,技术优化可能没有一套固定的方法可循,而需要根据竞争需求来确定优化的重点和方向。在进行这些细节优化的过程中,可以借鉴企业在之前各个发展阶段所采用的策略和方法。


用户规模

随着互联网业务的发展,会经历从初创期到成熟期的多个阶段。这些阶段的主要区别体现在用户规模的增长上,用户数量的扩大对技术产生两个主要的影响:对性能的要求提高和对可用性的要求加强。

性能提升

随着用户规模的扩大,首要面临的技术挑战是提高系统性能。以互联网公司常用的MySQL为例,无论硬件多么高级,单台MySQL服务器能支持的事务处理速率(TPS)和查询速率(QPS)都有其极限。用户规模的扩大往往意味着需要从单台服务器过渡到多台服务器的运用,这不仅仅是数量的增加,而是存储方式从集中式转变为分布式。这种转变引入了更高的复杂度,如在使用分布式MySQL时,就必须处理分库分表、读写分离、数据复制和同步等多种技术挑战。

可用性增强

另一个由用户量增长引发的挑战是提高系统的可用性。对于一个只有1万用户的系统,即便出现一小时的宕机也可能影响不大;但对于拥有100万用户的平台,哪怕是10分钟的宕机都可能导致大量用户投诉,甚至在社交媒体上发表负面评论,严重影响公司的声誉和未来用户增长的可能性。从经济角度来看,可用性的不足对收入的负面影响也随用户规模增大而显著增加。例如,1万用户的系统宕机一小时可能导致的损失数千元,而100万用户的系统如果宕机10分钟,损失可能达到数十万元。


量变到质变

通过前面的分析,我们可以看到互联网业务驱动技术发展的两大主要因素是复杂性和用户规模,而这两个因素的本质其实都是“量变带来质变”。

究竟用户规模发展到什么阶段才会由量变带来质变,虽然不同的业务有所差别,但基本上可以按照下面这个模型去衡量。

应对业务质变带来的技术压力,不同时期有不同的处理方式,但不管什么样的方式,其核心目标都是为了满足业务“快”的要求,当发现你的业务快不起来的时候,其实就是技术的水平已经跟不上业务发展的需要了,技术变革和发展的时候就到了。更好的做法是在问题还没有真正暴露出来就能够根据趋势预测下一个转折点,提前做好技术上的准备,这对技术人员的要求是非常高的。



原文作者:二进制跳动;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2022-07-08

  • 博文量
    312
  • 访问量
    141145