企业服务总线ESB有什么作用?和微服务有什么区别?会如何发展?
企业服务总线ESB是什么
下面这张图,稍微了解些IT集成的朋友应该不陌生。
随着信息化发展不断深入,企业在不同的阶段引入了不同的应用、系统和软件。这些原始的应用系统互不连通,如同一根根独立的烟囱。
但是企业业务是流程化的,这就需要业务数据如流水般在不同系统间流转。在企业信息化早期,为了实现业务数据流转,一般采用点对点的开发方式,就好比在两根烟囱间架起了一根管道。随着业务数据流转越来越频繁,越来越广泛,“烟囱”上的孔眼越来越密集,有进气管、有出气管,错综复杂,难以梳理,也就难免会有“乌烟瘴气”,维护人员“灰头土脸”的时刻。
传统ESB的核心功能在于,通过各种不同的协议适配,将不同平台的异构服务接入到ESB,转换成消息流,再通过各种处理发送到指定的目的地,就好比是一条横亘于所有烟囱的管道。因而其全称为企业服务总线(ESB,Enterprise Service Bus),也就不难理解了。
ESB的优势如下:
-
可靠性:由于调试小型服务要比调试大量代码更加容易,因此ESB生成的应用更加可靠。
-
效率:ESB采用了可配置的方式,用户不需要写大量的代码,通过ESB即可完成数据流的整合。
-
准确性:写代码维护涉及的操作较多,一旦其中某个点出错就会造成错误,ESB通过可配置的方式,所有的操作都与ESB的产品相关,用户只需要选择配置即可,避免了很多不必要的错误。
-
可扩展性:由于SOA允许服务跨多种服务、平台和编程语言运行,因此极大地提高了可扩展性。
-
节约成本:通过更高的敏捷性和更有效的开发来降低成本。
ESB的作用
企业服务总线是一种实现系统间集成和互联互通的重要技术架构,可以理解为是一种消息和服务集成的中间件平台。ESB是传统中间件技术与XML、Web服务等技术结合的产物。ESB提供了网络中最基本的连接中枢,是构筑企业数据系统的必要元素。
面向服务的体系结构已经逐渐成为IT集成的主流技术。面向服务的体系结构(service-oriented architecture,SOA)是一种软件系统设计方法,通过已经发布的和可发现的接口为终端用户应用程序或其它服务提供服务。
企业服务总线(EnterpriseServiceBus,ESB)是构建基于面向服务体系结构(SOA)解决方案时所使用基础架构的关键部分,是由中间件技术实现并支持SOA的一组基础架构功能。
作为SOA基础架构的关键部分,ESB的功能主要体现在通信、服务交互、应用集成、服务质量、安全性以及管理和监控等方面。
具体来说,ESB的作用以下方面:
-
提供连接企业内部及跨企业间新的和现有软件应用程序,以丰富的功能启用管理和监控应用程序之间的交互。
-
在SOA分层模型中,ESB用于组件层以及服务层之间,它能够通过多种通信协议连接并集成不同平台上的组件将其映射成服务层的服务。
-
在通信方面,ESB能够支持消息路由/寻址,支持多种通信技术、通信协议(如JMS、HTTP),支持发布/订阅的通信模式,能够处理请求/响应、同步以及异步的消息传递方式,并且要求以可靠的方式传递消息。
-
ESB的重要功能就是集成不同的系统,必须能够支持多种接入ESB的方式(例如将ESB、WebService、CORBA以及使用Socket等方式访问的遗留系统接入到ESB系统),将接入的系统映射成Web服务。
ESB和微服务有什么区别
微服务是一种软件架构模式,将一个单一的应用拆分为多个小型的服务,每个服务运行在自己的进程中,服务间采用轻量级的通信机制(HTTP/webservice等)相互通信。
微服务中,每个服务都具有独立的功能和责任。每个服务都可以独立开发、测试、部署和扩展,从而提高应用程序的可维护性、可扩展性和灵活性。此外,微服务还使得不同的服务可以使用不同的技术栈和开发语言,从而使得团队可以选择最适合其需求的技术栈.
微服务的核心特征如下:
-
轻量化:将复杂的应用解耦成“小而自治”的服务。
-
松耦合:微服务之间的关系是松散的,业务上下文独立,运行环境与代码也相互隔离,互不干扰。
-
跨平台:服务之间通过HTTP或REST API进行通信,可以采用异构的编程语言、框架或工具。
-
云原生:微服务本身云原生技术,同时也借助其他云原生技术得到更好地发展与应用。
-
DevOps与CICD:微服务实现通过采用自动化部署、DevOps,CICD持续集成和交付,不断缩短应用交付周期,提升服务运维效率与运行质量,持续构建演进式架构。
ESB和微服务的主要区别如下:
-
连接方式不同:ESB是通过消息传递机制连接应用程序,微服务是通过HTTP或RESTful API进行连接。
-
功能不同:ESB主要负责消息的转化、解释以及路由的工作,微服务主要是以业务功能为单位进行拆分,每个服务功能独立且可以独立开发、设计、部署运行。
-
适用范围不同:ESB适用于跨企业间的集成,微服务适用于企业内部的业务模块间集成。
-
复杂度不同:ESB架构复杂,需要更多的维护,微服务架构简单,易于扩展和维护。
-
可靠性不同:ESB的可靠性较低,微服务的可靠性较高。
ESB终将被iPaaS替代
企业的云服务越来越多,ESB内部调用关系如果不梳理,就像是埋在地下管道中的各种线路,看似好像只有一根管道,但内部电线、水管、燃气管道根本无法分清楚,更不用说如何去治理、去优化。
随着IT技术的发展,ESB存在以下问题难以解决:
-
架构扩容困难:传统 ESB 采用集中式架构,可扩展性、可观测性低、且不支持微服务框架。
-
缺少服务安全防控:传统ESB能力聚焦在内部应用的集成与连接,缺少有效的安全手段,同时采用集中的服务注册管理手段,一旦受到攻击,将影响整个企业总线上的服务运行,因此企业一般不会将ESB的能力直接开放之外部网络环境,但随着工业互联的发展,企业与上下游企业、合作伙伴的数据急需打通,对外的集成开放能力也是企业需要解决的问题。
-
云端应用集成困难:ESB通常无法直连公有云SaaS应用以及一些平台服务。在面对SaaS华应用和平台服务的普及越来越显得力不从心。企业为了实现相关需求,就需要花费更高的成本。
-
配置复杂,集成效率低:ESB技术门槛高,通常需要配置专业的集成团队专人维护,导致其产品使用的灵活性大大降低,而无法支持企业日益增长的个性化业务需求与快速变更的响应需求。
综上,随着信息化的进步,老旧ESB就显得越加笨重,ESB系统的弊端也日渐明显。系统改造、架构升级势在必行。
针对ESB的问题和不足,我们当然可以选择升级ESB,实现更多协议适配,实现日志统计与监控,但是以后呢?我们需要的只是一个ESB么?
ESB其实并不是唯一选择,更多企业需要的其实是一个具备应用集成、数据集成、消息集成、API管理能力的一站式应用集成平台——也就是iPaaS平台。
与传统ESB相比,iPaaS具有以下优势:
1、分布式架构,集中式管理
iPaaS采用云原生分布式架构,管理平台与运行服务分离,支持多环境隔离独立部署,支持弹性扩容,具备超高的系统稳定性和可靠性。
2、企业级网关、市场化运营
iPaaS融合企业级网关服务,可以针对集成接口提供认证、流量、频次、加密等限制策略,保护企业数据安全。通过其内置的API门户或市场。实现企业内外部集成资源互联共享,全面盘活企业内数据资产。
API网关
API门户
3、丰富内置应用、自定义应用接入
iPaaS支持应用集成、软件集成、数据集成,更是内置了SAP、金蝶、用友、销售易等200+应用连接器。并且提供自定义应用接入编排功能,用户可根据企业所需,自定义接入云上云下应用。
丰富的内置应用
自定义应用编排接入
4、集成易用性高,业务响应速度快
iPaaS通过简单接口快速开发,复杂接口可视化编排方式,内部丰富的应用连接器与逻辑组件,用户只需要简单拖拉拽便能实现快速集成业务,让人人都能成为集成开发者。
接口可视化编排开发
iPaaS还支持API全生命周期管理,集成业务可以一键发布测试环境,在线调试后,直接上生产,将以天为单位的集成开发周期,缩短至分钟级。
在线调试
一键发布
相关文章:

