中间件是什么?C/S、B/S、中间件浅易讲解
先抛出个经济学观点:社会的发展导致了社会分工,分工的结果是进一步提高了技术生产能力。--《资本论》第一章
随着技术系统的规模发展得足够复杂,导致了开发团队无法亲力亲为参与每个技术系统的全部建设,如果每次承接同类业务开发都从零开始对接,那么将大大增加研发成本。 这就导致了社会分工,有人把工程开发中基础的、底层的、共用的服务和逻辑包装成中间件,你只管使用就够了。简单理解:中间件就是将具体业务和底层逻辑解耦的组件。
给个比喻:中间件,就是所谓的中介,毕竟业务繁杂到一定程度后,干什么都需要中介。
让我们坐好板凳,回忆一下那些没有中间件的那些日子,除了最简单的不需要任何服务的单机版程序,一种较为朴实的技术系统设计架构叫做C/S架构。
一、C/S架构(客户端/服务器架构)
C/S架构,即Client客户端/Server服务器架构,是一种分布式应用模式,最简单的系统功能分为两层:客户端和服务器端。
如下图,最简单的技术系统分为两层结构,在实际部署中就是一台服务器和一台或者若干台终端。终端就是客户端,需要安装客户端程序(比如.exe、.apk等应用程序),服务器上安装数据库系统,提供数据库存储服务。这种架构叫做两层结构。客户端负责用户界面和业务逻辑,服务器端负责数据存储和处理。
多客户端的话,C/S架构需要在每个客户端安装专用的软件。
当业务发展得稍微复杂了,客户端上的业务逻辑很复杂,我们为了让客户端瘦下来(不瘦下来的话,软件开发人员无法合理分工高效开发,另外对客户端配置要求也越来越高),这个时候,我们增加了一个应用服务中间层,我们在这台服务器上实现了应用服务。这就形成了三层结构。如上图所示。三层结构通常是指将整个业务应用划分为:表现层(客户端呈现)、业务逻辑层(应用服务关联)、数据访问层(数据库服务关联)。
三层结构在应用服务这个中间层慢慢发展,慢慢催生形成了一些中间件开发框架,也在某种意义上推动了C/S向B/S的转变。
二、B/S架构(浏览器/服务器架构)
因为C/S架构要求在每个客户端安装程序,在用户使用方面是个阻碍。 由于浏览器的通用性,所以,很多技术系统都转变成了B/S架构。B即Browser,指的是Web浏览器,极少数事务逻辑在前端实现,但主要事务逻辑在服务器端实现。B/S架构的系统无须特别安装,只要有Web浏览器即可。很多时候真是浏览器在手,天下我有。B/S架构,就是浏览器/服务器架构,简称“鄙视”架构,谁用谁知道,用了都说好。
B/S架构是典型的三层结构,即表现层、业务逻辑层、数据访问层。客户端使用应用服务的流程如下:
1 客户端输入链接,向web服务器发起HTTP请求(或者HTTPS)。
2 web服务能够处理HTTP请求,并且调用应用服务器的暴露接口。
3 应用服务器的接口被web服务器调用,会执行对应的暴露方法。如果有必要和数据库进行数据交互,应用服务器会和数据库进行交互后,将json数据返回给web服务器。
4 web服务器将html前台模板+数据组合渲染成html返回给客户端。
5 客户端浏览器呈现html效果。
具体的web实际应用部署中,我们经常会见到以下两种简单架构。
(1) 单体架构
这个B/S架构下,数据库和web应用都安装在同一个服务器。
(2) 应用与数据库分离架构
这个B/S架构下,web应用和数据库单独分开安装在不同服务器。
单体架构、分离架构的区别其实就是为了缓解应用服务和数据服务捆在一起的压力,让凯撒的归凯撒,上帝的归上帝,各自分开负责应用和数据。其他复杂的一些架构,比如使用负载均衡、缓存抗量、多应用部署和Nginx反向代理、 数据库读写分离、应用分组部署等架构,主要是为了承受大规模的用户访问和高并发服务。比如12306网站,肯定采用了较为复杂的设计架构。
三、 C/S、B/S、中间件的关联
B/S是随着浏览器的更普遍应用兴起的的技术系统设计,在这种架构下,在web和应用服务这个中间层,它至少需要提供两个功能。
(1)web基础交互功能(与浏览器交互的用于处理HTTP请求和响应功能)
这块功能是工程开发中基础的、底层的、共用的服务。所以web基础交互方面已经发展了一些成熟的Web服务器中间件,如Nginx、Apache、IIS 等中间件。
(2)具体业务对应的业务逻辑功能(比如政府采购网站,需要登录注册还有货品展示、下单等功能)
这部分我们常称之为应用服务,是开发过程中个性化开发的部分,开发好了,我们将编译后的应用服务代码部署在web应用服务器,然后再安装配置Web服务器中间件,网站就可以进行访问使用了。
四、其他
中间件还有很多其他方面的应用。web服务器中间件只是其中一种。
常见的中间件分类包括:
1. 消息队列中间件:用于在应用程序之间进行异步消息传递。消息队列中间件包括RabbitMQ、Apache Kafka、ActiveMQ等。
2. 数据库中间件:用于管理和访问数据库。数据库中间件包括MySQL Proxy、PostgreSQL PgBouncer等。
3. 缓存中间件:用于加速数据访问,减轻数据库负载。缓存中间件包括Redis、Memcached等。
4. Web服务器中间件:用于处理HTTP请求和响应。常见的Web服务器中间件包括Nginx、Apache等。
5. 应用服务器中间件:用于托管和管理应用程序的执行环境。它们通常用于Java EE和其他应用程序开发技术中。常见的应用服务器中间件包括Tomcat、Jboss等。
6、其他中间件。
睿智创新.RAIZ
致力于信息技术与开发应用的,一体化IT服务提供商
运维外包 | 网站建设 | 软件开发 | 系统集成
技术服务交流,优秀案例分享,欢迎关注私信