前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >可扩展模式

可扩展模式

作者头像
田维常
发布2019-07-30 20:04:15
5210
发布2019-07-30 20:04:15
举报

可扩展模式

概述

软件系统与硬件和建筑系统最大的区别在于软件是可扩展的。一个硬件生产出来后一般都不会进行改变了,而且都会一直使用,知道不能使用为止;一栋房子建好了是不会去改变其整体架构,顶多也是进行装修,但是整体架构是不会变的。

软件系统的天生的可扩展性既是魅力所在,也是其难点所在。魅力体现在我们可以对软件系统进行修改和扩展,难点在于如何使用最小的代价去修改和扩展系统。

可扩展的基本思想

尽管可扩展的方式由很多种,但是请切记,万变不离其中的一个字:拆。

对其拆分后:

拆,原本就是讲一个大系统拆分成若干个小系统,扩展时只需要修改其中一部分就可以了,无须对整体系统都改动,通过这种方式来减小改动范围,从而也降低改动风险。

按照不同思路来拆分软件系统,就会得到不同的架构,常见的拆分思路有以下三种:

面向流程拆分:将整个业务系统提供的服务拆分为几个阶段段,每一个阶段作为一部分。

面向服务拆分:将系统提供的服务拆分,每一个服务作为一部分。

面向功能拆分:将系统提供的功能拆分,每个功能作为一部分。

理解上面三种思路的关键在于如何理解:流程、服务、功能三者的联系和区别,从范围上来说,流程-->服务-->功能,单纯从概念上来说可能难以理解,我们看下面这个案例。

案例

比如说:一个学生信息管理系统(不要嫌弃这种案例,虽然看起来不咋地,但是咱们都是过来人,都搞过这类系统,所以这里采用学生信息管理系统大家都能很轻松的理解)。学生信息管理系统的拆分:

面向流程拆分

以下是上面各层的具体含义:

展示层:负责学生信息页面设计,不同的操作业务有不同页面。比如:登录页面,注册页面,修改密码页面,信息维护页面等。

业务层:负责具体业务逻辑的处理。比如:登录,注册,修改密码,学生信息修改等。

数据层:负责完成数据访问。比如:对数据库中的数据进行增删改查,记录相应的操作日志等。

存储层:负责数据的存储。比如:Mysql,Oracle,Redis等数据。

面向服务拆分

将系统分为登录、注册、信息管理、安全设置等服务,最终架构示意图为

面向功能拆分

每个服务都可能拆分为更多更细粒度的功能,比如:

注册服务提供多种方式进行注册,包括手机注册,身份证注册,邮箱注册,微信注册等,

登录服务包括手机号登录,身份证登录,邮箱登录,微信登录等。

信息管理包括学生基本信息管理,学籍管理,成绩课程管理等。

安全设置服务包括修改手机号码,修改密码,邮件验证,密码修改等。

通过以上学生信息管理系统的案例,我们可以发现,不同的拆分方式,架构图差异很大。但是好像无论使用哪种方式,最终都是可以实现的,那是不是我们随便找一个方案就拆呢?答案:否。我们不能随意拆分,要考虑多方面的因素,可能你考虑拆分的方式是很完美的,但是工期太久太长导致同时公司给不起那么久的时间。and so on!!!没有最完美的拆分方式,只有最适合的拆分方式。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java后端技术栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 可扩展模式
    • 概述
      • 案例
        • 面向流程拆分
        • 面向服务拆分
        • 面向功能拆分
    相关产品与服务
    云数据库 Redis
    腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档