操作系统、数据库、中间件号称系统软件三驾马车,其中的中间件是最神秘的。操作系统,如Windows,Linux等等,略有常识的小伙伴都耳熟能详,对于其功能也略知一二,数据库大致也许是一个用来存储数据的仓库。本文我们来简单的说一下中间件
关于中间件:
中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信。——IDC对于中间件的定义
中间件位于操作系统与用户软件之间,作用是为自己上层的应用软件提供运行于开发的环境,帮助用户灵活高效地开发和集成负载的应用软件。通俗的可以将中间件理解为一个水管,它不提供传统的应用的功能,而是提供软件与软件之间的连接,它能够让数据从一个应用流动的另一个应用之中。
中间件发展的驱动力来源于凝练、高效、复用的软件开发特点,通过中间件提供简单、一致、集成的开发核运行环境,简化分布式系统的设计、编程核管理。常见的中间件举例
1.事务处理中间件——Hadoop
当一个大的任务由一台机器在规定的时间内不能完成时,人们就要采用分布式计算,即很多台机器联合起来共同完成任务。换句话说,就是把大任务拆分成许多个小任务,然后再把这些小任务分配给多台计算机去完成。参与计算的多台计算机组成一个分布式系统,需要运行一系列的分布式基础算法。
Hadoop 实现了分布式计算中的基础算法(如一致算法、选举算法、故障检测、快照等),同时为用户提供了编程和命令接口。程序员调用这些函数能轻松写出分布式应用程序,我们都知道,如果一切从头开始,要完成一个分布式程序的编写是异常艰难的。Hadoop“覆盖”在操作系统之上,向上提供函数调用(API)和命令接口,在水平方向完成分布式系统的基础算法。作为编程人员和用户,只要了解 API 和命令即可。
图1. Hadoop
基于 Hadoop 平台衍生出来的开源项目主要有 Yarn、HBase、Hive、ZooKeeper、Avro、Sqoop、Mahout、Crossbow 等。
2. 消息中间件——QPID
消息中间件则是将软件与软件之间的交互方式进行存储和管理的一种技术,也可以看做是一种容器。
消息队列,是消息中间件的一种实现方式,下面是消息队列传递服务的模型:
图2. 消息队列传递服务模型
Qpid 是 Apache 开发的一款面向对象的消息中间件,Qpid 提供了很多额外的 HA 特性,非常适于集群环境下的消息通信。它提供了 C 和 Java 两个版本的 broker服务端,并支持多种语言的客户端。
Qpid 还提供了提供了安全认证特性,任何 producer/consumer 需要和 broker 通信时,都需要提供身份认证。QPID 的安全认证使用 SSL 协议。
图3. Qpid 中间件
目前使用较多的消息队列有 ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ等 。
3. Web服务器中间件——TOMCAT
Web服务器的工作原理,一般可分成如下4个步骤:
- 连接过程就是Web服务器和其浏览器之间所建立起来的一种连接。查看连接过程是否实现,用户可以找到和打开socket这个虚拟文件,这个文件的建立意味着连接过程这一步骤已经成功建立。
- 请求过程就是Web的浏览器运用socket这个文件向其服务器而提出各种请求。
- 应答过程就是运用HTTP协议把在请求过程中所提出来的请求传输到Web的服务器,进而实施任务处理,然后运用HTTP协议把任务处理的结果传输到Web的浏览器,同时在Web的浏览器上面展示上述所请求之界面。
- 关闭连接就是当上一个步骤应答过程完成以后,Web服务器和其浏览器之间断开连接之过程。
Web服务器上述4个步骤环环相扣、紧密相联,逻辑性比较强,可以支持多个进程、多个线程以及多个进程与多个线程相混合的技术。
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,其工作流程如下图所示:
图4. TomCat服务器工作原理图
常见的web中间件包括 Tomcat, Weblogic,Jboss, Jetty, WebShere, Glasshfish