什么是中间件,什么是中间件,它有什么作用?
InfoQ将在20X11月举办“DIVE全球基础软件创新大会”,聚焦基础软件领域。
2013 年,“棱镜门”事件的爆发让很多人意识到做国产基础软件的重要性。Wannacry 恶意软件、Windows 系统漏洞引起的网络攻击等不断发生的信息安全事件,近两年愈演愈烈的“断供”事件,从芯片、安卓系统到电子设计自动化(EAD)软件、MATLAB 等,时刻提醒建设自主信息技术产业X的重要性。
“缺芯少魂”(芯指芯片,魂指操作系统)这一词让不少非IT人士认识到芯片与操作系统的重要性。
但IT 产业本质上是“解决方案为王”的产业。不仅需要掌握核心技术,更需要形成一个生态X。
根据中国电子学会和众诚智库联合发布的《中国信创产业发展白皮书(2021)》,IT产业生态X庞大,芯片、整机、操作系统、数据库、中间件是最重要的产业链环节。
IT产业生态全景图
据开源中国消息,20X9月8日,字节跳动正式宣布开源CloudWeGo。这是一套以 Go 语言为核心、专注于微服务通信与治理的中间件集合。
时间再往前些,2019年9月12日,腾讯在ApacheCon宣布TubeMQ 开源。TubeMQ是腾讯在2013年自研的分布式消息中间件系统,专注服务大数据场景下海量数据的高性能存储和传输,目前日均接入量超过25万亿条,并服务于微信支付、腾讯视频、腾讯广告等产品。
中间件在字节跳动、X、腾讯等大厂内部发挥着重要的作用。
1
中间件(Middleware)是什么?
在 IT 领 域,中间件与操作系统、数据库号称基础软件的“三驾马车”,在信息系统中肩负着“承上启下”的重任。
中间件一般是指网络环境下处于操作系统、数据库等系统软件和应用之间,一种起连接作用的分布式软件,主要用于解决异构网络环境下分布式应用的互联与互操作问题,可提供标准接口、协议,屏蔽实现细节,提高应用系统易移植性。
简单来说,中间件是网络环境中运行于操作系统与应用软件之间,可以简化应用软件的复杂性、克服网络环境多种挑战的一类系统软件,减少应用开发者需要面对的复杂性,其定位示意如图2。
中间件的定位示意
中间件的产生可以说是技术发展和分工细化的产物(如图3)。中间件作为一种通用的软件,其诞生是为了满足多机远程调用的需求,主要作用是屏蔽底层系统和通信的异构性,进而支撑应用实现稳定、可靠和高并发运行,并简化应用的开发流程。随着计算机技术的快速发展,越来越多的应用需要支持不同厂商生产的软硬件、不同的网络平台和环境,以及不同的网络协议。应用在兼容不同操作系统等软硬件环境的过程中往往存在技术实现难度大和实现成本高等问题,一些企业和组织专门研发出解决此类问题的软件,这就是中间件。
中间件的产生
中间件的作用不小,可以屏蔽底层运行环境带来的差异性,在异构平台间稳定运行;能够提高开发效率,开发周期缩短25%~50%;让软件层次明晰,可插拔方式对接,保障软件质量;节省系统资源,降低运行成本。
中间件是一类软件而不是一种软件。中间件大致分为基础中间件、集成中间件、行业领域中间件和新型中间件等。
基础中间件最成熟,通用性最好,又可以细分为应用服务器、消息中间件、事务处理中间件等。
集成中间件包括企业服务总线中间件、数据处理及交换类中间件、通用文件传输类中间件等,主要用于不同业务系统之间的集成整合,通用性略差。
行业领域中间件是针对某个行业的应用而开发的,通用性一般。
新型中间件是随着新兴技术的发展而产生的,其具体分类、定义也随着技术的发展而变化。
行业领域中间件与客户应用非常贴近,有明显的行业特点或应用特色,非常难从理论上给出一个比较明确、标准的定义。反观基础中间件,基本不会带有行业或应用特点。
目前国内中间件市场份额第一梯队仍然是 IBM 和 Oracle。第二梯队为五大国产厂商,包括东方通、普元信息、宝兰德、中创中间件、金蝶天燕。但有理由相信,中间件国产厂商的未来市场潜力空间巨大。
2
国产中间件龙头企业东方通
东方通成立于 1997 年,是国内首家在 A 股上市的基础软件厂商。东方通连续 12 年被认定为“国家规划布局内重点软件企业”,承担多项国家重大科技专项的研制任务,是 2018 年北京软件和信息服务业综合实力百强企业,是中华人民共和国X部、X国有资产监督管理委员会(简称国资委)认证的“企业信用评价 AAA 级信用企业”,曾荣获国家科技进步二等奖、 北京市科学技术进步奖二等奖等多项荣誉。经过多年努力,东方通研发出了 TONG 系列中间件软件,包括基础类、数据集成类、云计算类等多种产品,广泛应用于国内数千个行业业务。
应用服务器是现在使用最广的中间件软件,东方通应用服务器软件TongWeb是东方通自主研发的遵循Java EE规范的企业级产品,应用遍及各行各业,产品成熟稳定,具备满足行业核心业务需求的能力,目前在党政领域已经实现了规模化应用,在金融、电信、交通等行业亦有大量应用案例。
随着TongWeb的推广使用,用户希望能快速学习该软件的操作及运维知识,对软件有更全面、更X化的掌握。借此,东方通组织编写了国内中间件的第一本教程《TongWeb中间件实用教程》。
《TongWeb中间件实用教程》
内容简介:
东方通是国内的中间件开发商,国内诸多商用的中间件诞生在东方通。TongWeb应用服务器作为东方通的主打产品,为各行各业的应用业务系统提供更可靠、更稳定的基础应用中间件支撑环境。本书首先讲解中间件的基础知识,然后重点讲解TongWeb中间件的使用与常用功能,包括TongWeb应用管理、Web容器的使用、EJB容器的使用、常用服务及配置、安全加固和集X管理;最后是运行维护的知识与应用,主要讲解了监控接口、性能监控工具、故障诊断和性能调优。本书适合初中级软件工程师、运维工程师阅读参考,以及对中间件技术感兴趣的在校学生均可参考。
本书也获得了领域内专家的联袂推荐。
本书主要具有以下3个特色:
内容系统全面。TongWeb属于基础软件,具有一定的技术门槛,本书内容系统全面,首先对中间件基础知识和了解TongWeb需要掌握的技术知识进行了介绍,有利于读者查缺补漏,从而顺利进行后续章节的学习;对于TongWeb的使用,详细介绍了安装、常用功能以及性能调优、故障分析等运维操作,可满足用户日常使用中的大部分需求。
注重实操、易于上手。本书全面模拟TongWeb的真实运行环境,详细介绍每一项功能。用户在使用TongWeb过程中遇到问题时,查找相关章节便可快速解决,能够学以致用。在操作步骤的讲解中,配有相应的界面截图和文字说明,这种图文并茂的呈现方式更方便读者快速上手。
注重工程实践。本书编撰人员大部分来自一线,而写作素材源自实际工程项目。本书基于案例实践经验,总结提炼了TongWeb日常使用过程中的配置建议、常见问题、注意事项、解决办法等,并将这些内容融入各项操作的文字讲解中,更贴近用户需求,希望对用户的实际工作有所裨益。
本书可作为业内相关企业以及软件工程师与运维工程师学习TongWeb的参考书;同时,也适合科研院所、高等职业院校中有志于国产应用服务器中间件推广应用的技术人员或学生阅读。
参考资料:
https://www.eet-china.com/mp/a76827.html
https://xie.infoq.cn/article/f1cbe945c07dce1c50773b2ec
东方通官网
东方通会议演讲
https://zhuanlan.zhihu.com/p/248293582
以上内容就是小编分享的关于什么是中间件?常见中间件有哪些?.jpg”/>
网友提问:
什么是中间件,什么是中间件?常见中间件有哪些??
数据库中间件是什么?
优质回答:
我从早期的amoeba读写分离,druid,tddl分库分表,现在在使用公司自己的数据库组件!也来交流下数据库中间件!
数据库中间件可以说是分布式,高并发系统架构中一定会用的!
一般来说,一个复杂系统里面会有消息中间件(生产者和消费者之间通信的),数据库中间件(服务与数据库之间通信的),服务中间件(连接多个服务的)等等!
何为中间件?就是连接两个系统并做特殊处理的组件!
何为数据库中间件?业务应用系统通过数据库中间件对数据库进行操作(增删改查,分库分表,读写分离,性能监控等)的组件!
中间件特点:就是对解耦的两个系统进行通信,互相解耦,中间件具备扩展性,可替换性!同时集中式的管理,监控!提供高可用性,大容量,高并发的解决方式!
数据库中间件的分类:
没有严格分类,根据功能可以分为:
1,读写分离,分库分表这种跟业务息息相关的中间件!
2,数据库之间进行同步和迁移的中间件
3,增量消费数据的中间件!
数据库中间件有哪些产品呢?
分库分表组件:Cobar,mycat,tddl,DDB,Sharding-jdbc!
增量消费组件:cаnal,Erosa!
同步和迁移数据组件:Otter,DRC,DataX!
伴随着大容量,高并发的分布式系统的变迁,中间件技术也日益发展,但是不同的中间件都是开发公司为了满足自身业务需要进行开发的组件,所以选择中间件的时候一定要酌情处理,必要时需要自己定向开发中间件!
我们公司就用了自己开发的dmds数据库中间件!满足自己的业务需要!
有需要了解数据库中间件怎么玩的朋友,可以私聊我,咱们一块交流,我知无不答!
其他网友观点
谢邀~
关于数据库中间件,我谈谈自己的见解,并介绍一下常见的数据库中间件。
中间件是什么
首先看看中间件的定义:和业务无关的的技术类组件。这种解释还是稍微有些抽象,下面我举个例子:
我辞职去卖羊肉串(业务端),联系了很多养殖场(底层),为了羊肉的质量和降低成本,我得一家一家地去考察、谈判、比价,然后选一个羊肉供货商合作。经营了一段时间,这个卖羊肉的涨价了,或者提供的羊肉质量没原来好了,那么我就重新考察、谈判、比价,如此反复,我会浪费大量的时间和经历。
于是我找了个信得过的X公司(中间件),约定好羊肉的质量规格,谈好价钱,以后我只找X拿货,具体X找哪个养殖场合作,挣多少差价,我不管。
所以中间件的作用是:让业务端和底层解耦,屏蔽底层困难的逻辑,提供更简单的服务,让业务端的开发更简单。
数据库中间件
再来看看什么是数据库中间件。
在这里,数据库就是底层,我们写的程序就是业务端,数据库中间件就是(和业务无关)的可以实现数据库一些功能的组件。还是有些抽象,那么看看常见的数据库组件有哪些吧。
分库分表(分布式):当数据量大的时候,单台数据库已经不足以支撑我们的业务量,所以会采用分库分表的策略。现在支持分库分表的组件有很多,例如MyCat、MySQL-Proxy、Atlas(360)、Cobar(X)、TDDL(淘宝,新名字DRDS)。
数据库同步:顾名思义,是对数据库进行同步的;Otter(X),基于数据库增量日志解析,准实时同步数据,支持两个库都可以写入,写入的数据同步到另外的库。
数据库迁移:这个主要用于不同类型数据库的迁移;yugong(X),支持Oracle到Mysql的迁移。
数据增量订阅与消费:这个是对数据库增量日志解析,提供增量数据订阅和消费;cаnal(X)。
听过了这些数据库中间件的介绍,是不是理解起来更深刻了。
比如分库分表的中间件,如果自己实现的话,就需要连接多个数据源(或多个表),执行一次查询,每个数据源都需要调用一次,查询回来的数据还需要自己处理;
如果有了中间件做这些工作,我们的开发会更加的简单。
我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。
其他网友观点
面向数据库的中间件是促进与数据库通信的中间件,无论是来自应用程序还是数据库之间。 开发人员通常使用面向数据库的中间件作为从本地或远程数据库提取信息的机制。 例如,为了从Oracle数据库提取信息,开发人员可以调用面向数据库的中间件来登录到数据库,请求信息并处理从数据库中提取的信息。
尽管CLI是跨越多种数据库的通用API,通过定义良好的通用接口提供对任意数量的数据库的访问,但它们通常被发现可用于关系数据库。 Microsoft ODBC就是这种情况。 ODBC公开一个接口以便于访问数据库。 然后使用驱动程序来适应数据库之间的差异。 ODBC还提供对同一接口的同时多个数据库访问 – 在ODBCX结构中,驱动程序管理器可以加载和卸载驱动程序以促进不同数据库(例如Oracle,Informix和DB2)之间的通信。
JavaSoft的Java数据库连接(JDBC)是CLI的另一个例子。 JDBC是一种接口标准,它使用一组Java方法来方便访问多个数据库。 JDBC非常像ODBC,可以从任何Java应用程序访问任意数量的数据库:applet,servlet,JSP,EJB或独立应用程序。 Microsoft数据库中间件的未来由其OLE DB表示。 OLE DB提供了一种标准机制来访问任意数量的资源(包括数据库,Excel电子表格和平面文件)作为标准对象(例如COM对象)。 OLE DB提供了一个对象框架来检索结果集,然后在内存中导航和操作结果集。 OLE DB依靠OLE Transactions事务管理框架来确保ACID属性(原子性,一致性,隔离性和持久性)
本地数据库中间件不是使用单个多数据库API,而是仅使用本机机制来访问特定数据库的功能。 这种限制 – 仅与一种类型的数据库进行通信 – 是本地数据库中间件的主要缺点。 其优点包括提高了性能并可以访问特定类型数据库的所有功能。
其他网友观点
分库分表使用的中间应用
其他网友观点
我的理解是:类似一种数据库操作X,虽然我只用过mycat!
越来越多的数据,让我们不得不进行分库分表!
然而,我们自己手动一个个建表,维护表结构是非常麻烦的!
mycat的方案就是:我们自己有一张原始的数据库大表,mycat通过我们设置的配置文件,就能帮我们快速的进行分表分库,从而减少了数据库管理的成本!