day10--软件架构的变迁

  1. 第一种流行过的架构:


    day10--软件架构的变迁_第1张图片
    1575176720.jpg

    比如说,现在的目标是开发一个自主品牌的mp3播放器,那么就需要懂硬件,比如单片机、传感器、声音设备,再利用汇编或者c语言来对该电子系统编写相应的程序。

  2. 在计算机发明初期,几乎大部分应用程序都是直接针对硬件来编写的,而这样的应用程序基本不能通用,所以出现了操作系统。目前市场上流通的大部分软件都是工作在操作系统上的。如图:


    day10--软件架构的变迁_第2张图片
    983876636.jpg

    编写这样的应用程序需要了解硬件,了解操作系统,并且能够使用c,c++,VB,等编程语言调用操作系统SDK完成软件功能。由操作系统去跟硬件系统打交道,这样对于开发人员的要求降低了很多,同时应用程序的通用性会变得更好。

  3. 再看第三种架构:


    day10--软件架构的变迁_第3张图片
    1161328679.jpg

    随着计算机软件的发展,我们发现很多软件都是在和数据打交道,用户数据需要记录到系统中,同时应该能快速的检索数据,因此在单机应用中出现了数据库这么一类应用程序。在需要存储数据,搜数据,以及对数据加工处理统计的时候可以把这些工作交给数据库去处理。

  4. 第四种架构:


    day10--软件架构的变迁_第4张图片
    236011488.jpg

    这个是c/s应用程序架构,这里的客户端架构与第三张图的单机类似,唯一不同的是在数据的来源上做出了改变。原本的单机应用程序数据存储在本地,但是一个软件系统如果有很多人使用多个客户端连接的时候,那么解决方案就是让数据通过网络对客户端提供数据服务。
    但是直接通过客户端远程连接数据库是不安全的。
    因此出现了server,通过服务器程序来操作数据库,客户端程序只能旋转与服务器交互,所有的业务操作由服务端完成,这种模式就是c/s架构。
    完成c/s架构所需知识比单机应用的架构难度大很多,不仅要懂得单机应用开发所需知识,还需要掌握网络数据库系统,以及web服务,socket服务等技术。

  5. c/s架构应用程序存在一些缺点:需要更新所有已安装的客户端版本,而且会出现多个版本并存的情况,后期维护代价极大。
    因为这样的原因,就出现了B/S架构的软件。如图:


    day10--软件架构的变迁_第5张图片
    485804265.jpg

    此架构的服务器端与第四张的服务器端基本一致。主要区别是B/S架构的程序不需要安装客户端程序,而是使用浏览器作为前端来交互的。一些成熟的解决方案:java的javaee架构,微软的asp.net架构,完全开源的lamp架构。
    这样架构的优点在于因为存在大量成熟的解决方案,只需要一台可连网的服务器,就可以让整个系统运转起来。开发速度开,运营成本低。

  6. 从2010年以后,智能手机在国内大量普及,几年时间诞生了数百万的App与手机游戏,往往一个项目挤拥有网站又拥有独立的App,而且作为一个整体的系统,ios,安卓,与网页的数据是一致的。
    那么要做到这样的架构设计,得让ios、安卓客户端共用我们的服务端。如图:


    day10--软件架构的变迁_第6张图片
    1384456116.jpg
  7. 在移动互联网时代,经常会涉及到自己的平台与第三方平台的交互,比如,支付宝、微信、微博等。如图:


    day10--软件架构的变迁_第7张图片
    1507451604.jpg

    与第三方的交互,需要通过服务器发起请求调用第三方的API,并且为第三方的平台保留回调的接口。

  8. 处理功能需求外,还有质量需求。比如,网站的负载能力,网络并发连接数,系统的数据吞吐量,项目是否具有扩容能力等。这样就带出了,当今流行的架构,分布式集群架构
    day10--软件架构的变迁_第8张图片
    618407791.jpg

    day10--软件架构的变迁_第9张图片
    63033533.jpg

    第一张图的重点在后端,其他架构都是单机架构。任务量增大时,第一个办法是升级配置,但是最后的cpu,最大的内存条也是有限度的。而处理无限增大的任务的办法是,加机器,这就是集群的意思。不同的环节用不同的机器来处理,比如:管理、数据、测试、产品。这就是分布式。一个人干不完的活,让其他人分工协作就是分布式集群架构的含义。受人敬仰的架构师就是这类架构师。
    第二张图的重点在前端,所画的是市面上流行的混合APP的架构。支付宝、facebook都是著名的混合APP应用。
    混合app使用html、css打造用户界面,无论浏览器、微信端、还是app中。因此他在服务器跟新内容,可以让ios、安卓、浏览器保存高度一致。

你可能感兴趣的:(day10--软件架构的变迁)