对于计算机后端体系的一个不成熟的想法

Posted NoobSir

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对于计算机后端体系的一个不成熟的想法相关的知识,希望对你有一定的参考价值。

想法来源:

锻刀大赛

铁匠是传统的生产职业,现在计算机技术人员也越来越成为社会上的一种新兴生产职业. 有没有什么方法,类比传统技术,分析计算机系统的组成要素,以及关键技术点.

想法描述:

  1. 类比将铁板打造为刀剑的过程, 我认为对于计算机进行编程可以被看作为将没有特定功能指向性的计算机资源特化为解决某一类问题的解决方案 — 计算机中的减材制造是将没有功能指向性的计算机存储,计算,通信资源, 进行有针对方向的特化. 在某个需求下减少其不符合该需求的部分, 加强其服务的某些特征

  2. 刀剑的成型过程中不是简单的将一块钢板打造成某个形状. 刀剑分为多个部分例如手柄, 护手, 护指, 配重球等. 即使是刀剑的剑体部分也并不都是单一钢材进行打造. 例如 大马士革钢, 三明治打造法 等. 将这些刀剑的组件进行拼接,并有机配套地结合在一起才是一个完整的系统. 在这里我将其如此类比: 计算机技术中的增材制造主要是将由减材制造生产的各种模块, 按照环境需要, 进行结合. 一般进行结合的方式是通过程序接口的形式

  3. 另外的一些小灵感:

    1. 我认为计算机系统(主要说的是后端系统)的关键组成部分是 存储, 计算, 通信.

      1. 其中存储的主要参与对象是 硬盘磁带等长期存储模块 以及 为了更好存储而服务的例如内存等计算资源
      2. 计算的参与对象主要是内存,CPU,GPU 在某些情景下还要增加例如 寄存器,缓存 等组件
      3. 通信模块主要是基于 Internet 相关协议的网络通信以及以路由器,交换机,双绞线,光纤等为主要载体的通信介质

      Note: 在以上则几条中例如存储和计算都涉及到内存等模块的使用, 但是我觉得将其这样进行划分是合理的. 因为模块的主要功能核心并不相同. 例如存储模块中主要以存储作为核心, 而使用的内存等资源都是为了达成高效存储这一目的进行服务的手段.

    2. 后端存在的意义我认为主要是 通过进行信息的存储,分析以及分发,减少用户客户端之间通信的代价, 进而减小客户使用环境中的交流代价, 以及信息不对称带来的摩擦损失 (我没咋好好学过社会学经济学啥的, 如果有什么表述并不恰当, 还请稍微理解一下哈)

    3. 不同模块下的主要矛盾和一般需求:

      1. 存储模块: 存储速度, 读取速度(读取按照需求可以是扫描或者搜索之类不同维度), 存储时间(这里主要说的是数据的留存时间), 存储可靠性 [应该还有些其他的,但是我暂时没想到]
      2. 计算模块: 微观计算速度(这个描述是我刚想的, 主要说的是CPU,GPU主频等单核计算能力), 宏观计算速度(和前面的做一下区分, 主要说的是由多进程, 并行计算技术达到的总体计算速度), 辅助存储空间消耗(内存), 能量消耗(在某些特殊场景需要考虑)
      3. 通信模块: 通信质量, 通信速度

尚存问题:

  1. 对于每个模块的主要需求的理解还需要加深. 例如: 常见的安全性,可用性,一致性等内容还没法很好的加入这个理论体系中
  2. 对于程序开发人员相关的一些需求没有进行深入分析. 例如: 可维护性,易拓展,上手难度,迭代速度等维度没有进行考虑

指导实践:

  1. 积累不同需求环境下的后端系统设计经验, 分析每个环境的主要需求是什么, 需求之间的关系, 需求之间是否可替代等
  2. 了解在不同环境下达成某个需求的手段, 例如使用的语言环境, 技术工具, 集群架构等
  3. 分析在某个模块类型范围内的不同需求维度, 并由这些维度构建某一领域内的技术地图 — 将需求范围和可选的技术架构进行匹配,达到以较高视角理解计算机系统的目的

以上是关于对于计算机后端体系的一个不成熟的想法的主要内容,如果未能解决你的问题,请参考以下文章

Java体系化高级学习路线图,拿走不谢!

云计算SAAS公司估值体系演化

前端路由 or 后端路由

这一年多来,阿里Blink测试体系如何从0走向成熟?

40余家企业共推!国内首个云原生成熟度标准体系即将发布

仓库管理物料领用(不成熟想法)