zoukankan      html  css  js  c++  java
  • 《架构漫谈》读书笔记七

    什么是软件架构

    这就是软件比较复杂的地方,涉及到软件本身的业务体系,和所虚拟的业务体系。根据以上的分析,所生成的架构,究竟那些算是软件架构呢?

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

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

    所以当我们说软件架构的时候,我们一定要讲清楚,究竟说的是部署的架构,还是代码的架构。软件架构的落地,需要软件的组织架构和流程来保障,离开了这个,软件架构是一句空话。

    另外很多人讲,架构是进化出来的。架构实际上是在量不断的增大,超过了单台服务器的容量,逐渐的分拆,同时导致超过单个人员的能力,工作人员不断的增多,工作内容不断的分拆形成的。这本身就是架构的意义所在。不管怎么分拆,所达到的目标没有任何变化,就是完成业务在计算机中的虚拟化。

     

    软件架构就是软件的基本结构。架构的本质是管理复杂性。如果你觉得架构不重要,可能是你做的事情不够复杂,或者是你没有管理好复杂性。架构模式虽多,但常用的适合ICT软件,也就那么几种:

    1.分层架构

    2.事件驱动架构

    3.微核架构(又称插件架构)

    4.微服务架构

    5.云架构

    一、分层架构

    分层架构(layered architecture)是最常见的软件架构,也是事实上的软件标准架构。如果你不知道要用什么架构,那就用它。有人说软件职业生涯中只用到了一种架构,那一定也是它。当前很多产品的顶层架构,几乎无一例外的也是分层架构。

    分层架构将软件分成若干个水平层,每一层都有清晰的角色和分工,不需要知道其他层的细节。层与层之间通过接口通信。虽然没有明确约定软件一定要分成多少层,但是最常见的是四层结构。

    表现层(presentation):用户界面,负责视觉和用户互动

    业务层(business):实现业务逻辑

    持久层(persistence):提供数据,SQL 语句就放在这一层

    数据库(database) :保存数据

    有的软件在逻辑层和持久层之间,加了一个服务层(service),提供不同业务逻辑需要的一些通用接口。用户的请求将依次通过这四层的处理,不能跳过其中任何一层。

    分层架构的优点:

    1、结构简单,容易理解和开发;

    2、不同技能的程序员可以分工,负责不同的层,天然适合大多数软件公司的组织架构。虽说架构决定组织,但实际上架3、构往往都是服从于组织;

    3、每一层都可以独立测试,其他层的接口通过模拟解决。

    分层架构的缺点:

    1、 一旦环境变化,需要代码调整或增加功能时,通常比较费时费力;

    2、部署比较麻烦,即使只修改一个小地方,往往需要整个软件重新部署,不容易做持续发布;

    3、软件升级时,可能需要整个服务暂停;

    4、扩展性差。用户请求大量增加时,必须依次扩展每一层,由于每一层内部是耦合的,扩展会很困难。

     

  • 相关阅读:
    这是一篇乖巧的草稿——vscode上传代码到代码托管平台GitHub
    性能测试基础及练习
    adb
    前端常用的设计模式
    Vue Router 路由实现原理
    XSS与CSRF区别及防范
    vue中函数的防抖节流
    axios 使用post方式传递参数,后端接受不到
    类数组转换为数组的方法
    深入理解原型,原型链的关系
  • 原文地址:https://www.cnblogs.com/cj-125/p/11058376.html
Copyright © 2011-2022 走看看