• 《架构漫谈》阅读笔记


    如果你有什么行业相关知识不太明白的,这时候你去看百度百科,你会发现,百度百科上边写的东西根本不是人看的,因为根本看不懂。《架构漫谈》的作者则使用通俗易懂的方式向我们解释了,到底什么是架构。架构这个词最早是产生在软件行业,后来才用到了软件行业里。

    #什么是架构?

    当产生分工时,大家需要通过一个机制联系在一起,来让每个人完成自己的任务。把一个整体(完成人类生存的所有工作)切分成不同的部分(分工),由不同角色来完成这些分工,并通过建立不同部分相互沟通的机制,使得这些部分能够有机的结合为一个整体,并完成这个整体所需要的所有活动,这就是架构。

    1.先根据要解决的问题对目标系统的边界进行界定

    2.然后对目标系统进行切分,设立沟通机制

    3.让部分可以有机的结合在一起成为一个整体,完成目标系统的工作

    架构实际上就是指人们根据自己对世界的认识,为解决某个问题,主动地、有目的地去识别问题,并进行分解、合并,解决这个问题的实践活动。

     

    #认识概念是做好架构的基础

    什么才是相?相指的不是一个具体的事物,而是这个事物所起的作用,而这个作用的目的是解决人的问题,

    抽象实际上是一个分类的过程

     

    做好架构首先必须具备的能力是能够正确的认识概念,能够发现概念背后所代表的问题,进而才能够认识目标领域所需要解决的问题,这样才能够为做好架构打好基础。

     

    #找出问题的主体,是做架构的首要问题

    要把关注点放在如何解决问题上,而不是如何完成任务

    架构师在解决问题时,要明确问题的主题是什么,自己在解决谁的问题,只有明白了问题的主体,问题才有了边界,我们才能真正地完成自己的任务,真正地把自己的问题解决掉。

    有的时候,你得到的不是问题是什么,而是一个问题的解决方案,这个方案你可能理解上有问题,也可能方案本身就是不合理的,你只有明白了问题的本质是什么,才能真正解决问题。

    #架构切分

    为什么要切分? 人的负载太重。切分的根本原因是人都为自己的利益着想,切分就是为了提升参与的人的利益。

    所有的切分调整,都是对相关人的利益的调整。

    切分的原则:1)必须在连续时间内发生的一个活动,不能切分。比如孕妇怀孕,必须要 10 月怀胎,不能够切成 10 个人一个月完成;(2)切分出来的部分的负责人,对这个部分的权利和义务必须是对等的。否则损害整体的利益,违背提升整体利益的初衷;(3)不能超负荷切分;

    切分的过程就是建模的过程,每次对大问题的切分都会生成很多小问题,每个小问题就形成了不同的概念

    架构切分的结果一定是一个树状,这也是为什么会产生分层。层数越多沟通越多,效率越低,分层要越少越好。尽可能变成一颗平衡树,才能让整个系统的效率最大化。

    #什么是软件

    在硬件上编写出的程序,就是软件,是用来控制硬件的行为的。

    软件的主要目的,还是把人类的生活模拟化,虚拟化提供更低成本,高效率的新的生活。

    #软件架构到底要解决什么问题?

    软件把现实生活模拟到计算机中,并且在计算机的硬件中运行起来的需要解决两个问题:

    业务问题具体的现实生活状态下,没有软件的时候,所解决的问题的主体是谁,解决的是什么问题,是如何解决,如何运作的?

    计算机问题如何把现实生活用软件来模拟?

     

    分别是谁的问题呢?

    1.业务的owner需要提升业务的效率,降低业务的成本,这是动机。这个实际上就是业务的问题,所以一般软件开发的出发点就在这里。

    2.是软件工程师的问题,要解决业务owner把业务虚拟化的问题,并且要解决软件开发和运营的生命周期的问题。

     

    什么是软件架构

    1.部署的架构:软件因为流量增大而分拆成不同的运行单元,在不同的机器上部署所形成的架构,属于软件架构。

    2.代码的架构:每个运行单元为了让不同角色的人,比如前端,业务,数据存储等能够并行工作,所分成的代码架构,也属于软件架构。

     

    #什么是架构师

     

    架构师是要去平衡别人的利益,甚至会调整别人的利益的,是一个leader

    架构师必须是一个组织的领导人,有权利调动这个组织的架构,才能够更好的发挥架构师的作用,更好的把利益的调整落到实处。

    架构师必须能够超越对时间的恐惧 -- 也就是说必须具备了一定程度的自信,哪怕是装的,去真正的发现问题的主体,识别真正的问题,并把这个行为变成为自己面对问题的第一反应。架构师还必须要明白,所给出的解决方案 -- 架构的分拆、合并方案,只有让问题的主体的权责对等,才能够真正的解决别人的问题。

     

    对于架构师,一门技术或语言只是解决问题的工具。

     

     

     

  • 相关阅读:
    测试工具Fiddler(一)—— 基础知识
    测试必备之Java知识(四)—— 线程相关
    【猫狗数据集】保存训练模型并加载进行继续训练
    【colab pytorch】保存模型
    【python-leetcode90-子集】子集Ⅱ
    【猫狗数据集】定义模型并进行训练模型
    【colab pytorch】数据处理
    hadoop之java.io.IOException: Got error, status message , ack with firstBadLink as 192.168.*.* 50010
    hadoop完全分布式之集群时间同步
    hadoop之完全分布式集群配置(centos7)
  • 原文地址:https://www.cnblogs.com/jmdd/p/12332259.html
Copyright © 2020-2023  润新知