wso2 ——(2)esb 基本组件介绍

2024-03-07 10:18
文章标签 组件 介绍 基本 esb wso2

本文主要是介绍wso2 ——(2)esb 基本组件介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1 WSO2 ESB简介

WSO2 ESB是一个快速、轻量级、100%开源的ESB基于Apache Synapse和Apache Axis2项目构建。支持协议转换、消息路由、服务编排、服务注册、容错、负载均衡、集群配置等功能。

WSO2 ESB是基于WSO2Carbon平台的(OSGi框架),包含许多功能和组件,可通过简单的添加删除来定制化ESB

1.1 架构

1.1.1 消息架构

从消息处理角度介绍ESB架构,pipe组件的顺序不是固定的。

 

(1)一个应用发送消息到ESB

(2)消息被transport接收。

(3)Transport通过消息管道发送消息,消息管道进行一些服务质量的处理,如安全、可靠消息传输等。两种实现方式:(1Mediating Messages(一个单独的 pipe)。(2Proxy Services(把pipes分到不同的代理服务)。

(4)消息转换和路由都可以被认为是一个独立的单元。WSO2 ESB称这个为中介框架。有些转换发生在路由之前,有些发生在路由之后。这部分由Synapse实现。

(5)然后消息根据目的地注入到相应的管道,再次进行服务质量的确定。

(6)Transport层负责ESB所需的传输协议的转换。

这个图显示了一个请求如何通过ESB传输到实际的端点,响应处理是相反的过程。有其他的一些模块像 tasksevents没有显示在图中,所有这些组件通过WSO2 ESB 控制台进行管理和监控。

1.1.2 组件架构

从构件组成角度介绍ESB架构。

 

 

1.2 概念

1.2.1 Transports

WSO2 ESB 支持所有广泛使用的传输协议,如HTTP, HTTPS, POP, IMAP, SMTP, JMS, AMQP, FIX, TCP, UDP, FTP, FTPS, SFTP, CIFS, MLLP, SMS. Transport负责传输指定格式的消息。一个新的传输协议使用Axis2传输框架可以轻松地被添加和插入到ESB中。

Transport包含两个组件:

(1)Message builders:根据内容类型识别消息并转化为XML格式。每一种内容类型都有相应的Message buildersWSO2 ESB包含基于文本的Message builders和基于二进制的Message buildersA->XMLB->XML……)。

2Message formatters:与Message builders相反。XML格式的消息转化为传到Transport前消息的格式(XML->AXML->B……)

可以使用axis2框架实现新的Message buildersMessage formatters

参阅协议转换(Working with Transports

1.2.2 Endpoints

Endpoints代表一个后台服务,我们需要为ESB调用的每一个后台服务定义一个endpointEndpoint可以被指定为address endpointWSDL endpointload balancing endpointEndpoint是独立于传输协议的。同一个endpoint可以使用多种协议。当你配置sequence或者proxy service处理incoming消息时,需要指定所用的transport和消息送达的endpoint

参阅端点(Working with Endpoints

<endpoint>

      <address uri="http://localhost:9000/services/SimpleStockQuoteService"

                  format="soap11"/>

</endpoint>

注:format - endpointmessage format ,可用的值有:

[format="soap11|soap12|pox|get"]

· Leave As-Is - 消息不转换.

· SOAP 1.1 - 转换消息为SOAP 1.1.

· SOAP 1.2 - 转换消息为SOAP 1.2.

· Plain Old XML (POX) - 转换消息为plain old XML format

· Representational State Transfer (REST) - Transforming to HTTP Get Request

· GET

1.2.3 Proxy Services

代理服务是ESB上的虚拟服务,可以实现多个实际服务的无缝集成。收到消息在被送达给定endpoint前可有选择的进行处理,不改变现有的服务而对服务进行必要的转换或增加其他额外的功能。代理服务接收和发送消息可以使用任何传输协议。

顾名思义,代理服务充当了WSO2 ESB服务的代理,通常是一个已经存在的服务端点,代理服务可以使用不同的传输方式。 默认情况下,代理服务使用HTTPHTTPS传输。在ESB的启动过程中,它会启动所有代理服务,并需要获取代理服务关联的WSDL。如果ESB可以在statup这些找不到的WSDL,它会忽略这样的服务,并继续启动。 

代理服务是一个虚拟的服务,实际功能由外部的已存在的服务提供。 跟真实的服务一样,代理服务也需要用一个wsdl文件来描述自己的服务内容;这个wsdl文件可以是针对当前代理服务专门编写的,也可以将外部的一个真实服务的wsdl文件作为自己wsdl

1)Proxy Service中的消息流

· 一个代理服务有两个主要的消息流:InSequence 和OutSequence。

· InSequence:代表的是消息进入ESB发送到endpoint前对流程进行编排的阶段。当客户端发送消息到Proxy Service,消息首先进入InSequence,所以在InSequence可以处理接收的消息并通过“send”mediator发送到后台服务(endpoint)。

· OutSequence:endpoint响应了消息,发回到ESB,ESB返回给客户端,这段流程编排默认通过outSequence实现。

· 如果出现错误,false sequence将被调用。


2)Receiving Sequence

· 上述部分我们理解了代理服务的基本消息流程,WSO2 ESB 4.x 版本以后引入了“receiving Sequence”的概念,用户可以指定一个外部请求从ESB进行处理得到响应的序列,也就是说用户可以指定接收请求的队列,而不是去默认的队列outsequence处理。通过“send”mediator指定receiving sequence

 

1.2.4 Mediators

WSO2 ESB中进行消息处理的基本组件,ESB中所有的消息流都是由一系列mediatos组成的。一个mediator包含一个输入消息、一个输出消息还有其他一些配置。根据配置进行输入消息的转换、替换等操作形成输出消息。

WSO2 ESB包含一系列的mediators提供不同的能力处理消息,提供一套完整的mediator库实现不同功能。自己也可以使用JavascriptingSpring等各种技术实现额外的功能。

参阅mediator

1.2.5 Sequences

Sequence由一系列mediators组成。分配到sequence的消息按顺序流经每一个mediator并进行相应的改变。参阅Sequences


1.2.6 QoS 

Qos组件提供可靠消息传递及安全性。

1.2.7 Registry

WSO2 ESB提供了一个内置的Registry存储各种配置和组件,像sequenceendpointserviceswsdls、配置文件等都可以存储在registry中,通过一个key引用(类似UNIX文件的路径)

两种方式可以访问registry,多数情况下直接从Carbon组件调用registry API,特殊情况下允许Apache Synapse配置访问。因此,ESB配置包含如下registry定义:

<registry provider="org.wso2.carbon.mediation.registry.WSO2Registry">

   <parameter name="cachableDuration">15000</parameter>

</registry>

当消息通过ESB,如果消息有对registry 资源的引用,ESBregistry获取信息并缓存为后续调用。缓存改善了消息处理的性能,但registry资源发生变化,缓存数据使用时不会得到反映。cachableDuration参数控制缓存数据的生命周期,过期后ESB将重新将数据放入registrycachableDuration增大可以改善消息处理的速度,减少可以确保registry的资源及时更新。

基于CarbonWSO2产品都有如下选项配置注册表空间:

(1)使用产品默认的空间;

(2)使用远程注册表示例,多个wso2产品共享注册表。配置参考Sharing Registry Space Among Multiple Products.

Carbon每个产品提供的注册表空间包含三个主要部分:

1Local repository:存储本地配置和运行时数据,不允许多个服务器共享。可以在/_system/local 目录下浏览。

2Configuration repository:存储指定产品配置和数据。允许相同产品的多个实例共享,如一个ESB集群共享ESB配置。可以在 /_system/config 目录下浏览。

3Governance repository:存储整个平台可共享的配置和数据。.包括serviceservice descriptionendpointdatasources等,可以再 /_system/governance目录下浏览。

 

注意:集成WSO2 ESB和一个新的注册表,必须实现org.apache.synapse.registry.Registry接口。

注册表具体使用参见Managing the Registry. 和Storing Various WSO2 Enterprise Service Bus Configurations.

这篇关于wso2 ——(2)esb 基本组件介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/783183

相关文章

Vue项目的甘特图组件之dhtmlx-gantt使用教程和实现效果展示(推荐)

《Vue项目的甘特图组件之dhtmlx-gantt使用教程和实现效果展示(推荐)》文章介绍了如何使用dhtmlx-gantt组件来实现公司的甘特图需求,并提供了一个简单的Vue组件示例,文章还分享了一... 目录一、首先 npm 安装插件二、创建一个vue组件三、业务页面内 引用自定义组件:四、dhtmlx

Vue ElementUI中Upload组件批量上传的实现代码

《VueElementUI中Upload组件批量上传的实现代码》ElementUI中Upload组件批量上传通过获取upload组件的DOM、文件、上传地址和数据,封装uploadFiles方法,使... ElementUI中Upload组件如何批量上传首先就是upload组件 <el-upl

Python中多线程和多进程的基本用法详解

《Python中多线程和多进程的基本用法详解》这篇文章介绍了Python中多线程和多进程的相关知识,包括并发编程的优势,多线程和多进程的概念、适用场景、示例代码,线程池和进程池的使用,以及如何选择合适... 目录引言一、并发编程的主要优势二、python的多线程(Threading)1. 什么是多线程?2.

Vue3中的动态组件详解

《Vue3中的动态组件详解》本文介绍了Vue3中的动态组件,通过`component:is=动态组件名或组件对象/component`来实现根据条件动态渲染不同的组件,此外,还提到了使用`markRa... 目录vue3动态组件动态组件的基本使用第一种写法第二种写法性能优化解决方法总结Vue3动态组件动态

MyBatis-Flex BaseMapper的接口基本用法小结

《MyBatis-FlexBaseMapper的接口基本用法小结》本文主要介绍了MyBatis-FlexBaseMapper的接口基本用法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具... 目录MyBATis-Flex简单介绍特性基础方法INSERT① insert② insertSelec

JAVA调用Deepseek的api完成基本对话简单代码示例

《JAVA调用Deepseek的api完成基本对话简单代码示例》:本文主要介绍JAVA调用Deepseek的api完成基本对话的相关资料,文中详细讲解了如何获取DeepSeekAPI密钥、添加H... 获取API密钥首先,从DeepSeek平台获取API密钥,用于身份验证。添加HTTP客户端依赖使用Jav

C++中使用vector存储并遍历数据的基本步骤

《C++中使用vector存储并遍历数据的基本步骤》C++标准模板库(STL)提供了多种容器类型,包括顺序容器、关联容器、无序关联容器和容器适配器,每种容器都有其特定的用途和特性,:本文主要介绍C... 目录(1)容器及简要描述‌php顺序容器‌‌关联容器‌‌无序关联容器‌(基于哈希表):‌容器适配器‌:(

四种Flutter子页面向父组件传递数据的方法介绍

《四种Flutter子页面向父组件传递数据的方法介绍》在Flutter中,如果父组件需要调用子组件的方法,可以通过常用的四种方式实现,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录方法 1:使用 GlobalKey 和 State 调用子组件方法方法 2:通过回调函数(Callb

Vue项目中Element UI组件未注册的问题原因及解决方法

《Vue项目中ElementUI组件未注册的问题原因及解决方法》在Vue项目中使用ElementUI组件库时,开发者可能会遇到一些常见问题,例如组件未正确注册导致的警告或错误,本文将详细探讨这些问题... 目录引言一、问题背景1.1 错误信息分析1.2 问题原因二、解决方法2.1 全局引入 Element

Python进阶之Excel基本操作介绍

《Python进阶之Excel基本操作介绍》在现实中,很多工作都需要与数据打交道,Excel作为常用的数据处理工具,一直备受人们的青睐,本文主要为大家介绍了一些Python中Excel的基本操作,希望... 目录概述写入使用 xlwt使用 XlsxWriter读取修改概述在现实中,很多工作都需要与数据打交