| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> 通俗易懂的讲讲什么是中间件? -> 正文阅读 |
|
[Java知识库]通俗易懂的讲讲什么是中间件? |
一、中间件简介我国企业从20世纪80年代开始就逐渐进行信息化建设,由于方法和体系的不成熟,以及企业业务和市场需求的不断变化,—个企业可能同时运行着多个不同的业务系统,这些系统可能基于不同的操作系统、不同的数据库、异构的网络环境。现在的问题是,如何把这些信息系统结合成一个有机地协同工作的整体,真正实现企业跨平台、分布式应用。 中间件便是解决之道,它用自己的复杂换取了企业应用的简单,接下来我们来了解一下什么是中间件? 1.1、什么是中间件
中间件的概念听起来高大上,但其实我们平时都在使用,例如 此外,中间件的第二个关键点是平台,平台就是用不同语言开发的应用程序,它们通过遵循某种协议和规范就能和底层操作系统硬件打交道来实现跨平台的效果,这就是中间件。 中间件为了解决这些通信和平台这两大问题采用了很多协议/技术/方法论,如下所述:
1.2、为什么要使用中间件1?? 屏蔽了底层操作系统的复杂性 中间件技术首先能屏蔽底层操作系统的复杂性,如上图左半部分所示,我们对数据进行增删改查并不需要与底层操作系统的硬盘等各种指令打交道,我们只需要知道MySQL怎么使用,与MySQL进行交互即可,不需要管它是怎么进行存储和互联互通的。但是中间件的开发者就必须了解各种协议以及底层如何与操作系统的各种硬件进行交互的。 2?? 屏蔽技术架构的复杂性 第二,中间件技术可以屏蔽技术架构的复杂性,以前单体架构所有服务都集中在一起用一种语言进行开发,但如今分布式架构下每一个微服务都可以采用不同的语言不同的技术栈,使用中间件就可以将不通的服务来连接互通起来,将不同技术架构的服务串联起来,来达到一个更加稳健、缩短开发周期维护成本低目的。 中间件屏蔽了底层操作系统的复杂性,使程序开发人员面对一个简单而统一的开发环境,减少程序设计的复杂性,将注意力集中在自己的业务上,不必再为程序在不同系统软件上的移至而重复工作,从而大大减少了技术上的负担。中间件带给系统的,不只是开发的便捷,开发周期的缩短,也减少了系统的维护、运行和管理的工作量,还减少了计算机总体费用的投入。 1.3、中间件特点为解决分布异构问题,人们提出了 如今的开发都采用的分布式架构,就是将一个系统拆分为若干份,比如一个淘宝app可能分为订单系统、用户系统、支付系统等等,订单系统可能采用Java开发、用户系统采用Go开发、支付系统采用Python开发,这些系统之间如何进行互联互通的呢?一个项目从单体架构拆分成微服务架构要解决的第一个问题就是选择什么样的中间件技术来处理不同服务间的通讯问题,中间件为了解决通信的方式有很多种,比如RMI协议,典型的socket通信、dubbo采用的协议都遵循了RMI协议。不仅如此,中间件还需具备高可用的功能,因为每个微服务往往都采用集群的方式部署,比如订单系统将数据通过中间件发送给支付系统,中间件就一定要保证数据的不丢失且高效送达。此外,还需具备持久性,也就是数据可以存盘用于备份。这些都是中间件技术必须解决的问题。 我们常用的 MQ、Redis、Nginx 等中间件都是都具备了中间件的通讯、高可用、高可拓展、持久化等特性,没有具备的话也会通过技术来补充,比如 MySQL 本身不具备高可用性,于是出现了 Mycat、ShardingJDBC 等技术。 综上所述,中间件的特点可以概括为以下几点:
由于标准接口对于可移植性和标准协议对于互操作性的重要性,中间件已经成为许多标准化工作的主要部分。对于应用软件开发,中间件远比操作系统和网络服务更为重要,中间件提供的程序接口定义了一个相对稳定的高层应用环境,不管底层的计算机硬件和系统软件怎么更新换代,只要将中间件升级更新,并保持中间件对外的接口定义不变,应用软件几乎不需要修改,从而保护了企业在应用软件开发和维护中的重大投资。
1.4、什么时候使用中间件技术在项目的架构和重构中,使用任何技术和架构的改变我们都需要谨慎斟酌和思考,因为任何技术的融λ和变化都可能人员、技术和成本的增加,中间件的技术般现在些互联网公司或者项目中使用比较多,如果你仅仅还只是一个初创司建议还是使用单体架构,最多加个缓存中间件即可,不要盲目迫求新或者所谓的高性能,而追求的背后一定是业务的驱动和项目的驱动,因为一旦追求就意味着你的学习成本,公司的人员结构以及服务器成本,维护和运维的成本都会加,所以需要谨忪择和考虑。 1.5、常用中间件技术这里将常用中间件分为了四类: 对于分布式中间件,常用的有以下四个:
对于负载均衡中间件,常见的有 对于缓存中间件,一定要遵循 tcp/ip 协议,常见的有 对于数据库中间件,我们知道 MySQL 本身是具有持久化功能但是不具有高可用性的,也就是没有集群。因此要实现 MySQL 的集群/分库分表的话就必须要使用第三方的中间件例如 以上技术都能很好的帮我们解决项目中的一些场景,比如异步数据的保存可以达到削峰的目的,因为异步可以实现从串行到并行,以及消息分发、分布式事务、消息容错等等场景… 1.6、中间件架构演变1?? 单体架构
典型特点:把所有的业务和模块,源代码,静态资源文件等都放在一个工程中,如果其中的一个模块升级或者迭代发生一个很小的变动都会重新编译和部署项目。比如可能其中一个小错误就需要重新打包重新编译重新部署,如果服务个数太多,就需要重新发布很多次。 存在问题:
2?? 分布式系统
典型特点:一个请求由服务器端的多个服务(服务或系统)协同处理完成 存在问题:
好处:
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 2:09:41- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |