软件架构杂谈(一)

浅谈软件架构(一)

这个世界上,被人们创造出来的软件架构大概已经有几百种之多了。当然,它们所处的层次,以及应用范围是不同的。本文讨论的是,工作在协议顶层——即应用层,且是机器间联网工作的软件架构。(由于内容荣杂,本文将分多个期次介绍,请读者关注后续博文)

开篇

行文将讨论的软件架构为以下7类:

1. C/S

2. B/S

3. Cluster (HA)

4. Cloud

5. Distributed

6. APNS-like

7. P2P

一,C/S架构。

这个词汇可谓老生常谈了。自高级语言编程在网络应用中一出现就随之诞生了。本文作者也在别的博文中讨论过,请读者参考另一篇博文《CS架构与多进程多线程》。(此处附图一张)

二,B/S架构。

如今的互联网世界,几乎被B/S架构垄断。诸如博客,社交,电商等等都基于B/S搭建。它存在与世界已经三十多年了,从上世纪九十年代开始流行至今,且应用增长速度长期处于暴增状态。就是如今的手机客户端也大多是B/S的功能复制品或是http协议的封装体。可以这么说,B/S就是人们日常离不开的互联网的核心。

接下来,我们从发展历史,以及应用两个方面来叙虽说B/S的传奇故事。

1.发展历史

众所周知,B/S架构指的是浏览器(Browser)/服务器(Server)的工作模型。

说到B/S的历史,首先要来谈谈浏览器。这要追溯到20世纪80年代,互联网之父TimBerners-Lee早期就重点研究Unix平台的浏览器,当然与今天桌面电脑上的浏览器俨然不是一个概念(因为Unix用于服务器,并不善于桌面效果展示)。但那就是早期的浏览器,由于Unix并非家用电脑操作系统,所以并没有被大众所熟知。后来,网景通讯公司联合创始人MarcAndreessen作为合作开发人开发出了第一款流行的桌面浏览器——Netscape 。该浏览器的1.0版本于1994年12月15日发布。在微软捆绑浏览器IE出现之前,前者曾经占据浏览器市场90%份额。Netscape让桌面浏览器走向了流行,也使人们可以更方便地使用互联网带来的福利了。

如上图所示,B/S工作的模型与C/S类似,只不过客户端运行的不再是具有特定功能的客户端软件,而是功能具有公通性的浏览器。换句话说,只要安装了浏览器,就可以访问任何http网站。对于客户而言,使用起来更为简便。同时,浏览器可以显示文字和图片,更为直观地向用户展示效果,使得使用友好性大大加强。同时阅读的视觉官感也非常良好。

可以说,浏览器的发明,带动了互联网世界的一次革命。

浏览器的优势不言而喻,接下来迎来的就是风起云涌的开发热潮,全世界各类浏览器遍地开花。其中比较有名的有,微软IE,Mozilla火狐(firefox),谷歌Chrome,Iceweasel,手机端的UC-Web等等。随着互联网技术的发展,以及网站架设和主页开发语言的进步,互联网的发展进入了它的黄金时期。

如今,我可以做个大胆的假设:只要用过互联网的人,就用过浏览器,也就享受过B/S的恩惠了。

2.应用

说到应用,B/S的应用可谓不胜枚举。还是举几个生活中的例子。大名鼎鼎的社交网站FaceBook,电商法老亚马逊,全球最大互联网公司——谷歌等等,无一不是靠着B/S架构在运转!再看看我神州大地,百度,阿里巴巴,腾讯,新浪,360,京东,苏宁易购,国美在线,以及各类层出不穷的团购网站。这些企业的一个典型特点是,要使用他们的服务,就得打开浏览器。尽管现在他们都推出了手机客户端,那也只是为了方便购物而做的一个封装,其根本技术基础依然是B/S架构。

可以这么说,要让线上服务变得方便,最优先选的方式便是B/S,因为它有一个打败其他一切的优势——简单易用。

浏览器与HTTP服务端通信采用的使HTTP协议(当然现在有更安全的HTTPS协议),它的下层采用的是TCP协议。因此它是一个可靠的通信协议,只要带宽允许,网络状况良好,就能保证良好的上网体验。

服务端,围绕着HTTP服务器而搭建,接收请求的服务进程就是HTTP服务器,它根据请求作出不同的回应。至于服务端实现的功能,由程序猿使用网页脚本语言编程,程序代码作为脚本方式被HTTP服务器调用。服务器在处理完请求之后将结果代码返送给浏览器,由浏览器解释并显示结果。也就是说,在这个工作模型中,浏览器也承担一定的工作,减轻了服务器的压力。如此一来,也能充分利用计算机资源,用户主机承担一部分工作,服务器主要作出响应回馈用户请求结果。也便于开发的模块化设计,服务器调用脚本,浏览器自行解析结果(按照统一协议标准解析),这样不会因为服务器与客户端的操作系统平台不一致而造成请求结果的二义性。

HTTP服务器软件如今已较为成熟,如Apache,Nginx等,其稳定性与速度都较为优良。

另外,在大用户量高并发应用场景中,单一的服务器已难以满足及时响应。因而会在服务端环境搭建HA和负载均衡。 请读者参阅相关文章进一步了解。

本文待续。其他软件架构的说明请参看后续博文。

时间: 2024-10-04 00:22:48

软件架构杂谈(一)的相关文章

软件架构杂谈(四) --- P2P

