searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

初探Apache Synapse

2023-07-31 07:56:20
71
0

最近工作涉及企业服务总线(ESB),调研了市面上开源的几款企业服务总线产品。MuleSoft的Mule(https://www.mulesoft.com/),WSO2的WSO2 ESB(https://wso2.org/),ServiceMix(https://servicemix.apache.org/)。由于ESB主要跟SOA发展密切相关,但互联网快速发展的今天,已经被微服务逐渐替代。ESB开源项目背后的公司重心都放在企业级服务。这些开源项目功能强大,但更注重产品化,而根据项目需求,更需要一个轻量化可高度定制开发的框架做为底座。这个时候WSO2同门的apache顶级项目synapse进入了我的视线。可能WSO2更接近大部分用户需求,也可能是Synapse这个名字被其他大厂命名为其他产品,网上除了官方教程,竟没有发现一本书专门介绍Synapse。笔者只能硬着头皮通过官网和各种文章去了解这款ESB。

 

ESB功能

先从messages(消息)角度看ESB功能架构

  1. 请求应用发送消息给ESB
  2. ESB选择对应传输协议的Transport接受消息
  3. Transport通过Pipe(消息管道)发送消息,这里可以处理服务质量的问题(例如安全的认证鉴权)
  4. 接着消息经过路由和转换组件,在WSO2中它们都归为中间框架,在实际中组件的顺序是可以根据需求调整的。
  5. 消息再次被注入不同的Pipe(消息管道),这里多个Pipe是因为在某些场景下,消息是需要拆解发送,返回后再聚合的。
  6. 消息这个时候再次通过适配服务应用传输协议的Transport发送消息。
  7. 服务应用返回给Transport后,返回消息再次经过Pipe(消息管道),这里可以处理安全问题,例如通过对服务应用进行认证,然后消息到达中间框架。
  8. 中间组件根据配置对返回消息进行路由和转换。
  9. 消息通过Transport把返回消息返回给请求应用。
  10. ESB还提供了监控和管理功能,以便对消息流进行跟踪和监控。

Synapse介绍

Synapse起源于2005年9月在湾区举办的一次面对面会议,地点在Infravio的办公室。2006年1月就构建了第一个版本,被称为M1。2006年12月,项目从孵化器毕业。2007年12月正式成为Apache顶级项目。目前最新版为3.0.2。

主要特性

  • 代理服务 - 便利的传输器(Transport), 接口(WSDL/Schema/Policy)、消息格式(SOAP 1.1/1.2、POX/REST、文本、二进制)
  • 非阻塞 HTTP/S 传输,可支持数千个并发连接
  • VFS传输,用于文件操作以及与FTP,SFTP,CIFS和WEBDAV的交互
  • JMS 支持二进制、纯文本、XML 和 SOAP 负载
  • 邮件传输,广泛支持 POP3、IMAP 和 SMTP
  • 支持行业驱动的财务信息交换 (FIX) 协议
  • 内置注册表/存储库,便于动态重新加载配置和相关资源(例如 XSLT、XSD、JS等)
  • 负载平衡(粘性和非粘性会话)和故障转移路由
  • 支持许多 Web 服务标准,包括 WS 寻址、WS-Security 和 WS-Reliable Messaging
  • 基于策略的消息限制和缓存(对集群环境的特殊支持)
  • 消息拆分和聚合
  • 通过数据库连接池提供数据库查找和更新支持
  • 对序列(sequences)、端点(endpoints )和代理服务( proxy services)进行细粒度的统计信息收集
  • JMX 监控和管理
  • 可通过Java,Spring或BSF脚本语言(Javascript,Ruby,Groovy等)进行扩展

Synapse架构图

核心组件介绍

Transports - 传输器

传输器负责承载特定格式的消息。Synapse对广泛使用的传输协议都支持,包括HTTP/S、JMS和VFS,以及特定领域的传输,如FIX。也可以使用Axis2传输框架轻松地添加一个新的传输。每个传输器都提供了一个接收器和一个发送器,用于接受消息和发送消息。

Message builders and formatters - 消息构建器和格式化器

 当消息进入ESB时,接收传输会根据消息的内容类型选择一个消息构建器。它使用该构建器来处理消息的原始有效负载数据,并将其转换为通用XML,然后ESB中介引擎可以读取和理解这些数据。同样当消息从ESB发出前,使用消息格式化程序根据消息的内容类型将消息构建回其原始格式。

Endpoints - 端点

端点定义的是一个消息的外部目标。端点在配置完使用外部服务属性后,你就可以用它连接到该服务。例如,端点可以表示 URL、邮箱、JMS 队列或 TCP socket,以及连接到所需的设置。你可以将端点指定为地址端点、WSDL 端点、负载平衡端点等。端点定义不绑定传输器,也就是说允许将同一端点用于多个传输器。

Proxy services - 代理服务

代理服务是接收消息并选择性地处理消息的虚拟服务,然后再将其转发到指定端点上的服务。此方法允许您执行必要的转换并引入其他功能,而无需更改现有服务。任何可用的传输器都可用于从代理服务接收和发送消息。代理服务外部可见,可以像使用普通 Web 服务地址一样通过URL 进行访问。

Mediators - 中介器

中介器是执行特定功能(如发送、转换或筛选消息)的各种处理单元。项目包含一个全面的中介器库,该库提供用于实现广泛使用的企业集成模式 (EIP) 的功能。你也可以使用各种技术(如 Java、脚本和 Spring)编写自定义调解器。

Sequences - 序列

序列是把一组中介器组织成一个逻辑过程,可以选择实现管道和筛选器模式并将序列添加到代理服务。

Tasks - 任务

任务允许你由计时器触发代码段。你可以通过实现接口来编写自己的自定义任务。

QoS component - 服务质量

服务质量组件主要实现安全性,缓存,节流,可靠传输。

Registry - 注册中心

注册中心是一个内容和元数据存储库。主要存储配置,消息结构,wsdl、模式、脚本、XSLT和XQuery转换等资源。

 

优缺点

优点:

  1. 灵活性: Apache Synapse在传输协议、消息格式和集成模式方面提供了高度的灵活性。
  2. 可扩展性: 它提供了一个模块化体系结构,允许用户通过自定义中介、传输和消息构建器扩展其功能。
  3. 可伸缩性: Apache Synapse被设计用于处理高负载,支持通过水平扩展适应不断增长的需求。
  4. 集成度: 支持与其他Apache项目(如Apache Axis2、Apache CXF和Apache ActiveMQ)无缝集成,从而更容易构建全面的集成解决方案。

缺点:

  1. 学习曲线: Apache Synapse学习曲线比较陡峭,特别是对于刚接触ESB概念和技术的用户。
  2. 社区支持: 与其他一些ESB解决方案相比,Apache Synapse的社区更小,这可能导致支持响应时间变慢,可用资源也更少。
  3. 文档: 虽然Apache Synapse官网提供了文档,但缺乏全面性以及完备的示例。
  4. 监视和管理: 虽然提供了监视和管理功能,但无法像商业ESB那样提供用户友好的解决方案。
0条评论
0 / 1000
陆****琦
4文章数
0粉丝数
陆****琦
4 文章 | 0 粉丝
原创

初探Apache Synapse

2023-07-31 07:56:20
71
0

最近工作涉及企业服务总线(ESB),调研了市面上开源的几款企业服务总线产品。MuleSoft的Mule(https://www.mulesoft.com/),WSO2的WSO2 ESB(https://wso2.org/),ServiceMix(https://servicemix.apache.org/)。由于ESB主要跟SOA发展密切相关,但互联网快速发展的今天,已经被微服务逐渐替代。ESB开源项目背后的公司重心都放在企业级服务。这些开源项目功能强大,但更注重产品化,而根据项目需求,更需要一个轻量化可高度定制开发的框架做为底座。这个时候WSO2同门的apache顶级项目synapse进入了我的视线。可能WSO2更接近大部分用户需求,也可能是Synapse这个名字被其他大厂命名为其他产品,网上除了官方教程,竟没有发现一本书专门介绍Synapse。笔者只能硬着头皮通过官网和各种文章去了解这款ESB。

 

ESB功能

先从messages(消息)角度看ESB功能架构

  1. 请求应用发送消息给ESB
  2. ESB选择对应传输协议的Transport接受消息
  3. Transport通过Pipe(消息管道)发送消息,这里可以处理服务质量的问题(例如安全的认证鉴权)
  4. 接着消息经过路由和转换组件,在WSO2中它们都归为中间框架,在实际中组件的顺序是可以根据需求调整的。
  5. 消息再次被注入不同的Pipe(消息管道),这里多个Pipe是因为在某些场景下,消息是需要拆解发送,返回后再聚合的。
  6. 消息这个时候再次通过适配服务应用传输协议的Transport发送消息。
  7. 服务应用返回给Transport后,返回消息再次经过Pipe(消息管道),这里可以处理安全问题,例如通过对服务应用进行认证,然后消息到达中间框架。
  8. 中间组件根据配置对返回消息进行路由和转换。
  9. 消息通过Transport把返回消息返回给请求应用。
  10. ESB还提供了监控和管理功能,以便对消息流进行跟踪和监控。

Synapse介绍

Synapse起源于2005年9月在湾区举办的一次面对面会议,地点在Infravio的办公室。2006年1月就构建了第一个版本,被称为M1。2006年12月,项目从孵化器毕业。2007年12月正式成为Apache顶级项目。目前最新版为3.0.2。

主要特性

  • 代理服务 - 便利的传输器(Transport), 接口(WSDL/Schema/Policy)、消息格式(SOAP 1.1/1.2、POX/REST、文本、二进制)
  • 非阻塞 HTTP/S 传输,可支持数千个并发连接
  • VFS传输,用于文件操作以及与FTP,SFTP,CIFS和WEBDAV的交互
  • JMS 支持二进制、纯文本、XML 和 SOAP 负载
  • 邮件传输,广泛支持 POP3、IMAP 和 SMTP
  • 支持行业驱动的财务信息交换 (FIX) 协议
  • 内置注册表/存储库,便于动态重新加载配置和相关资源(例如 XSLT、XSD、JS等)
  • 负载平衡(粘性和非粘性会话)和故障转移路由
  • 支持许多 Web 服务标准,包括 WS 寻址、WS-Security 和 WS-Reliable Messaging
  • 基于策略的消息限制和缓存(对集群环境的特殊支持)
  • 消息拆分和聚合
  • 通过数据库连接池提供数据库查找和更新支持
  • 对序列(sequences)、端点(endpoints )和代理服务( proxy services)进行细粒度的统计信息收集
  • JMX 监控和管理
  • 可通过Java,Spring或BSF脚本语言(Javascript,Ruby,Groovy等)进行扩展

Synapse架构图

核心组件介绍

Transports - 传输器

传输器负责承载特定格式的消息。Synapse对广泛使用的传输协议都支持,包括HTTP/S、JMS和VFS,以及特定领域的传输,如FIX。也可以使用Axis2传输框架轻松地添加一个新的传输。每个传输器都提供了一个接收器和一个发送器,用于接受消息和发送消息。

Message builders and formatters - 消息构建器和格式化器

 当消息进入ESB时,接收传输会根据消息的内容类型选择一个消息构建器。它使用该构建器来处理消息的原始有效负载数据,并将其转换为通用XML,然后ESB中介引擎可以读取和理解这些数据。同样当消息从ESB发出前,使用消息格式化程序根据消息的内容类型将消息构建回其原始格式。

Endpoints - 端点

端点定义的是一个消息的外部目标。端点在配置完使用外部服务属性后,你就可以用它连接到该服务。例如,端点可以表示 URL、邮箱、JMS 队列或 TCP socket,以及连接到所需的设置。你可以将端点指定为地址端点、WSDL 端点、负载平衡端点等。端点定义不绑定传输器,也就是说允许将同一端点用于多个传输器。

Proxy services - 代理服务

代理服务是接收消息并选择性地处理消息的虚拟服务,然后再将其转发到指定端点上的服务。此方法允许您执行必要的转换并引入其他功能,而无需更改现有服务。任何可用的传输器都可用于从代理服务接收和发送消息。代理服务外部可见,可以像使用普通 Web 服务地址一样通过URL 进行访问。

Mediators - 中介器

中介器是执行特定功能(如发送、转换或筛选消息)的各种处理单元。项目包含一个全面的中介器库,该库提供用于实现广泛使用的企业集成模式 (EIP) 的功能。你也可以使用各种技术(如 Java、脚本和 Spring)编写自定义调解器。

Sequences - 序列

序列是把一组中介器组织成一个逻辑过程,可以选择实现管道和筛选器模式并将序列添加到代理服务。

Tasks - 任务

任务允许你由计时器触发代码段。你可以通过实现接口来编写自己的自定义任务。

QoS component - 服务质量

服务质量组件主要实现安全性,缓存,节流,可靠传输。

Registry - 注册中心

注册中心是一个内容和元数据存储库。主要存储配置,消息结构,wsdl、模式、脚本、XSLT和XQuery转换等资源。

 

优缺点

优点:

  1. 灵活性: Apache Synapse在传输协议、消息格式和集成模式方面提供了高度的灵活性。
  2. 可扩展性: 它提供了一个模块化体系结构,允许用户通过自定义中介、传输和消息构建器扩展其功能。
  3. 可伸缩性: Apache Synapse被设计用于处理高负载,支持通过水平扩展适应不断增长的需求。
  4. 集成度: 支持与其他Apache项目(如Apache Axis2、Apache CXF和Apache ActiveMQ)无缝集成,从而更容易构建全面的集成解决方案。

缺点:

  1. 学习曲线: Apache Synapse学习曲线比较陡峭,特别是对于刚接触ESB概念和技术的用户。
  2. 社区支持: 与其他一些ESB解决方案相比,Apache Synapse的社区更小,这可能导致支持响应时间变慢,可用资源也更少。
  3. 文档: 虽然Apache Synapse官网提供了文档,但缺乏全面性以及完备的示例。
  4. 监视和管理: 虽然提供了监视和管理功能,但无法像商业ESB那样提供用户友好的解决方案。
文章来自个人专栏
亚历山大陆
4 文章 | 2 订阅
0条评论
0 / 1000
请输入你的评论
1
1