学习笔记--架构基础知识

组件和模块的理解

从逻辑角度拆分系统得到的单元是模块,从物理的角度拆分系统得到单元是组件。划分模块的目的是指责分离,划分组件的目的是单元复用。

框架和架构的理解

框架就是提供组件规范以及基础功能的产品。架构指的是软件系统的基础架构,创造这些基础架构的准则以及这些架构的描述。现在大厂招架构师,就很侧重候选人对业务熟练以及架构设计能力,很接地气儿。

总结:软件架构指的是系统顶层结构,系统是一群关联个体组成,这些个体可以是子系统 模块 组件,架构需要明确系统包含哪些个体,系统中个体根据具某种规则运作,架构需要明确个体运作和协作的规则。

自己之前就很片面理解系统就是MVC MVVM MVP等具体的设计模式,没有升级自己技术认知以及技术理解能力,去年开发过程中也闹了不少笑话,但是从中也学到了很多。架构师可是技术人员的一个大台阶。

-----------------------------------------------分割线----------------------------------------

架构设计的真正目的

解决软件系统复杂度带来的问题,尤其是解决历史遗留问题,提高系统稳定性。

从架构设计的角度看。不管前端还是后端,都要和业务进行深入融合,识别出解决业务场景的复杂点,针对性进行优化和设计才能精准解决问题。

-----------------------------------------------分割线----------------------------------------

复杂度来源:高性能

软件系统高性能带来的复杂度体现在一台计算机内部以及多他计算机集群带来的复杂度。

我的理解就是在受限(就一台机子或者有限的机子)的条件下选择最优的方案来解决软件问题。

单机的复杂度 关键是操作系统,硬件指标CPU性能发展。将硬件性能充分发展出来的是操作系统,操作系统和硬件一起发展,操作系统提供软件环境,操作系统复杂度直接影响团建系统的复杂度。操作系统性能有两个指标就是进程和线程。就有了批处理系统。如何高效处理批处理就有了调度算法,有分时调度,把CPU时间分成很多片段,每个片段去执行某个进程的指令。

但是又有问题了。如何提高进程之间的效率呢?进程间通信就被设计出来,管道,消息队列,信号量,共享存储等。再细化进程就有了线程。线程是进程的中的子任务,这些线程共用一份数据,为了确保读写正确加入了互斥锁机制。

集群的复杂度

原因在于业务发展超过了硬件发展,只能堆人堆服务器。

人力物力备齐准备大干一场,怎么配合呢?

1. 任务分配

任务分配的意思是指每台机器都可以处理完整的业务任务,不同的任务分配到不同的机器上执行。

2. 任务分解

任务分解的方式,能够把原来大一统但复杂的业务系统,拆分成小而简单但需要多个系统配合的业务系统。从业务的角度来看,任务分解既不会减少功能,也不会减少代码量

简单的系统更加容易做到高性能

可以针对单个任务进行扩展

总结就一句话 实力就是高维打击的利器

  • 0
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论

打赏作者

Coding_Physical

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值