为您推荐:
精华内容
最热下载
问答
  • 5星
    8.2MB Yao__Shun__Yu 2021-08-11 16:32:43
  • 5星
    19.58MB Yao__Shun__Yu 2021-05-31 15:44:57
  • 中间件(英语:Middleware),又译中间件、中介层,是一类提供系统软件和应用软件之间连接、便于软件各部件之间的沟通的软件,应用软件可以借助中间件在不同的技术架构之间共享信息与资源。中间件位于客户机服务器的...

    中间件的定义

    中间件(英语:Middleware),又译中间件、中介层,是一类提供系统软件和应用软件之间连接、便于软件各部件之间的沟通的软件,应用软件可以借助中间件在不同的技术架构之间共享信息与资源。中间件位于客户机服务器的操作系统之上,管理着计算资源和网络通信。 – 维基百科

    个人理解:

    将具体业务和底层逻辑解耦的组件,非业务的技术类组件非业务的技术类组件。是一种应用于分布式系统的基础软件,位于应用与操作系统、数据库之间,为上层应用软件提供开发、运行和集成的平台。中间件解决了异构网络环境下软件互联和互操作等共性问题,并提供标准接口、协议,为应用软件间共享资源提供了可复用的“标准件”。

    大致的效果是:

    介于操作系统和应用程序之间的产品,中间件简单解释,你可以理解为面向信息系统交互,集成过程中的通用部分的集合,屏蔽了底层的通讯,交互,连接等复杂又通用化的功能,以产品的形式提供出来,系统在交互时,直接采用中间件进行连接和交互即可,避免了大量的代码开发和人工成本。其实,理论上来讲,中间件所提供的功能通过代码编写都可以实现,只不过开发的周期和需要考虑的问题太多,逐渐的,这些部分,以中间件产品的形式进行了替代。需要利用服务的人(前端写业务的),不需要知道底层逻辑(提供服务的)的具体实现,只要拿着中间件结果来用就好了。
    

    举个例子:

    比如常见的消息中间件,即系统之间的通讯与交互的专用通道,类似于邮局,系统只需要把传输的消息交给中间件,由中间件负责传递,并保证传输过程中的各类问题,如网络问题,协议问题,两端的开发接口问题等均由消息中间件屏蔽了,出现了网络故障时,消息中间件会负责缓存消息,以避免信息丢失。相当于你想给美国发一个邮包,只需要把邮包交给邮局,填写地址和收件人,至于运送过程中的一系列问题你都不需要关心了。再比如我开了一家炸鸡店(业务端),然而周边有太多屠鸡场(底层),为了成本我肯定想一个个比价,再综合质量挑选一家屠鸡场合作(适配不同底层逻辑)。由于市场变化,合作一段时间后,或许性价比最高的屠鸡场就不是我最开始选的了,我又要重新和另一家屠鸡场合作,进货方式、交易方式等等全都要重来一套(重新适配)。然而我只想好好做炸鸡,有性价比高的肉送来就行。于是我找到了一个专门整合屠鸡场资源的第三方代理(中间件),跟他谈好价格和质量后(统一接口),从今天开始,我就只需要给代理钱,然后拿肉就行。代理负责保证肉的质量,至于如何根据实际性价比,选择不同的屠鸡场,那就是代理做的事了。

    链接:https://www.zhihu.com/question/19730582/answer/140527549

    评判关键从定义可以总结出评判的几个地方

    1. 性质:中间件是软件。
    2. 作用层级:系统软件和应用软件之间、软件各部件之间;管理客户机与系统软件之间的计算资源和网络通信。
    3. 服务对象:中间件为应用软件服务,应用软件为最终用户服务,最终用户并不直接使用中间件。
      在这里插入图片描述

    分类

    在这里插入图片描述

    中间件可以分为基础中间件、集成中间件和行业领域应用平台。其中,基础中间件是构建分布式应用的基础,也是集成中间件和行业领域应用平台的基础,包括应用服务器、消息中间件和交易中间件等。
    在这里插入图片描述

    三大基础中间件分别为交易中间件、消息中间件和应用服务器中间件,其中:

    交易中间件是:专门针对联机业务处理系统而设计的

    是所有中间件类型中理论较为成熟、功能和性能界定比较清晰的中间件产品。在联机业务处理系统中,需处理大量并发进程,涉及到操作系统、文件系统、数据通讯、数据库管理、应用软件等,通过交易中间件,可降低联机业务处理系统的开发难度,提高系统运行的安全稳定性。交易中间件主要应用在金融、财税、运输、电力、电信等行业中,如银行业务系统、电信计费系统等。

    消息队列(Message Quequing)是在消息传输过程中保存消息的容器,消息中间件即为消息队列的承载形式。

    消息是两台计算机间传送的数据单位,消息队列在将消息从它的源中继到它的目标时充当中间人,主要目的是提供路由并保证消息的传递;如果发送消息时接收者不可用,消息队列会保留消息,直到可以成功地传递它,主要解决传统结构耦合性问题、系统异步性问题以及缓解大数据量并发的问题等。

    消息队列有较多的型号,较为常用的为ActiveMQ、Rabbit MQ、RocketMQ和Kafk a。由于消息队列使用消息将应用程序连接起来,这些消息通过像Rabbit MQ的消息代理服务器在应用程序之间路由。

    应用服务器中间件位于客户浏览器和数据库之间,为应用程序提供业务逻辑的代码。

    应用服务器通过组件的应用程序接口将商业应用逻辑曝露给客户端的程序,同时为应用提供运行平台和系统服务,并管理对数据库的范围。对于高端需求,应用服务器具有高可用性监视、集群化、负载平衡、集成冗余和高性能分布式应用服务,以及对复杂的数据库访问的支持等功能。目前,市场上应用服务器平台中有J2EE,WebLogic,Glassfish,JBoss企业应用平台,以及Apache Tomcat和Apache Geronimo等。
    中间件技术发展的初衷是以适应网络技术应用的复杂性及跨平台特性为基础,是在软件产业不断发展过程中自然产生的。

    云服务

    云计算产业自下而上大体分为基础设施即服务(IaaS)、平台即服务(PaaS)、软件即服务(SaaS)三大部分,对应传统IT架构中的操作系统、中间件和应用软件。传统中间件服务一般使用专有API和专有协议,PaaS服务的特点在于开放开源,基于标准通用的API在异构系统之间实现互通互操作。根据Gartner分类,PaaS分为iPaaS(集成平台即服务)和aPaaS(应用部署和运行平台),前者侧重于PaaS与IaaS之间,实现跨多个云、云与传统应用程序之间以及公共云和私有云之间的缝集成;后者侧重于PaaS与SaaS之间,支持应用程序在云端的开发、部署和运行等。iPaaS和MWaaS成为全球中间件行业热点。根据Gartner于2018年6月发布的报告显示,企业对iPaaS(集成平台即服务)和MWaaS(中间件即服务)的投入将超越传统市场。2017年,传统中间件产品增速仅有个位数增长,而基于云和基于开源的应用集成(iPaaS)产品将继续保持两位数的增长(2017年iPaaS营收首次突破10亿美元,同增72%),是挑战者们角力的重点领域。而iPaaS的成功催生了MwaaS(中间件即服务)业务,MWaaS套件可以视为一组基于云的混合集成服务,包括云集成(iPaaS)、基于云的API平台(提供开发、运行、管理和保护API服务)、基于云的B2B集成(提供除API之外的其他服务,如EDI和MFT集成)、移动后端集成(MBaaS),、物联网集成等。以华为举例,华为重视云中间件市场,将其作为白皮书中重要细分行业。在其《鲲鹏计算产业白皮书》中测算,到2023年,全球中间件市场空间434亿美元,5年复合增长率10.3%。中国中间件市场空间13.6亿美元,5年复合增长率15.7%。且用户对于基于云的分布式应用服务、消息队列等中间件工具的需求不断增长,将会促进中间件市场的快速发展。目前,华为云中间件产品主要包括应用中间件系列产品和分布式数据库中间件(DDM)。其中,应用中间件系列产品主要包括应用管理与运维平台ServiceStage、微服务引擎CSE、分布式缓存服务Redis和Memcached、分布式消息服务(包括DMS、Kafka、RabbitMQ)、API网关APIG和云性能测试服务CPTS等。

    常见种类

    中间件是什么

    中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。是连接两个独立应用程序或独立系统的软件。相连接的系统,即使它们具有不同的接口,但通过中间件相互之间仍能交换信息。

    执行中间件的一个关键途径是信息传递。通过中间件,应用程序可以工作于多平台或 OS 环境。

    中间件是介于操作系统和应用软件之间,为应用软件提供服务功能的软件,有消息中间件,交易中间件,应用服务器等。由于介于两种软件之间,所以,称为中间件。

    为什么使用中间件

    具体地说,中间件屏蔽了底层操作系统的复杂性,使程序开发人员面对一个简单而统一的开发环境,减少程序设计的复杂性,将注意力集中在自己的业务上,不必再为程序在不同系统软件上的移植而重复工作,从而大大减少了技术上的负担。

    中间件带给应用系统的,不只是开发的简便、开发周期的缩短,也减少了系统的维护、运行和管理的工作量,还减少了计算机总体费用的投入。

    主要中间件的分类

    1. Hadoop
      当一个大的任务由一台机器在规定的时间内不能完成时,人们就要采用分布式计算,即很多台机器联合起来共同完成任务。换句话说,就是把大任务拆分成许多个小任务,然后再把这些小任务分配给多台计算机去完成。参与计算的多台计算机组成一个分布式系统,需要运行一系列的分布式基础算法。

    Hadoop 就是一个分布式计算平台,用 Java 语言开发,包含 Common、MapReduce 和 HDFS 三个核心部件(HDFS 和 MapReduce 是最核心的两个部件)。其中:
    Common 为 Hadoop 的其他项目提供了一些常用工具,主要包括系统配置工具 Configuration、远程过程调用 RPC、序列化机制和 Hadoop 抽象文件系统等。
    MapReduce 是处理海量数据的计算模型。
    而 HDFS 用于存储海量数据,它具备高度容错性,能在低成本的通用硬件机器上稳定运行。

    Hadoop 实现了分布式计算中的基础算法(如一致算法、选举算法、故障检测、快照等),同时为用户提供了编程和命令接口。程序员调用这些函数能轻松写出分布式应用程序,我们都知道,如果一切从头开始,要完成一个分布式程序的编写是异常艰难的。

    Hadoop 在海量非结构化数据处理方面能充分展示它的优势,如消费者购买行为分析、商品推荐、关键词检索、信贷风险评估等。

    如图 1 所示,Hadoop 其实就是一个分布式计算平台,它“覆盖”在操作系统之上,向上提供函数调用(API)和命令接口,在水平方向完成分布式系统的基础算法。作为编程人员和用户,只要了解 API 和命令即可。
    在这里插入图片描述
    图 1 Hadoop

    基于 Hadoop 平台衍生出来的开源项目主要有 Yarn、HBase、Hive、ZooKeeper、Avro、Sqoop、Mahout、Crossbow 等。

    以 Hadoop 为基础的生态目前已经成为大数据的标准方案,被广泛用于金融、市场、电信、交通等行业的海量数据分析,在即将到来的大数据时代,它将会发挥更大的作用。

    在中国,很多行业(如银行、电信、移动、电力、石油、交通等)沉淀了大量的业务数据,对这些海量数据进行挖掘和分析,将会带来巨大的价值。

    用 Hadoop 构建的应用实例对于计算资源的消耗具备两个明显的特征:
    资源需求大:表明 Hadoop 需要大量的存储、计算和网络带宽。
    资源需求具备季节性:表明除存储需求是经常性占用外,在运行 Mapreduce 时才需要大量的计算和网络资源,而分析大量数据的工作并不是经常性的——称为季节性

    因此,云计算是大数据天生的计算资源供应途径,云计算的资源弹性很好地满足了大数据的季节性计算资源需求。也就是说,大数据是云计算经典的应用案例。当然,也可以按照大数据对计算资源的波峰需求静态配给计算资源,但是这种方案会造成资源的巨大浪费。
    2. LVS
    LVS 是 Linux Virtual Server 的首字母缩写,意为 Linux 虚拟服务器,即把许多台物理 Linux 计算机逻辑上整合成一台超级计算机,对用户来说感觉只有一台计算能力很强的服务器,如图 2 所示。

    LVS 就是一个由软件实现的负载均衡器,工作在网络 OSI 的第四层(应用层),是中国人章嵩开发的,代码已经并入了 Linux 内核。利用它,再加上一台廉价的计算机,就能构建一台企业级的负载均衡器。而那些外国大公司的负载均衡器,售价都要十几万元,甚至几十万元,便宜的也要几万元,LVS 出来后,这些产品都不得不降价。

    负载均衡器的作用就是把任务分配给最合适的服务器。比如一个大型购物网店,有 100 台同样配置的服务器在运行,如果某一时刻有 10 万用户在线购物,那么通过负载均衡器,每台服务器差不多承担 1000 个在线购物用户。

    LVS 的官网网站是 http://www.linuxvirtualserver.org。另外,两个较为流行的第七层负载均衡器是 Nginx 和 HAProxy,针对应用做均衡,所以能适应的负载种类没有 LVS 多。
    在这里插入图片描述
    LVS原理图

    1. Linux-HA
      也许有读者会问:“负载均衡器本身故障怎么办?”是的,如果负载均衡器出现故障,那么整个系统(如网店)将会瘫痪。所以人们开发了各种集群软件,如 Linux-HA 和 Keepalive 等,而微软干脆就在 Windows 服务器版中集成故障转移集群软件。

    集成故障转移集群软件的核心思想是,实时检测故障机器并及时让好的机器接管工作,对外提供高可用性。Linux-HA 意为 Linux 高可用性项目,此项目具体包含如下几个组件。
    在这里插入图片描述

    通过心跳信号(Heartbeat)检测故障,一台好的计算机会不断向其他计算机发送心跳信号,也会接收其他计算机发送过来的心跳信息。当在规定的时间内没有收到对方计算机的心跳信号时,就启动应急预案,进一步确认故障并准备接管那台计算机的任务。

    例如,我们采用两台 LVS 计算机,并分别安装和配置 Linux-HA,一台 LVS 计算机作为工作机,另一台作为备份机,两台 LVS 计算机互相监督对方的运行状态。当工作机故障时,备份机接管负载均衡任务并报警。相反,当备份机出故障时,只报警,提醒技术员维修备份机。

    两台LVS计算机同时出故障是比较糟糕的情况,不过这种情况发生的概率很小,除非机房断电或者遭到雷击。对于一些非常关键的应用,可以增加参与负载均衡的服务器数量来提高可靠性,如民航飞机上采用 5 台服务器。
    4. 静态网站服务器
    我们浏览一家公司的网站时,很可能就是跟那家公司服务器上的 Apache 程序打交道,网页浏览器与 Apache 成了标准的 C/S 模式,浏览器是客户端,而 Apache 是服务端。Apache 首先把主页对应的文件 index.html 发给我们,我们看到主页内容后,点击主页上的某个链接,它又把该链接对应的文件发给我们,过程如图 3 所示。
    访问静态网页的过程
    在这里插入图片描述

    图 3 访问静态网页的过程

    配合 PHP 引擎,Apache 也支持 PHP 动态网页。过程为:

    1)当 Apache 收到用户要浏览的 PHP 文件后,把这个 PHP 文件发给 PHP 执行引擎。

    2)PHP 执行引擎执行该 PHP 文件,产生一个临时的静态网页文件并发回给 Apache。

    3)最后 Apache 把这个临时的静态网页文件发给用户。

    采用 Perl、Python 和 Ruby 脚本语言编写的动态网页,其工作过程与 PHP 类似。

    Apache 是最流行的开源网站服务器,在世界排名前 100 万的网站中,有 60.6% 的网站采用 Apache;在排名前 1000 的大型网站中,Apache 占到了 34.5%,而 Ngnix 占到了 34.9%,略胜于 Apache。
    5. 动态应用服务器
    开源的动态应用服务器有 JBoss、Tomcat、Geronimo、JOnAS,关于这些项目更详细的介绍,请参考相应的官方网站。

    推荐

    常见的中间件有哪些
    1.一般本地开发的话,小项目,或者是个人开发建议使用tomcat。
    2.linux系统建议使用jetty或apache hpptd
    3.大型的项目就用JBOSS或webloigc

    4.大项目或者商业项目一般采用:weblgoic/webshere,其他的还有jboss、glasshfish等
    5.一些示例项目或者小项目常采用jetty

    6.tomcat , jboss, weblogic, websphere 一般项目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是一个运行EJB的J2EE应用服务器。它是开放源代码的项目,遵循最新的J2EE规范。从JBoss项目开始至今,它已经从一个EJB容器发展成为一个基于的J2EE的一个web 操作系统(operating system for web),它体现了J2EE规范中最新的技术

    WebLogic服务器是企业级的应用服务器,支持EJB, 集群以及 ERP(企业资源计划)的连通性 ,开发公司:BEA。

    WebSphere产品系列是IBM公司一套典型的电子商务应用开发工具及运行环境

    Tomcat 介绍 如今,基于Web的应用越来越多,传统的Html已经满足不了如今的需求。我们需要一个交互式的Web,于是便诞生了各种Web语言。
    如Asp,Jsp,Php等。当然,这些语言与传统的语言有着密切的联系,如Php基于C和C++语言,Jsp基于Java语言。Tomcat即是一个Jsp和Servlet
    的运行平台。
    Tomcat是一个免费的开源的Serlvet容器,它是Apache基金会的Jakarta项目中的一个核心项目,由Apache,Sun和其它一些公司及个人共同开发
    而成。由于有了Sun的参与和支持,最新的Servlet和Jsp规范总能在Tomcat中得到体现。Tomcat被JavaWorld杂志的编辑选为2001年度最具创新
    的java产品,可见其在业界的地位。
    Tomcat最新版本是4.0x.4.0x与3.x的架构不同,而是重新设计的。Tomcat4.0x中采用了新的Servlet容器:Catalina,完整的实现了Servlet2.3
    和Jsp1.2规范。Tomcat提供了各种平台的版本供下载,可以从http://jakarta.apache.org上下载其源代码版或者二进制版。由于Java的跨平台
    特性,基于Java的Tomcat也具有跨平台性。
    与传统的桌面应用程序不同,Tomcat中的应用程序是一个WAR(WebArchive)文件。WAR是Sun提出的一种Web应用程序格式,与JAR类似,也是许
    多文件的一个压缩包。这个包中的文件按一定目录结构来组织:通常其根目录下包含有Html和Jsp文件或者包含这两种文件的目录,另外还会有
    一个WEB-INF目录,这个目录很重要。通常在WEB-INF目录下有一个web.xml文件和一个classes目录,web.xml是这个应用的配置文件,而
    classes目录下则包含编译好的Servlet类和Jsp或Servlet所依赖的其它类(如JavaBean)。通常这些所依赖的类也可以打包成JAR放到WEB-INF
    下的lib目录下,当然也可以放到系统的CLASSPATH中,但那样移植和管理起来不方便。
    在Tomcat中,应用程序的部署很简单,你只需将你的WAR放到Tomcat的webapp目录下,Tomcat会自动检测到这个文件,并将其解压。你在浏览器
    中访问这个应用的Jsp时,通常第一次会很慢,因为Tomcat要将Jsp转化为Servlet文件,然后编译。编译以后,访问将会很快。另外Tomcat也提
    供了一个应用:manager,访问这个应用需要用户名和密码,用户名和密码存储在一个xml文件中。通过这个应用,辅助于Ftp,你可以在远程通
    过Web部署和撤销应用。当然本地也可以。
    Tomcat不仅仅是一个Servlet容器,它也具有传统的Web服务器的功能:处理Html页面。但是与Apache相比,它的处理静态Html的能力就不如
    Apache.我们可以将Tomcat和Apache集成到一块,让Apache处理静态Html,而Tomcat处理Jsp和Servlet.这种集成只需要修改一下Apache和
    Tomcat的配置文件即可。
    另外,Tomcat提供Realm支持。Realm类似于Unix里面的group.在Unix中,一个group对应着系统的一定资源,某个group不能访问不属于它的资
    源。Tomcat用Realm来对不同的应用(类似系统资源)赋给不同的用户(类似group)。没有权限的用户则不能访问这个应用。Tomcat提供三种
    Realm,1:JDBCRealm,这个Realm将用户信息存在数据库里,通过JDBC获得用户信息来进行验证。2:JNDIRealm,用户信息存在基于LDAP的服
    务器里,通过JNDI获取用户信息。3:MemoryRealm,用户信息存在一个xml文件里面,上面讲的manager应用验证用户时即使用此种Realm.通过
    Realm我们可以方便地对访问某个应用的客户进行验证。
    在Tomcat4中,你还可以利用Servlet2.3提供的事件监听器功能,来对你的应用或者Session实行监听。Tomcat也提供其它的一些特征,如与SSL
    集成到一块,实现安全传输。还有Tomcat也提供JNDI支持,这与那些J2EE应用服务器提供的是一致的。说到这里我们要介绍一下通常所说的应
    用服务器(如WebLogic)与Tomcat有何区别。应用服务器提供更多的J2EE特征,如EJB,JMS,JAAS等,同时也支持Jsp和Servlet.而Tomcat则功
    能没有那么强大,它不提供EJB等支持。但如果与JBoss(一个开源的应用服务器)集成到一块,则可以实现J2EE的全部功能。既然应用服务器
    具有Tomcat的功能,那么Tomcat有没有存在的必要呢?事实上,我们的很多中小应用不需要采用EJB等技术,Jsp和Servlet已经足够,这时如果
    用应用服务器就有些浪费了。而Tomcat短小精悍,配置方便,能满足我们的需求,这种情况下我们自然会选择Tomcat.
    基于Tomcat的开发其实主要是Jsp和Servlet的开发,开发Jsp和Servlet非常简单,你可以用普通的文本编辑器或者IDE,然后将其打包成WAR即
    可。我们这里要提到另外一个工具Ant,Ant也是Jakarta中的一个子项目,它所实现的功能类似于Unix中的make.你需要写一个build.xml文件,
    然后运行Ant就可以完成xml文件中定义的工作,这个工具对于一个大的应用来说非常好,我们只需在xml中写很少的东西就可以将其编译并打包
    成WAR.事实上,在很多应用服务器的发布中都包含了Ant.另外,在Jsp1.2中,可以利用标签库实现Java代码与Html文件的分离,使Jsp的维护更
    方便。
    Tomcat也可以与其它一些软件集成起来实现更多的功能。如与上面提到的JBoss集成起来开发EJB,与Cocoon(Apache的另外一个项目)集成起
    来开发基于Xml的应用,与OpenJMS
    集成起来开发JMS应用,除了我们提到的这几种,可以与Tomcat集成的软件还有很多。
    Tomcat确实是一个很好的工具,不仅仅因为其免费,功能强大,更因为其开放性。如今,开源软件越来越收到人们的重视,Linux就是一个成功
    的典型。

    多种中间件(Tomcat, Apache, Nginx, MQ,等)各项性能参数设置、监控及优化;

    特点

    一、中间件是什么?
    中间件(英语:Middleware)顾名思义是系统软件和用户应用软件之间连接的软件,以便于软件各部件之间的沟通,特别是应用软件对于系统软件的集中的逻辑,是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件在客户服务器的操作系统、网络和数据库之上,管理计算资源和网络通信。总的作用是为处于自己上层的应用软件提供运行与开发的环境,帮助用户灵活、高效地开发和集成复杂的应用软件。

    也就是说,关于中间件,我们可以理解为:是一类能够为一种或多种应用程序合作互通、资源共享,同时还能够为该应用程序提供相关的服务的软件。中间件是一类软件统称,而非一种软件;中间件不仅仅实现互连,还要实现应用之间的互操作。
    在这里插入图片描述 中间件示意图

    中间件的特点:

    满足大量应用的需要;
    运行于多种硬件和OS平台;
    支持分布计算,提供跨网络、硬件和OS平台的透明性的应用或服务的交互;
    支持标准的协议;
    支持标准的接口。

    展开全文
    lockhou 2021-03-17 07:57:51
  • 1. 什么是中间件 我国企业从20世纪80年代开始就逐渐进行信息化建设,由于方法和体系的不成熟,以及企业业务和市场需求的不断变化,一个企业可能同时运行着多个不同的业务系统,这些系统可能基于不同的操作系统、不同...

    该笔记大部分搬运B站学相伴的RabbitMQ,顺便把图文合并记录,便于回顾,仅用于学习!
    视频地址:https://www.bilibili.com/video/BV1dX4y1V73G 作者真的非常好,别白嫖,记得三连
    如有侵权,请联系删除!

    1. 什么是中间件

    • 我国企业从20世纪80年代开始就逐渐进行信息化建设,由于方法和体系的不成熟,以及企业业务和市场需求的不断变化,一个企业可能同时运行着多个不同的业务系统,这些系统可能基于不同的操作系统、不同的数据库、异构的网络环境。现在的问题是,如何把这些信息系统结合成一个有机地协同工作的整体,真正实现企业跨平台、分布式应用。中间件便是解决之道,它用自己的复杂换取了企业应用的简单。

    • 中间件(Middleware)是处于操作系统和应用程序之间的软件,也有人认为它应该属于操作系统中的一部分。人们在使用中间件时,往往是一组中间件集成在一起,构成一个平台(包括开发平台和运行平台),但在这组中间件中必须要有一个通信中间件,即中间件=平台+通信,这个定义也限定了只有用于分布式系统中才能称为中间件,同时还可以把它与支撑软件和使用软件区分开来。

    举例:

    1. RMI(Remote Method Invocations, 远程调用)
    2. Load Balancing(负载均衡,将访问负荷分散到各个服务器中)
    3. Transparent Fail-over(透明的故障切换)
    4. Clustering(集群,用多个小的服务器代替大型机)
    5. Back-end-Integration(后端集成,用现有的、新开发的系统如何去集成遗留的系统)
    6. Transaction事务(全局/局部)全局事务(分布式事务)局部事务(在同一数据库联接内的事务)
    7. Dynamic Redeployment(动态重新部署,在不停止原系统的情况下,部署新的系统)
    8. System Management(系统管理)
    9. Threading(多线程处理)
    10. Message-oriented Middleware面向消息的中间件(异步的调用编程)
    11. Component Life Cycle(组件的生命周期管理)
    12. Resource pooling(资源池)
    13. Security(安全)
    14. Caching(缓存)

    2. 为什么需要使用消息中间件

    具体地说,中间件屏蔽了底层操作系统的复杂性,使程序开发人员面对一个简单而统一的开发环境,减少程序设计的复杂性,将注意力集中在自己的业务上,不必再为程序在不同系统软件上的移植而重复工作,从而大大减少了技术上的负担,中间件带给应用系统的,不只是开发的简便、开发周期的缩短,也减少了系统的维护、运行和管理的工作量,还减少了计算机总体费用的投入。

    为什么要使用MQ消息中间件?它解决了什么问题?
    https://www.jianshu.com/p/2820561158c4

    3. 中间件特点

    为解决分布异构问题,人们提出了中间件(middleware)的概念。中间件是位于平台(硬件和操作系统)和应用之间的通用服务,如下图所示,这些服务具有标准的程序接口和协议。针对不同的操作系统和硬件平台,它们可以有符合接口和协议规范的多种实现。

    在这里插入图片描述
    也许很难给中间件一个严格的定义,但中间件应具有如下的一些特点:
    (1)满足大量应用的需要
    (2)运行于多种硬件和OS平台
    (3)支持分布计算,提供跨网络、硬件和OS平台的透明性的应用或服务的交互
    (4)支持标准的协议
    (5)支持标准的接口

    由于标准接口对于可移植性和标准协议对于互操作性的重要性,中间件已成为许多标准化工作的主要部分。对于应用软件开发,中间件远比操作系统和网络服务更为重要,中间件提供的程序接口定义了一个相对稳定的高层应用环境,不管底层的计算机硬件和系统软件怎样更新换代,只要将中间件升级更新,并保持中间件对外的接口定义不变,应用软件几乎不需任何修改,从而保护了企业在应用软件开发和维护中的重大投资。

    简单说:中间件有个很大的特点,是脱离于具体设计目标,而具备提供普遍独立功能需求的模块。这使得中间件一定是可替换的。如果一个系统设计中,中间件时不可替代的,不是架构、框架设计有问题,那么就是这个中间件,在别处可能是个中间件,在这个系统内是引擎。

    4. 在项目中什么时候使用中间件技术

    在项目的架构和重构中,使用任何技术和架构的改变我们都需要谨慎斟酌和思考,因为任何技术的融入和变化都可能人员,技术,和成本的增加,中间件的技术一般现在一些互联网公司或者项目中使用比较多,如果你仅仅还只是一个初创公司建议还是使用单体架构,最多加个缓存中间件即可,不要盲目追求新或者所谓的高性能,而追求的背后一定是业务的驱动和项目的驱动,因为一旦追求就意味着你的学习成本,公司的人员结构以及服务器成本,维护和运维的成本都会增加,所以需要谨慎选择和考虑。

    但是作为一个开放人员,一定要有学习中间件技术的能力和思维,否则很容易当项目发展到一个阶段在去掌握估计或者在面试中提及,就会给自己带来不小的困扰,在当今这个时代这些技术也并不是什么新鲜的东西,如果去掌握和挖掘最关键的还是自己花时间和花精力去探讨和研究。

    5. 中间件技术及架构的概述

    知识图谱
    在这里插入图片描述

    6. 什么是消息中间件

    6.1 单体架构

    在实际的项目中,大部分的企业项目开发中,在早起都采用的是单体的架构模式
    在这里插入图片描述
    在企业开发当中,大部分的初期架构都采用的是单体架构的模式进行架构,而这种架构的典型的特点:就是把所有的业务和模块,源代码,静态资源文件等都放在一个工程中,如果其中的一个模块升级或者迭代发生一个很小的变动都会重新编译和重新部署项目。这种这狗存在的问题是:

    1. 耦合度太高
    2. 不易维护
    3. 服务器的成本高
    4. 以及升级架构的复杂度也会增大

    这样就有后续的分布式架构系统。 如下:

    6.2 分布式架构

    在这里插入图片描述
    何谓分布式系统:
    通俗一点:就是一个请求由服务器端的多个服务(服务或者系统)协同处理完成
    和单体架构不同的是,单体架构是一个请求发起 jvm调度线程(确切的是 tomcat线程池)分配线程 Thread来处理请求直到释放,而分布式系统是:一个请求时由多个系统共同来协同完成,jvm和环境都可能是独立。如果生活中的比喻的话,单体架构就像建设一个小房子很快就能够搞定,如果你要建设一个鸟巢或者大型的建筑,你就必须是各个环节的协同和分布,这样目的也是项目发展到后期的时候要去部署和思考的问题。我们也不难看出来:分布式架构系统存在的特点和问题如下:

    存在问题:

    1. 学习成本高,技术栈过多
    2. 运维成本和服务器成本增高
    3. 人员的成本也会增高
    4. 项目的负载度也会上升
    5. 面临的错误和容错性也会成倍增加
    6. 占用的服务器端口和通讯的选择的成本高
    7. 安全性的考虑和因素逼迫可能选择 RMI/MQ相关的服务器端通讯

    好处:

    1. 服务系统的独立,占用的服务器资源减少和占用的硬件成本减少,确切的说是:可以合理的分配服务资源,不造成服务器资源的浪费
    2. 系统的独立维护和部署,耦合度降低,可插拔性
    3. 系统的架构和技术栈的选择可以变的灵活(而不是单纯地选择 java)
    4. 弹性的部署,不会造成平台因部署造成的瘫痪和停服的状态

    6.3 基于消息中间件的分布式系统的架构

    没有加一层解决不了的事情!
    在这里插入图片描述

    从上图中可以看出来,消息中间件的是

    1. 利用可靠的消息传递机制进行系统和系统直接的通讯
    2. 通过提供消息传递消息的派对机制,它可以在分布式系统环境下扩展进程间的通讯

    7. 消息中间件应用的场景

    1. 跨系统数据传递
    2. 高并发的流量削峰
    3. 数据的并发和异步处理
    4. 大数据分析与传递
    5. 分布式事务

    比如你有一个数据要进行迁移或者请求并发过多的时候,比如你有10 W的并发请求下订单,我们可以在这些订单入库之前,我们可以把订单请求堆积到消息队列中,让它稳健可靠的入库和执行

    在这里插入图片描述
    在这里插入图片描述

    8. 常见的消息中间件

    ActiveMQ、RabbitMQ、Kafka、RocketMQ等

    9. 消息中间件的本质及设计

    它是一种接受数据、接受请求、存储数据、发送数据等功能的技术服务

    MQ消息队列:负责数据的传接受,存储和传递,所以性能要高于普通服务和技术
    在这里插入图片描述
    谁来生产消息,存储消息和消费消息呢?
    在这里插入图片描述

    10. 消息中间件的核心组成部分

    1. 消息的协议
    2. 消息的持久化机制
    3. 消息的分发策略
    4. 消息的高可用,高可靠
    5. 消息的容错机制

    11. 小结

    其实不论选择单体架构还是分布式架构都是项目开发的一个阶段,在什么阶段选择合适的架构方式,而不能盲目追求,最后造成的后果和问题都需要自己买单。但作为一个开发人员学习和探讨新的技术使我们每个程序开发者都应该去保持和思考的问题。当我们没办法去改变社会和世界的时候,我们为了生活和生存那就必须要迎合企业和市场的需求,发挥你的价值和所学的才能,创造价值和实现自我。

    展开全文
    Yearingforthefuture 2021-06-21 14:58:34
  • 常用中间件 引言 中间件(middleware)一词每天都被不同的人群所提及,中间件的产品也大量出现在软件市场,但中间件的定义却一直比较模糊,导致中间件的分类也不很统一。也许正因为如此,才使人们不断地设计和开发新...

    常用中间件

    引言

    中间件(middleware)一词每天都被不同的人群所提及,中间件的产品也大量出现在软件市场,但中间件的定义却一直比较模糊,导致中间件的分类也不很统一。也许正因为如此,才使人们不断地设计和开发新的产品,并冠以中间件的标签,推动着中间件的内涵和市场不断地向前发展。

    相信大家看这篇文章的初心就是单纯想了解一下 中间件是啥?能干啥?我为什么要学它?公司中为啥要有做中间件的程序员?我平时学的dubbo等 属于中间件的什么类型?中间件有分类吗?这个答案在网络上一直没有一个准确的回答,这篇文章带你了解 「中间件」

    linux服务器开发高级架构师系统学习视频点击:C/C++Linux服务器开发高级架构师/Linux后台架构师

    关于中间件学习视频资料获取点击:中间件学习资料

    中间件是什么?

    应用中间件(Application Middleware),又名中间件,一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。是连接两个独立应用程序或独立系统的软件。相连接的系统,即使它们具有不同的接口,但通过中间件相互之间仍能交换信息。执行中间件的一个关键途径是信息传递。通过中间件,应用程序可以工作于多平台或OS环境。

    中间件是为应用提供通用服务和功能的软件。数据管理、应用服务、消息传递、身份验证和 API 管理通常都要通过中间件。

    中间件可以帮助开发人员更有效地构建应用。它就如同是应用、数据与用户之间的纽带。

    对于具有多云和容器化环境的企业而言,中间件可以助您大规模、经济高效地开发和运行应用

    中间件能干啥?

    中间件的作用简单来说就是试图通过屏蔽各种复杂的技术细节使技术问题简单化。

    • 中间件屏蔽了底层操作系统的复杂性,使程序开发人员面对一个简单而统一的开发环境,减少程序设计的复杂性,将注意力集中在自己的业务上,不必再为程序在不同系统软件上的移植而重复工作,从而大大减少了技术上的负担。所以说中间件带给应用系统的,不只是开发的简便、开发周期的缩短,同时也减少了系统的维护、运行和管理的工作量,还减少了计算机总体费用的投入。
    • 中间件作为新层次的基础软件,其重要作用是将不同时期、在不同操作系统上开发的应用软件集成起来,彼此像一个天衣无缝的整体协调工作,这是操作系统、数据库管理系统本身做不了的。

    中间件在应用开发中担任的角色

    经过精心设计,现代业务应用可以在本地或跨云端大规模运行。为了构建这些应用,开发人员需要一种具备统一基础功能的应用环境。中间件正是打造这种环境的关键。

    我们可以将这些功能分为四层,外加相应的工具:

    「容器层」

    中间件的这一层将以统一的方式管理应用生命周期的交付。它提供带有 CI/CD 的 DevOps 能力、容器管理功能以及服务网格功能。

    「运行时层」

    该层包含了自定义代码的执行环境。中间件可以为高度分布式云环境(例如微服务)、内存中缓存(用于快速访问数据)和消息传递(用于快速数据传输)提供轻量级运行时和框架。

    「集成层」

    集成中间件可提供相关服务,以通过消息传递、集成和 API 来连接自定义与购买的应用及 SaaS 资产,从而形成功能正常的系统。此外,它还可以提供内存数据库和数据缓存服务、数据/事件流以及 API 管理功能。

    「流程自动化和决策管理层」

    这是开发中间件的最后一层,旨在强化关键智能,实现优化和自动化,以及加强决策管理。

    「工具」

    除了上述四层中间件之外,还有相应的应用开发工具。它允许团队使用预设的模板和容器来构建应用,并促进了有效的代码共享和联合开发。这些工具可在本地和云端提供连贯一致的应用开发和交付体验。

    中间件特点

    1. 应用支撑

    中间件的最终目的是解决上层应用系统的问题,而且也是软件技术发展到今天对应用软件提供最完善彻底的解决方案。现代面向服务的中间件在4个方面形成了很高地应用支撑能力,分别为软件的结构、模型、开发方法以及互操作,而要最终解决软件的灵活应变问题、效率问题、质量问题、互操作问题这四大问题,需要在软件技术的内在结构、架构层面进行思考。

    1. 耦合关系

    中间件基于SOA架构,在松耦和解耦过程中演变成了境界。而传统软件将软件之中核心三部分数据转换、网络连接和业务逻辑所有的都耦合在一个整体,产生为铁板一块的软件,然后动一点而动全身,这样的软件就很难适应市场的需求。而分布式对象技术可以分离连接逻辑,消息中间件异步处理连接逻辑,形成了很大的灵活性。中间件分离分布式对象与消息代理的数据转换。SOA架构以服务的封装,解耦实现了业务逻辑、数据转换与网络连接等。

    1. 互操作性

    传统中间件在软件的互操作方面,通过标准化的API完成了同类系统之间的调用互操作,但是连接互操作离不开原有的特定的访问协议,比如CORBA用于的IIOP,JAVA用于的RMI等。而SOA以支持Internet、标准化及操作系统无关的SOAP协议完成了连接互操作。并且服务的封装一般使用XML协议,它有自定义及自解析的特性,因此基于SOA的中间件能够完成语义互操作。

    1. 软件复用

    软件复用也称为软件的重用,是指在一定范围内不修改或者略有修改都属于重复使用。其实说白了其意思就是不断提升抽象级别,然后扩展复用的范围。最早使用的复用技术一般是子程序,自从发明子程序之后,人们就可以在不同系统之间进行软件复用。但子程序只是最原始的复用,因为这种复用范围只是在一个可执行程序内中的复用,静态开发期的复用,一旦子程序被修改,那么就需要重新对所有调用这个子程序的程序进行编译、测试以及发布。

    1. 平台化

    我们所说的平台是指能够独立运行并且自主存在的,能支撑上层系统和应用提供运行所依赖的环境。显然,不是所有的系统或者应用都可以称之为平台的。中间件是一个平台,因此中间件是必须独立存在,它在操作的系统软件,为上层的网络应用系统提供一个运行支撑环境,同时围绕标准的接口与API来隔离系统,完成其独立,也就是平台性。总的来说,中间件在完整业务复用、灵活业务组织方面的发展趋势集中体现在服务化,其核心技术是提升IT基础设施的业务敏捷性。中间件因此将成为SOA的主要实现平台。

    中间件的分类

    从广义上讲,中间件涵盖了从 Web 服务器,到身份验证系统,再到消息传递工具等一切内容。以下是现代化开发中一些常见的中间件用例。 红帽官网的这几张图完美解决了这个疑惑:

    看到这里应该就可以解决大家的大多数问题了,下面就是在百度百科上找的分类,我个人感觉写的大同小异!!!

    目前,针对不同的应用涌现出各具特色的中间件产品。从不同的角度和层次对中间件有不同的分类。根据中间件在系统中所起的作用和采用的技术不同,可以把中间件大致划分为以下几种:

    1. 数据访问中间件(Data Access Middieware)

    在分布式系统中,重要的数据都集中存放在数据服务器中,它们可以是关系型、复合文档型、具有各种存放格式的多媒体型,或者是经过加密或压缩存放的,数据访问中间件是在这种系统中建立数据应用资源互操作的模式,实现异构环境下的数据库联接或文件系统联接的中间件,从而为在网络上虚拟缓冲存取、格式转换、解压等带来方便。数据访问中间件在所有的中间件中是应用最广泛、技术最成熟的一种。一个最典型的例子就是ODBC,ODBC是一种基于数据库的中间件标准,它允许应用程序和本地或者异地的数据库进行通信,并提供了一系列的应用程序接口API,当然,在多数情况下这些API都是隐藏在开发工具中,不被程序员直接使用。不过在数据访问中间件处理模型中,数据库是信息存贮的核心单元,中间件完成通信的功能,这种方式虽然是灵活的,但是并不适合于一些要求高性能处理的场合,因为它需要大量的数据通信,而且当网络发生故障时,系统将不能正常工作。

    2.远程过程调用中间件(RPC)

    远程过程调用是另外一种形式的中间件,它在客户/服务器计算方面,比数据库中间件又迈进了一步。通过这种远程过程调用机制,程序员编写客户方的应用,需要时可以调用位于远端服务器上的过程。它的工作方式如下:当一个应用程序A需要与远程的另一个应用程序B交换信息或要求B提供协助时,A在本地产生一个请求,通过通讯链路通知B接收信息或提供相应的服务,B完成相关处理后将信息或结果返回给A。RPC的灵活特性使得它有比数据库中间件更广泛的应用,它可以应用在更复杂的客户/服务器计算环境中。远程过程调用的灵活性还体现在它的跨平台性方面,它不仅可以调用远端的子程序,而且这种调用是可以跨不同操作系统平台的,而程序员在编程时并不需要考虑这些细节。RPC也有一些缺点,主要是因为RPC一般用于应用程序之间的通信,而且采用的是同步通信方式,因此对于比较小型的简单应用还是比较适合的,因为这些应用通常不要求异步通信方式。但是对于一些大型的应用,这种方式就不是很适合了,因为此时程序员需要考虑网络或者系统故障,处理并发操作、缓冲、流量控制以及进程同步等一系列复杂问题。

    3.面向消息中间件(MOM)

    消息中间件能在不同平台之间通信,实现分布式系统中可靠的、高效的、实时的跨平台数据传输,它常被用来屏蔽掉各种平台及协议之间的特性,实现应用程序之间的协同;其优点在于能够在客户和服务器之间提供同步和异步的连接,并且在任何时刻都可以将消息进行传送或者存储转发,这也是它比远程过程调用更进一步的原因。另外消息中间件不会占用大量的网络带宽,可以跟踪事务,并且通过将事务存储到磁盘上实现网络故障时系统的恢复。当然和远程过程调用相比,消息中间件不支持程序控制的传递。消息中间件适用于需要在多个进程之间进行可靠的数据传送的分布式环境。它是中间件中唯一不可缺少的,也是销售额最大的中间件产品,目前在Windows2000操作系统中已包含了其部分功能。

    4.面向对象的中间件

    面向对象的中间件(Object Oriented Middieware)。当前开发大型应用软件通常采用基于组件技术,在分布系统中,还需要集成各节点上的不同系统平台上的组件或新老版本的组件;组件的含义通常指的是一组对象的集成,其种类有数百万种,但这些组件面临着缺乏标准而不能相互操作,各厂家的组件只能在各自的平台上运行。为此,连接这些组件环境的面向对象的中间件便应运而生。面向对象的中间件是对象技术和分布式计算发展的产物,它提供一种通讯机制,透明地在异构的分布计算环境中传递对象请求,而这些对象可以位于本地或者远程机器。在这些面向对象的中间件中,功能最强的是CORBA,可以跨任意平台,但是太庞大;JavaBeans较灵活简单,很适合于作浏览器,但运行效率差;DCOM模型主要适合Windows平台,已广泛使用。但是DCOM和CORBA这两种标准相互竞争,而且两者之间有很大的区别,这在一定程度上阻碍了面向对象中间件的标准化进程。当前国内新建系统实际上主要是UNIX(包括LINUX)和Windows,因此针对这两个平台建立标准的面向对象中间件是很有必要的。

    5.事务处理中间件(TPM)

    事务处理中间件是在分布、异构环境下提供保证交易完整性和数据完整性的一种环境平台;它是针对复杂环境下分布式应用的速度和可靠性要求而实现的。它给程序员提供了一个事务处理的API,程序员可以使用这个程序接口编写高速而且可靠的分布式应用程序——基于事务处理的应用程序。事务处理中间件向用户提供一系列的服务,如应用管理、管理控制、已经应用于程序间的消息传递等。常见的功能包括全局事务协调、事务的分布式两段提交(准备阶段和完成阶段)、资源管理器支持、故障恢复、高可靠性、网络负载平衡等等。

    6.网络中间件

    它包括网管、接入、网络测试、虚拟社区、虚拟缓冲等,也是当前研究的热点。 终端仿真/屏幕转换中间件 它的作用在于实现客户机图形用户接口与已有的字符接口方式的服务器应用程序之间的互操作。

    展开全文
    Linuxhus 2021-07-14 16:24:39
  • 一、前言 在互联网应用开发初期,所有用于支撑系统建设的,框架结构、基础工具、业务逻辑、功能服务包括页面展示等,都是在一个系统中开发完成,最终也只是把系统和数据库部署在...在中间件这一层的建设,基本是来自.

     一、前言

    在互联网应用开发初期,所有用于支撑系统建设的,框架结构、基础工具、业务逻辑、功能服务包括页面展示等,都是在一个系统中开发完成,最终也只是把系统和数据库部署在同一台服务器上。

    但随着互联网应用的发展,业务体量逐渐增大,那么原有的系统搭建就很难支撑起现有的业务体量。因此开始陆续出现应用与数据库分离、Nginx 反向代理、缓存组件、分组部署、RPC 分布式应用、网关服务、监控系统等等。

    在这些系统的架构的演进过程中,不断的出现各类支撑起服务建设升级的系统和中间件。在中间件这一层的建设,基本是来自于业务系统中非业务逻辑的通用性核心功能抽离出来的,而逐步形成各类中间件服务。

    中间件:是介于操作系统和应用软件之间,为应用软件提供服务功能的软件,有消息中间件,通信中间件,应用服务器等。由于介于两种软件之间,所以,称为中间件。

    二、中间件的起源

    最早具有中间件技术思想以及功能实现的软件是 IBM 的 CICS,但由于 CICS 不是分布式环境下的产品,因此大家一般把 Tuxedo 作为第一个严格意义上的中间件。

    Tuxedo 是1984年在当时属于AT&T的贝尔实验室开发完成,但由于分布式处理当时并没有在商业应用上获得像今天一样的成功,Tuxedo 在很长一段时期里只是实验室的产品,后来被 Novell 收购,在经过 Novell 并不成功的商业推广后,1995年被现在的 BEA 公司收购。

    尽管中间件的概念很早就已经产生,但中间件技术的广泛运用却是在最近10年之中。BEA 公司1995年成立后收购 Tuxedo 才成为一个真正的中间件厂商,IBM 的中间件 MQSeries 也是20世纪90年代的产品,其他许多中间件产品也都是最近几年才成熟起来的。

    三、为什么使用中间件

    使用中间件来自于中间件本身的价值能力,具体的说中间件屏蔽了底层操作系统的复杂性,让开发工程师可以把更多的专注力放在业务系统的逻辑和流程实现上,让开发人员面对的是一个简单、单一、统一的开发环境,减少程序设计因底层差异而导致的复杂度。

    中间件最终带给系统的是交付质量和交付能力的提升,它的存在不只是让开发简单、周期短,更主要的是减少了系统上线后的不稳性和运维成本以及管理的工作量,同时还减少了服务资源的投入。

    四、中间件的分类

    其实中间件的分类有很多中,这可能也是让大家在平常的开发中迷惑,到底哪些是中间件。一些基本的中间件定义很好定位,比如MQ、RPC、Dapper等等,但有些软件服务虽然不是作为中间件开发出来的,但它们如果符合中间件的定义,也可以归纳到中间的范畴里。

    按照 IDC 的分类方法,中间件可以分为六类:

    1. 终端仿真/屏幕转换中间件

    此类中间件用以实现客户机端的图形用户接口与现有的服务器端字符接口方式的应用程序之间的互操作。例如;中继器、IO板卡、PLC等作为控制层进行高级语言与展示层的交互。

    1. 数据访问中间件

    JDBC、ODBC,此类中间件适用于应用程序与各类数据源的通信操作,以便于直接访问和更新基于服务器的数据源,数据源可以是关系型、非关系型以及对象型,大概你可以想到的是 Mysql、Oracle、Redis 或者 Elasticsearch 等,使用此类中间件可以更好的简化应用系统的开发。

    1. 远程过程调用中间件

    RPC,是最早的分布式应用系统采用的一种同步请求与应答协议,RPC 扩展了过程开发中的“功能调用和结果返回”机制,使得它可以适应于远程环境调用和分布式部署。

    1. 消息中间件

    kafka、ActiveMQ、RabbitMQ,现在的分布式系统构建中都离不开 RPC 与 MQ,系统架构设计中使用消息中间件把应用扩展到不同的操作系统和不同的网络环境中,基于消息事件驱动机制处理业务逻辑的解耦和消峰。

    1. 交易中间件

    此类中间件是一种针对联机交易处理系统而设计的中间件,其实很多业务发起的中间件都属于此类。交易中间件就相当于一组程序模块,使用它可以大大的减少开发一个交易系统所需要的编程工作量。

    1. 对象中间件

    对于这样的中间件分类也可以理解为是从业务系统中抽离出具有通用性通用功能的核心逻辑,面向对象的技术基本是 Java 语言的最大目标,通过封装、继承、多态,提供良好的代码重用性。

    五、你为什么要懂中间件开发

    说到底你只面向工作学习吗?

    如果说编程只是单纯的承接产品需求开发系统功能,那么基本可以把程序开发过程,简单理解为按照需求PRD,定义属性创建方法调用展示,这三个步骤。

    尤其是在一些大公司中,会有易用的、完善的、标准的架构体系和运维服务,例如:RPC、MQ、Redis集群、分布式任务、配置中心、分库分表组件、网关等搭配出来的系统架构。也因此让程序员做到只关心业务功能开发

    但让程序员只关心业务开发,有成熟的系统架构、有标准的开发流程、有通用的功能设计,对于团队效能提升来说是非常好的事。可一部分程序员正因为有这样的好事,日复一日的岁月做着同样的事,最后成为工具人。

    如果是框架和中间件的存在,是了让程序员只关心业务开发。 那为什么你面试的时候会被问到核心组件的设计和原理呢? 在这个年代,别放弃学习以及深度学习是你几乎唯一的生存途径。所以你要多去拓展学习一些更核心的技术,让自己成为那个最贵的程序员!

    展开全文
    song_hai_lei 2021-11-19 18:26:29
  • weixin_44027035 2021-01-06 18:03:09
  • qq_33163046 2021-01-29 08:55:38
  • weixin_42445727 2021-10-22 15:21:26
  • m0_52544877 2021-10-17 20:50:00
  • u022812849 2021-06-15 21:12:18
  • luolan_hust 2021-02-06 14:31:00
  • weixin_44124323 2021-11-12 07:52:35
  • Gf19991225 2021-10-16 19:21:48
  • qq_25792143 2021-10-16 12:18:48
  • weixin_29461699 2021-03-01 07:23:06
  • qq_58268157 2021-10-18 00:02:08
  • huyinghao03 2021-06-15 18:07:29
  • itxiaoyu_lang 2021-06-15 23:53:32
  • qq_58281447 2021-10-17 19:32:54
  • u012702547 2021-12-13 17:08:53
  • qq_43803285 2021-03-19 22:39:18
  • qq_52358808 2021-08-22 02:00:54
  • qq_60387497 2021-11-19 12:43:32
  • weixin_46115601 2021-10-17 20:55:38
  • m0_56305656 2021-10-18 09:02:37
  • guo2312668 2021-11-15 16:50:45
  • l529936997 2021-07-30 11:33:13
  • weixin_32821477 2021-01-27 21:40:53
  • weixin_35367646 2021-03-14 14:14:09
  • qq_42773863 2021-11-22 21:15:42

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 104,532
精华内容 41,812
关键字:

中间件标准