企业服务总线ESB有什么作用?和微服务有什么区别?会如何发展?
企业服务总线ESB是什么 下面这张图,稍微了解些IT集成的朋友应该不陌生。 随着信息化发展不断深入,企业在不同的阶段引入了不同的应用、系统和软件。这些原始的应用系统互不连通,如同一根根独立的烟囱。 但是企业业务是流程化的,…...

NLP之LSTM原理剖析
文章目录 背景simpleRNN的局限性 LSTM手写一下sigmoid例子支持长记忆的神经网络解读3重门 背景 SimpleRNN有一定局限性, 图片上的文字内容: 图片标题提到“SimpleRNN是一种基础模型。它用于解决序列型问题,其中的每一步的输出会影响到下一步的结果。图…...

ESP32网络开发实例-Web方式配置WiFi连接
Web方式配置WiFi连接 文章目录 Web方式配置WiFi连接1、ESP Wi-Fi 管理器介绍2、软件准备3、硬件准备4、代码实现在本文中,我们将介绍如何实现在Web页面中配置ESP32的WiFi连接。 1、ESP Wi-Fi 管理器介绍 ESP32 将在启动时设置为热点模式 连接到充当 AP 的 ESP32 开发板。 在连…...

ElasticSearch 批量插入漏数据
项目场景: 项目中需要把Mysql数据同步到ElasticSearch中 问题描述 数据传输过程中数据不时出现丢失的情况,偶尔会丢失一部分数据,本地测试也无法复现,后台程序也没有报错,一到正式环境就有问题,很崩溃 这里是批量操…...

