传统软件开发架构向基于云平台转型之路

作者:佚名 日期:2020-03-18

本文阐述从传统软件开发架构向基于云平台开发架构发展之路,给传统开发想云原生开发提供参考。

第一个阶段为早期单体架构,一般服务端+数据库的方式进行开发,采用三层MVC架构进行开发。主要特点:企业处于早期,业务比较简单,产品功能比较单一,业务会随时根据运营数据进行调整,对开发人员来说,主要讲不同的功能模块进行划分,能够应对业务随时调整的不确定性。

第二阶段成长期,公司公司业务快速成长,DAU可能达到十万,这是时候既要保证业务的稳定运行,又要进行产品的快速迭代。主要特点:前段加速优化,通过CDN等技术让前端的静态资源快速响应客户的操作;水平扩展,让后台服务分布式,需要使用负载均衡实现,但要对负载均衡的分流设计;数据库的优化,主要结构化和非结构数据的设计,以及通过缓存提供数据响应。

第三阶段完全分布式架构。这个主要特点:前端和数据都会很大的压力,对业务响应的效率要求就非常高;弹性扩容,系统因需求和用户的增长,会出现波峰与波谷,需要通过弹性扩容更好利用资源;功能服务化,需要将之前功能服务化,比如:微服务设计;

根据早期业务量,我们主要从以下几个方面:技术框架选型、数据存储、缓存选型、静态资源存储。目前来看,前段框架是SpringMVC,也直接采用前后端分离技术,采用SpringBoot+Vue来开发。数据存储一般采用MySQL,缓存采用Redis,静态资源通过Nginx实现本地托管。需要说明就是缓存的设计,基本访问路径是:访问缓存-是否命中-命中直接返回-没有命中-数据库查询-缓存更新。高可用可以通过部署多个节点,当一个节点受到异常的时候,还通过其他节点进行相应,基本可以达到2个9或3个9.

这个阶段对用户需求响应上,比如:全文检索、重大活动支持等。架构设计主要分为以下几块,前端系统扩展、无状态服务设计、在线水平扩展、后端系统扩展、系统通信和消息中间件。

前端资源因为不变主要通过存储分发,主要通过独立域名或CDN技术实现优化;无状态设计。

水平扩展需要条件有:资源快速交付、无状态服务设计、业务性能监控和统一服务入口,实现技术主要是负载均衡,可以采用四层和七层协议分别对不同场景的访问进行转发。

后端系统扩展主要实现缓存服务器和数据库的扩展,缓存服务扩展主要有Twemporxy+Sentinel和Redis Cluster

Redis Cluster采用去中心化设计,每个节点都是平行,通过哈希槽来实现划分,新添加节点时候,使用redis-trib工具将其他几点的slot迁移部分到新节点上面,迁移过程不影响使用。对于数据扩展,前期会通过分库分表来实现,建议分布式库来实现数据库的水平扩展

系统通信主要根据场景选择通信协议,有http协议、https协议和tcp协议。具体差别不在详述。

稳定期架构主要对系统功能进行拆分,实现服务分而治之、各司其职、协同工作,共同完成业务逻辑。主要几件事:业务拆分、统一配置、分布式任务。

首页
电话
短信
联系