浅谈软件架构(四) -- P2P ----cnyinlinux 本文将讨论一种特殊的软件架构--P2P网络.这与时下正流行的O2O有些神似,不过二者没有联系,也不是同类物种.O2O指的是互联网虚拟世界(Online)与显示世界(Offline)的协作模式.而P2P指的是同处在互联网世界中的两个节点(对等终端)之间的情仇爱恨.因此也有人称之为对等网络. 和今天热炒的"去中心化"有着不可割舍的关系.还有一个神奇的物种与它有着绝对关联关系--比特币.下面我们来研讨下P2P网络的原理. P2P

软件架构杂谈(三) --- APNS

浅谈软件架构(三) -- APNS ----cnyinlinux 本文将讨论的是常见软件架构中的三角关系--APNS. APNS是Apple Push Notification Service的简称,即苹果推送通知服务.它用在当前很火热的苹果手机系统中.当然,它不是在手机iOS上运行的一个软件,而是牵扯普通APP应用商和苹果官方服务以及iPhone三方的软件架构.故而我把它称为三角关系. 这是一种新的架构,或者说模式,它并非传统的节点-服务器模式.目前微软的WP系统也采用此种工作模式.它的目标是

软件架构杂谈(二) --- Cluster (HA)

浅谈软件架构(二) cnyinlinux 之前发布过的博文,已经对C/S和B/S作了讨论,本文将讨论的是集群-Cluster. 1. C/S 2. B/S 3. Cluster (HA) 4. Cloud 5. Distributed 6. APNS-like 7. P2P 集群的技术是近年来计算机应用大规模普及,以及性能要求逐渐提高的形势下提出来的.简而言之,集群就是一批独立计算机联合运作处理某一高要求任务的技术.其建立在网络互连的基础上,核心是节点间任务分配--调度算法. 集群有几个显著特点

SoC嵌入式软件架构设计之四 :内存空间规划分配

本文继续阐述基于低端控制器CPU的SoC固件架构设计.第一节 SoC嵌入式软件架构设计之一:系统内存需求评估 讲述了系统内存需求的评估.这一节讲述内存空间的具体规划分配.CPU有两种体系结构:哈佛结构和冯诺依曼结构.哈佛结构是一种将程序指令存储和数据存储分开的存储器结构,如80251,代码空间与数据空间完全分开,独立编址:冯诺依曼结构是一种将程序指令存储器和数据存储器合并在一起的存储器结构,如MIPS,ARM等,其代码和数据空间是统一编址.这里就以冯诺依曼体系结构为例. 一.嵌入式系统软件分层

软件架构(一) 软件架构

本文主要阐述什么是软件架构.软件架构的重要性.什么时候软件架构尤其重要.什么是推定架构以及软件架构的三种使用方式. 1.什么是软件架构? 架构与详细设计 软件系统的设计由开发者的决策与意图组成.设计可以被划分为软件架构和详细设计. 专家们一致认同架构的主干,但是在细枝末节上却存在分歧,比如何时终止架构的设计而开始详细的设计. 在实践中,也很难将架构和详细设计区分开来. 卡内基·梅隆大学软件工程研究所(SEI)对软件架构的定义: 计算系统的软件架构时解释该系统所需的结构体的集合,其中包括:软件元素

软件架构设计的目的

软件架构设计的目的简单说就是在保持软件内在联系的前提下,分解软件系统,降低软件系统开发的复杂性,而分解软件系统的基本方法无外乎分层和分割.但是在保持软件内在联系的前提下,如何分层分割系统,分层分割到什么样的粒度,并不是一件容易的事,这方面有各种各样的分解方法,比如:关注点分离,面向方面,面向对象,面向接口,面向服务,依赖注入,以及各种各样的设计原则等, 耦合可以分为以下几种,它们之间的耦合度由高到低排列如下: (1) 内容耦合:一个模块直接访问另一模块的内容,则称这两个模块为内容耦合. 若在程序

《跨界杂谈》企业商业模式(四):弹性

2015-03-20 雷震子 雷震子 wxfrom=5" > 企业的"弹性"涉及几个方面:组织弹性.生产能力弹性.产品弹性等. 组织弹性 我们常常把企业裁员作为企业的负面新闻来报道,而把企业扩招作为正面新闻来传播. 前段时间传出IBM裁员26%的消息,后来证明是假新闻,当时看到IBM的发言人这样讲了非常多数字,并强调公司尽管在裁员(实际是数千人).但同一时候招聘的人很多其它,实际上这是该公司的转型.对于企业而言,针对瞬息万变的市场,对组织进行适应性调整,是稀松寻常的事情

创建型模式杂谈

[本文首发于cnblogs    作者:byeyear    Email:[email protected]    转载请注明] 本文是关于创建型模式的杂谈,全文的组织结构比较松散,但基本上还是依着原文的编写顺序来谈. A. 约定 使用”产品“来指代中间产品(如Room.Door.Wall等): 使用”成品“来指代最终的产品(如Maze). B. 创建型模式分类 创建型模式可分为两类:类创建型模式和对象创建型模式. B.1 类创建型模式使用继承改变被实例化的类,例如Factory Method,

软件架构设计系列总结

架构引用维基百科:软件体系结构是构建计算机软件实践的基础.与建筑师设定建筑项目的设计原则和目标,作为绘图员画图的基础一样,一个软件架构师或者系统架构师陈述软件构架以作为满足不同客户需求的实际系统设计方案的基础.从和目的.主题.材料和结构的联系上来说,软件架构可以和建筑物的架构相比拟.一个软件架构师需要有广泛的软件理论知识和相应的经验来实施和管理软件产品的高级设计.软件架构师定义和设计软件的模块化,模块之间的交互,用户界面风格,对外接口方法,创新的设计特性,以及高层事物的对象操作.逻辑和流程.软件