C++——类和对象之运算符重载
运算符重载 本章思维导图: 注:本章思维导图对应的xmind文件和.png文件都已同步导入至”资源“ 文章目录 运算符重载[toc] 1. 运算符重载的意义2. 函数的声明2.1 声明运算符重载的注意事项 3. 函数的调用4. const成员函数4.1 const成员函数的声明4.2 注意…...

第二阶段第一章——面向对象
前言 学习了这么久Python(呃其实也没多久差不多两周),可能有小伙伴说我废了,两周才学这么点,咋说呢,我曾经也是急于求成,做任何事情都是急于求成,比如我喜欢一个人我就想马上跟她在…...

Linux学习第33天:Linux INPUT 子系统实验(二):Linux 自带按键驱动程序的使用
Linux版本号4.1.15 芯片I.MX6ULL 大叔学Linux 品人间百味 思文短情长 本节笔记主要内容是学会如何使用Linux自带的按键驱动程序。 一、自带按键驱动程序源码简析 配置选项路径如下: -> Device Drivers ->…...

解决Visual Studio 2010 运行时屏幕一闪而过,无结果显示的问题
安装配置:Visual Studio 2010 软件安装教程(附下载链接)——计算机二级专用编程软件https://blog.csdn.net/W_Fe5/article/details/134218817?spm1001.2014.3001.5502 1、 我们在运行时会出现窗口一闪而过,这时候我们右键Test_1…...

