美文网首页
传统软件开发架构向基于云平台转型之路

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

作者: 无意创新 | 来源:发表于2019-04-21 17:19 被阅读0次

    本文目标

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

    架构概述

    软件开发架构大概分为三个阶段,早期、成长期和稳定器。

    第一个阶段为早期单体架构,一般服务端+数据库的方式进行开发,采用三层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协议。具体差别不在详述。

    消息中间件主要解决应用耦合、异步投递消息、流量削峰,采用RabbitMQ.

    这一步可以实现DevOps进一步提高效率,采用的技术方案Jekins+Kubernets。

    稳定期架构

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

    本文基于《云原生应用架构实践》整理而成。

    相关文章

      网友评论

          本文标题:传统软件开发架构向基于云平台转型之路

          本文链接:https://www.haomeiwen.com/subject/zwyjgqtx.html