互联网项目特点及高可用架构方案设计

时间:2021-11-16 15:47:01

互联网项目特点

前后在两家不同的企业工作过,对于互联网与传统企业在业务发展、项目开发以及技术管理上的不同略有一番认识,与大家分享:

  • 用户体量上的不同

一般来说,在传统行业项目的用户量是可预期的,增长速度也是可预期的。然而对于一个互联网项目来说,用户量很难做一个准确的预估,项目初期,用户量可能只有几千人,如果业务进行顺利,可能会在几个月的时间,用户量超过千万。

  • 业务发展模式

传统行业的发展模式一般已经比较成熟,业务上不会发生很大的变化。然而对于一个互联网项目尤其是刚起步的项目来说,业务模式在后期可能会发生很大的变化,甚至完全背离初衷,例如:最初决定做问答类社交的APP,赶上了直播风口,很有可能就转做直播。

  • 项目开发模式

由于以上两个特点,在项目开发模式上互联网企业基本都采用迭代开发。功能迭代非常快,可能一周一个新功能。

  • 团队管理

在团队管理上,互联网企业与传统企业差别并不是很大。但是互联网企业人员相对比较年轻,需要能快速的学习、了解、接受新鲜事物,在氛围上相对比较平等,上下级在工作中体现的并不是很突出。也许这就是所谓的扁平化管理吧

互联网项目架构

项目的架构一定要结合项目特点进行设计。

  • 易扩展的集群部署

用户量可能会有较大变化,就要求项目具有较强的可伸缩性。一般都采用集群架构,便于伸缩,常见的集群实现方案已经在之前的一篇文章进行了介绍。

互联网项目特点及高可用架构方案设计

  • 项目微服务化

互联网项目功能往往复杂而多变,如果将众多功能糅合在一个项目中,对于后期的项目维护、迭代、扩展可谓是一场灾难。所以需要对服务进行合理的拆分,服务与服务之间可以通过RPC框架进行调用。这对于适应复杂多变的业务有很大帮助。之前有过一次单个项目拆分微服务的经历,关于微服务的拆分与RPC框架的具体应用会在后续总结

  • 项目管理集中化

对于诸多的微服务,应该有一个集中管理的平台,集中管理平台应该具备至少三个功能:服务的注册与订阅、服务的统一监控、服务的统一配置。

这样有利于项目的发布、维护。比如项目配置存在本地,如果要改一个配置,需要将每一个实例都进行更改,多么复杂枯燥的一项工作,更严重的是容易出错。

互联网项目特点及高可用架构方案设计

  • 基础功能的丰富化

由于互联网项目功能可能是丰富多样的,以后也可能会有很多的变化。在项目框架搭建初期,最好能考虑兼容更多的技术,当然并不一定要在初期将这些技术融入到项目中。就类似于一个项目的util类一样。例如,目前来看java的生态环境远好于.NET,所以在技术选型上最好是选用java,而且目前互联网企业对于java的使用度远高于.Net。另外比如在选用RPC框架的时候,或许应该考虑到支持跨语言调用这一层面,这时候选用thrift较为理想。