C++(20):为[[nodiscard]]提供提示信息
C17中引入了[[nodiscard]]以对一些被忽略的函数返回值进行警告。 C(17):[[nodiscard]]编译属性_[[nodiscard]] c-CSDN博客 C20可以为[[nodiscard]]提供一个可选的提示信息 [[nodiscard("cant ignore")]] int fi() {return 1; }int main() {fi();return 0…...

hi3518ev200 从sd卡启动rootfs
板卡为 hisi 的 hi3518ev200,16M RAM,64M Flash。板卡不支持从SD卡启动,但是由于Flash空间有限,很多应用都放不下,因此考虑把 rootfs 放到 SD 卡中。先从 Flash 中启动 kernel,然后再加载 SD 卡中的 rootfs…...

[BUUCTF NewStar 2023] week5 Crypto/pwn
最后一周几个有难度的题 Crypto last_signin 也是个板子题,不过有些人存的板子没到,所以感觉有难度,毕竟这板子也不是咱自己能写出来的。 给了部分p, p是1024位给了922-101位差两头。 from Crypto.Util.number import * flag b?e 655…...

使用seldom编写http接口用例
在编写接口用例的过程中,针对一个接口,往往只是参数不同,那么参数化就非常有必要了。 seldom 中参数化的用法非常灵活,这里仅介绍file_data() 的N种玩法。 二维列表 当参数比较简单时可以试试下面的方式。 参数化数据 {"…...

Redis中Hash类型的命令
目录 哈希类型的命令 hset hget hexists hdel hkeys hvals hgetall hmget hlen hsetnx hincrby hincrbyfloat 内部编码 Hash类型的应用场景 作为缓存 哈希类型和关系型数据库的两点不同之处 缓存方式对比 Redis自身已经是键值对的结构了,Redis自身的键值对就…...

Java 函数式编程
1.Lambda 1.1 格式 JDK 从 1.8 版本开始支持 Lambda 表达式,通过 Lambda 表达式我们可以将一个函数作为参数传入方法中。在 JDK 1.8 之前,我们只能通过匿名表达式来完成类似的功能,但是匿名表达式比较繁琐,存在大量的模板代码&…...

类的成员函数总结
前言: 如果一个类中什么成员都没有,简称为空类。 空类中真的什么都没有吗?并不是,任何类在什么都不写时,编译器会自动生成以下6个默认成员函数。 默认成员函数:用户没有显式实现,编译器会生成的…...

java高级之单元测试、反射
1、Junit测试工具 Test定义测试方法 1.被BeforeClass标记的方法,执行在所有方法之前 2.被AfterCalss标记的方法,执行在所有方法之后 3.被Before标记的方法,执行在每一个Test方法之前 4.被After标记的方法,执行在每一个Test方法之后 public …...

MSQL系列(十三) Mysql实战-left/right/inner join 使用详解及索引优化
Mysql实战-left/right/inner join 使用详解及索引优化 前面我们讲解了BTree的索引结构,也详细讲解下Join的底层驱动表 选择原理,今天我们来了解一下为什么会出现内连接外连接,两种连接方式,另外实战一下内连接和几种最常用的join…...

前端面试题之HTML篇
1、src 和 href 的区别 具有src的标签有:script、img、iframe 具有href的标签有:link、a 区别 src 是source的缩写。表示源的意思,指向资源的地址并下载应用到文档中。会阻塞文档的渲染,也就是为什么js脚本放在底部而不是头部的…...

Django ORM:数据库操作的Python化艺术
Django的对象关系映射器(ORM)是其核心功能之一,允许开发者使用Python代码来定义、操作和查询数据库。这篇文章将带你深入了解Django ORM的强大之处,从基本概念到高级查询技巧,提供丰富的示例帮助你掌握使用Django ORM进…...

react受控组件与非受控组件
React中的组件可以分为受控组件和非受控组件: 受控组件:受控组件是指组件的值受到React组件状态的控制。通常在组件中,我们会通过state来存储组件的值,然后再将state的值传递给组件的props,从而实现组件的双向数据绑定…...

小米产品面试题:淘宝为何需要确认收货?京东为何不需要?
亲爱的小米粉丝们,大家好!我是小米,一个热爱技术、热衷于分享的小编。今天,我要和大家聊聊一个有趣的话题:为什么淘宝购物需要确认收货,而京东不需要?这可是一个让很多人纳闷的问题,…...

(1)上位机底部栏 UI如何设置
上位机如果像设置个多页面切换: 位置: 代码如下: "tabBar": {"color": "black","selectedColor": "#d43c33","borderStyle":"black","backgroundColor": …...

中国多主数据库:压强投入,期待破茧
拿破仑曾说:“战争的艺术就是在某一点上集中最大优势兵力”,强调了力量集中的重要性。 如今,国际形势风云变幻,西方世界对中国的围剿不再仅仅体现在军事和地缘政治上,而更多表现在经济与科技上。在科技领域࿰…...

JavaScript在ES6及后续新增的常用新特性
JavaScript经历了不同标本的迭代,在不断完善中会添加不同的新特性来解决前一个阶段的瑕疵,让我们开发更加便捷与写法更加简洁! 1、箭头函数: 箭头函数相比传统的函数语法,具有更简洁的语法、没有自己的this值、不会绑…...

试试流量回放,不用人工写自动化测试case了
大家好,我是洋子,接触过接口自动化测试的同学都知道,我们一般要基于某种自动化测试框架,编写自动化case,编写自动化case的依据来源于接口文档,对照接口文档里面的请求参数进行人工添加接口自动化case 其实…...

密钥管理系统功能及作用简介 安当加密
密钥管理系统的功能主要包括密钥生成、密钥注入、密钥备份、密钥恢复、密钥更新、密钥导出和服务,以及密钥的销毁等。 密钥生成:通过输入一到多组的密钥种子,按照可再现或不可再现的模式生成所需要的密钥。一般采用不可再现模式作为密钥生成…...

vue中watch属性的用法
在Vue中,watch属性用于监听一个数据的变化,并且在数据变化时执行一些操作。它可以观察一个具体的数据对象,从而在该数据对象发生变化时触发对应的回调函数。 使用watch属性的步骤如下: 在Vue实例中添加一个watch对象 new Vue({…...

Redis-使用java代码操作Redis
🏅我是默,一个在CSDN分享笔记的博主。📚📚 🌟在这里,我要推荐给大家我的专栏《Linux》。🎯🎯 🚀无论你是编程小白,还是有一定基础的程序员,这…...

0基础学习PyFlink——事件时间和运行时间的窗口
大纲 定制策略运行策略Reduce完整代码滑动窗口案例参考资料 在 《0基础学习PyFlink——时间滚动窗口(Tumbling Time Windows)》一文中,我们使用的是运行时间(Tumbling ProcessingTimeWindows)作为窗口的参考时间: reducedkeyed.window(TumblingProcess…...

Git Rebase 优化项目历史
在软件开发过程中,版本控制是必不可少的一环。Git作为当前最流行的版本控制系统,为开发者提供了强大的工具来管理和维护代码历史。git rebase是其中一个高级特性,它可以用来重新整理提交历史,使之更加清晰和线性。本文将详细介绍g…...