世界著名的资讯机构Giga Group把中间件分为三大类,共十五种。另一家世界著名的资讯机构IDC同时指出,最近几年到未来的2002年,增长率最高的中间件将集中在数据存取中间件、消息中间件、交易中间件、对象中间件、应用服务器中间件5种。
数据访问中间件适用于应用程序与数据源之间的互操作模型,客户端使用面向数据库的API,以提请直接访问和更新基于服务器的数据源,数据源可以是关系 型、非关系型和对象型。这类中间件大都基于SQL语句,采用同步通讯方式。此类中间件使应用开发简单,但如果是透过广域网使用,会带来严重的效率问题,因为在低速网上来回交互SQL语句会使通讯流量过大,同时对数据压缩、加密带来不便。
消息中间件
消息中间件消息中间件适用于需要进行网络通信的系统上,负责建立网络通信的逻辑通道,由消息中间件实现数据或文件发送。 消息中间件的一个重要作用是可以实现跨平台操作,越来越多的分布式应用采用消息中间件来构建,通过消息中间件来把应用扩展到不同的操作系统和不同的网络环 境 中间件领域目前最热门的技术是异步的消息中间件,异步中间件技术比同步中间件技术具有更强的容错性,在系统故障时可以保证消息的正常传输,因而在过去的两 年里增长迅速。
交易中间件
交易中间件交易中间件是专门针对联机交易处理系统而设计的。交易中间件就是一组程序模块,用以大大减少开发一个联机交易处理系统所需的编程量。交易中间件 的主要标准是X/OPEN 组织定义的分布式交易处理参考模型。交易中间件理论上相对成熟,功能和性能界定清晰,但基本上适用于联机交易系统,如银行业务系统、定票系统等。交易中间 件管理由应用声明和提交的交易,并通过两阶段提交协议等方式保证分布式交易的完整性、控制并发、实现交易路由和均衡负载。
对象中间件
对象中间件面向对象的中间件提供一个标准的构件框架,能使不同的厂家的软件通过不同的地址空间、网络和操作系统互相交互访问。该构件的具体实现、位置及 所依附的操作系统对客户来说都是透明的。例如,我们可以通过简单的组装或扩展已有的构件就可以建立一个客户机/服务器结构的信息系统。面向对象的中间件技 术的目标就是为软件用户及开发者提供一种应用级的即插即用的互操作性,就象现在使用集成块和扩展板一样。 有关对象中间件的标准相继问世,像OMG组织的CORBA、Microsoft的COM 以及IBM公司的SOM等,这些标准都极大地促进了对象中间件技术的发展。
应用服务器中间件
应用服务器中间件针对Internet/Intranet和其它分布式构件应用,提供服务方构件的完整环境。与交易监控器类似,只不过是面向对象的、支 持构件、具有标准API。应用服务器将在越来越热的电子商务领域发挥重大作用。
其实,一个复杂的分布式系统可以通过搭积木的方式来建立,每个积木就是一个中间件,可通过适当的代码将其黏合在一起。
Tomcat
Tomcat是Sun的JSWDK(JavaServer Web Development Kit)中Servlet的运行环境(servlet容器)。Tomcat是Apache Jakarta软件组织的一个子项目,Tomcat是一个JSP/Servlet容器,它是在SUN公司的JSWDK(Java Server Web Development Kit)基础上发展起来的一个JSP和Servlet规范的标准实现,使用Tomcat可以体验JSP和Servlet的最新规范。经过多年的发展,Tomcat不仅是JSP和Servlet规范的标准实现,而且具备了很多商业Java Servlet容器的特性,并被一些企业用于商业用途。
JBoss
JBoss是一个运行EJB的J2EE应用服务器。它是开放源代码的项目,遵循最新的J2EE规范。从JBoss项目开始至今,它已经从一个EJB容器发展成为一个基于的J2EE的一个web 操作系统(operating system for web),它体现了J2EE规范中最新的技术
WebLogic服务器是企业级的应用服务器,支持EJB, 集群以及 ERP(企业资源计划)的连通性 ,开发公司:BEA。
WebSphere产品系列是IBM公司一套典型的电子商务应用开发工具及运行环境
ZooKeeper
ZooKeeper 提供基础的目录/名字服务、配置管理服务。并且在此基础上还能提供分布式锁、leader选举等高级功能。网上有一段有趣生动的介绍:“ZooKeeper,顾名思义就是动物园里大象(hadoop)、蜜蜂(Hive)、小猪(Pig)、和我的猫(MyCat)的管理员”。
客户端建议采用Apache Curator这个二次封装的客户端来进行客户端代码的编写,它封装和简化了很多于业务无关的逻辑,使用简单,质量可靠。
Apache Kafka
Kafka是一个高吞吐量的分布式消息系统,由LinkIn开源,被描述为LinkeIn的“中枢神经系统”。Kafka管理从各个应用程序汇聚到此的信息流,这些数据经过处理后再被分发到何处。
Kafka使用Scala开发,而Scala又是JVM上运行的动态需要,因此对会Java的同学来说学习难度并不大,其客户端也支持Java语言,比较容易部署在本机上进行学习研究。
Facebook Thrift
Facebook Thrift是最新一代高性能、跨需要的RPC通信框架,支持多种语言。
Facebook Thrift与Ice类似,不过没有Ice完整和成熟。与Facebook Thrift类似的还有Apache Avro。
Apache Storm、Spark Streaming 、Samza
与Hadoop相比Storm是个实时的高容错的分布式计算系统。Storm也可以处理批量数据,但其在保证高可靠性的前提下还可以让处理进行得更加实时,所有的信息都会被处理。Storm同样还具备容错和分布计算的特性,这让Storm可以扩展到不同的机器上进行大批量的数据处理。
Storm的主要开发语言为Java,并且包括了Clojure这种Lisp语言,对于Java工程师来说,学习难度并不大。与Strom类似的还有Spark Streaming、LinkIn的Samza,它们都是最近开源的热门项目。
Spark Streaming是Spark中新的流式计算框架。Spark并不会像Strom那样一次处理一个数据流,而是在处理前按时间间隔预先将其分为一段段的批处理作业。
而Samza处理数据流时,会依次处理收到的每条消息。Samza的流单位既不是元组,也不是Dstream而是一条条消息。
Strom、Spark Streming、Samza这三种实时流计算系统都是分布式系统,具有低延迟、可扩展和容错性等诸多优点。它们的共同特同特色在于:允许你在运行数据流代码时,将任务分配到一系列具有容错能力的计算机上并行运行,此外,它们都提供了简单的API来简化底层实现的复杂程度。
MyCat
MyCat是一个基于MySQL的分表分库的中间件软件,也可以说是一个分布式数据库,其前身为阿里巴巴开源的Cobar,但由于阿里巴巴后来发展云平台并提供收费RDS服务,因此最终关闭了这个开源项目。然后国内一帮技术大拿一起发起了MyCat开源项目 ( http : / / www my cat org. cn ),目标是成为Apache旗下的顶级中国开源项目。
Java里的“中间件”有哪些?分别是什么意思?
中间件:非底层操作系统软件、非业务应用软件,不是直接给最终用户使用的,不能直接给客户带来价值的软件,统称中间件。常见的有如下几种:服务中间件、集成中间件、数据中间件、消息中间件、安全中间件。
用Java实现的中间件,统称Java中间件。中间件,可以理解为类库,介于类库和产品之间。
说简单一点,就是你的程序A和程序B互相通信使用的协议,程序A,B可以由不同语言不同平台构建。但是协议可以保证他们能互相认识互发的东西。
简单说,中间件有个很大的特点,是脱离于具体设计目标,而具备提供普遍独立功能需求的模块。这使得中间件一定是可替换的。如果一个系统设计中,中间件是不可替换的,不是架构、框架设计有问题,那么就是这个中间件,在 别处可能是个中间件,在这个系统内是引擎。
一般本地开发的话建议使用tomcat。
linux系统建议使用jetty或apache hpptd
大型的项目就用JBOSS或webloigc
小项目,或者是个人开发tomcat 大项目或者商业项目一般采用:weblgoic/webshere
其他的还有jboss、glasshfish等
一些示例项目或者小项目常采用jetty
tomcat , jboss, weblogic, websphere 一般项目tomcat就可以了。
评论
查看更多