系统设计原则及技术指标

系统设计原则及技术指标

1 系统技术设计原则

好的系统都是迭代出来的

  1. 优先核心业务功能开发
    系统的初期,以核心业务为主,快速上线,占取市场份额,等待用户及市场反馈,及时调整需求进行项目迭代,不要一开始就想开发一个淘宝或者京东,也许你可以开发出来,但是市场份额已满,到头来一场空。

  2. 不要过度复杂化系统
    不要为了用某项技术而使用,某项技术的使用是为了应对业务增长带来的系统瓶颈问题,例如一个简单的OA系统,你非要使用微服务、分布式架构、亿级流量缓存,除了增加了开发、运维成本,还要应对开发过程中的种种问题,“不是贵的才是最好的,适合自己才是最重要的。”

  3. 先行的规划和设计
    对将要做的系统有一个基本的了解,可以通过产品运营了解大概的用户量、请求等系统指标信息,并以此为基础对服务器资源、网络资源、系统架构有一个基本的规划和设计。

  4. 对现有的问题有方案,对未来可能出现的问题有预案
    针对已上线或测试阶段发现的问题有解决方案,并对未来可能出现的问题有预案,例如秒杀场景下要预测大量请求进来对系统的压力(服务器、网络、存储等),并做好应急方案,防止系统崩溃。

无状态原则

  1. 什么是有状态
    服务端保存用户登录状态,维护客户端会话。
  2. 什么是无状态
    服务端不保存用户登录状态,不维护客户端会话。
  3. 有无状态对比
    优缺点有状态无状态
    优点服务端对登录状态可控不存储登录状态;服务可伸缩
    缺点服务端存储,增加了服务端压力;服务伸缩困难登录状态控制困难

拆分原则

  1. 为什么要拆分
    用户量大了(并发上来了)、业务复杂了(需要快速迭代)、可配置资源增加了(运维成本)。
  2. 拆分的作用
    高内聚、低耦合。
  3. 拆分维度
    1. 系统维度:可拆分为商品系统、支付系统、用户系统、订单系统等,具体拆分为几个系统需产品经理确定或项目经理决定。
    2. 功能维度:基于系统维度进行二次拆分,例如用户系统拆分为用户会员系统、用户积分系统、用户中心等
    3. 读写维度:读写比例特征进行拆分。读服务(多级缓存)、写服务(分区、分库)
    4. 切面:CDN、LVS、SLB,请求分流、限流、缓存等
    5. 模块:基础架构组封装二方库。数据库连接(支持多数据源、多种数据库)、分库分表表模块(动态配置接入)、综合消息队列(统一配置,兼容主流消息队列)、支付渠道接入(多渠道路由)
    6. 服务化原则:单节点到节点集群,节点维护困难,需要对服务进行自动注册及发现(服务治理),高并发下对服务进行限流、熔断、降级、隔离、恢复。

2 系统业务设计原则

防重原则
防重一般伴随着幂等一起出现,防止重复提交导致的幂等性问题。

  1. 客户端防重(按钮置灰、唯一标志)
  2. 服务端防重(锁、黑名单、限流)

模块复用原则

  1. 重构时机
    当部分代码在多个地方出现,或者你有想要拷贝的欲望时,证明需要重构次部分代码了。
  2. 重构的作用
    代码可读性、可维护性提升、个人能力的体现。
    可追溯原则
    一般情况下表现为记录日志,任何问题有据可查,有据可依,能快速发现问题并定位问题(甩锅锅)。
    反馈原则
    接口设计规范,语义明确,但隐私内容该做的处理还是要做。
    备份原则
    1. 代码备份:Git、GitLab、代码分支
    2. 数据备份:运维备份(数据库、存储、操作记录)
    3. 人员备份:不因某功能负责人员缺席而导致功能无法正常运行导致项目停滞。
      1. 定期CodeReview
      2. 项目开发规范(阿里开发规范:泰山终极版)
      3. 项目文档

3 软件质量衡量标准

  1. 晋升:总结过去,展望未来。
  2. 标准:ios/iec等标准
  3. 功能性:满足现有业务功能需求。
  4. 效能:投入与产出。
  5. 系统兼容性
  6. 易用性
  7. 可靠性:容错、可恢复。
  8. 安全
  9. 可维护性
  10. 可移植性

4 系统衡量指标

  1. 吞吐量
  2. 并发数
    1. 并发用户数
      有一部分用户使用业务,另外一部分用户 挂机,没有具体操作。
    2. 并发连接数
      用户和服务器之间的连接。一部分连接在传输数据,一部分连接 仅仅连接而已。
    3. 并发请求数
      请求静态数据,有可能是写操作。
    4. 并发线程数
      系统内,并发的线程数目。
  3. 响应时间&平均响应时间
    吞吐量:单位时间内,能接受和返回的数据请求量。
    看业务逻辑,看请求数据。
    TPS:Transaction Per Second。每秒进行的事务的数目。(整体定义事务的 请求、操作、返回)。
    QPS:Queries Per Second。每秒查询量。
    Tps和Qps的关系:打开首页就是一个事务。由具体的场景来决定。一个完整功能。
    平均响应时间:响应时间(用户的角度)(请求发出, 接受到响应,之间的时间)
    所有响应时间的平均值。
    可靠性指标:平均无故障时间。系统上线,到第一次发生故障,运行时间的平均值。
    公式计算:
    阿姆达尔定律:
    加速比:优化前的响应时间/优化后的响应时间。r。
    增强比例:某个模块的响应时间/总时间。 <=1,p。
    整体系统的平均响应时间:t新 = t老时间 * ((1-p)+ p/r)。
    整体系统的加速比:1/((1-p)+ p/r)。
    目的:优化 P值大的系统。加大r。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值