【AICon】AI 基础设施、LLM运维、大模型训练与推理,一场会议,全方位涵盖! >>> 了解详情
写点什么

Jim Marino 与 Meeraj Kunnumpurath 专访:关于 SCA 和 Fabric3

  • 2008-05-05
  • 本文字数:4398 字

    阅读完需:约 14 分钟

BEA 发布了在 WebLogic 10.3 中支持的 SCA 技术预览版,它是以开源的 Fabric3 运行时为基础构建的。InfoQ 采访了 BEA Systems 的技术主管 Jim Marino,以及 VocaLink 的首席技术人员 Meeraj Kunnumpurath ,后者是 SCA 最早的参与者和 Fabric3 贡献者之一,并参与了 SCA 规范制定和 Fabric3 实现。

InfoQ:过去 10 年 SOA 有了长足的发展,你们如何看待软件工业向 SOA 方向的演变?

Meeraj:从最终用户角度来看,我们关心的是如何解决不断增长的复杂业务问题。 Vocalink 是世界上最大的银行同业支付服务提供商(interbank payment processors)之一。40 年来我们一直从事这个业务。今天,我们看到了许多商业机会,其中大部分在欧洲。这些新机会要求我们重用软件资产构建新的解决方案。我们认为 SOA 是使这些新的商业机会成功的关键。对我们来说,SOA 能使我们改进整体拥有成本和开发新的解决方案。

Jim:Meeraj 的观点有一定的代表性,我们发现用户在重用代码方面确实存在着困难。面向对象技术的引入显著地改善了应用内部的代码重用。然而,跨过程边界的代码重用有更多的问题。诸如 EJB 或 CORBA 这样的远程技术错误之处在于,试图将 OO 原则应用到进程间通信上。对于 SCA,我们为这一问题采用了完全不同的解决方法。SCA 为进程间调用引入了一个拥抱 OO 的编程模型,同时为远程操作所需要的异步、松耦合交互提供了便利。随着很多现有编程模型变得复杂,对于 SCA,我们力求编程模型在降低复杂性的同时通过组合(composition)来提供模块性。其中的组合是一个关键概念……

InfoQ:今天如何采用 SCA 呢?

Meeraj:我们期望看到更多来自厂商推广 SCA 的努力。在过去的 3~4 年间,SOA 已经演变成了一个构建解决方案的主要范式。但是在极大程度上,SOA 依旧是一组模式和最佳实践,有时难以实现。同时我们看到开发人员对基于容器的技术感到痛苦,并转而求助于象 Spring 或 Mule 这样的更轻量级编程模型。但是,这些技术依旧是私有的,它们会把你锁定到特定的技术和厂商。SCA 带来了一个新的轻量级编程模型,但是这次,它是基于标准的,锁定问题不再出现。在构建基于 SOA 的企业应用方面,SCA 提供了一组约定俗成的规范。

直到现在,我们的 SOA 实现还是基于 Spring 和 Mule 的。我们现在正向 WLS 10.5 迁移,而且利用了 SCA。在模块化、组合、策略增强和高度重用方面,它满足了我们的需要。对我们来说,这是一个极大的进步,这是需要被传播的技术,我们也愿意看到更多的来自厂商的努力。

Jim:我同意 Meeraj 所说的,在解释 SCA 是什么这件事上,我们做得不是非常好。即使它开始得到更多动力,但与早期围绕 EJB 所作的宣传相比,这个动力还很少。原因之一是我们现在还没有任何成熟的运行时。随着两个开源项目 Fabric3 和 Apache Tuscany 走向成熟,我们会看到更多人对这项技术发生兴趣。我也承认当今的技术环境不同了。新技术的普及速度更慢。总的来说,如果我们能小心地推进 SCA 的发展并避免匆忙地将技术投放到市场会是件好事。

Meeraj:我得说,只要新技术能解决问题,它们就会获益颇丰。例如,我们已经看到象 Spring 这样的技术正显现出一个巨大的市场。

InfoQ:说到新技术,OSGi 似乎也正成为一项重要技术,你如何定位 SCA 和 OSGi?

Jim:OSGi 是一项伟大的技术,而且 BEA 是它的一个强大的支持者。OSGi 和 SCA 可以是互补的。例如,一个 SCA 运行时可以运行在一个像 Equinox 或 Apache Felix 这样的 OSGi 容器中。但是,认识到 OSGi 并没有解决全部的模块化需求也很重要。为了给应用模块化提供更好的支持,SCA 提供了组合(composite)和部署单元(contribution)。我想稍稍多谈一些部署单元,因为它们是我们最近对 SCA 规范所作的一个主要变化。在 SCA 中,部署单元用来安装和共享应用部件。SCA 规定的互操作打包格式是 zip,如 Java 运行时中的 JAR。我们曾考虑过使用 OSGi bundle 的可能,但是我们没能那么做:OSGi 实际只考虑了单进程,单 JVM。SCA 需要处理分布式情况。此外,SCA 不限于 Java,需要处理非 Java 部件(如 WSDL 文档和 XML 模式)的共享。因此,我们认为我们需要开发部署单元这个概念,它负责分布式环境中的打包和共享。

SCA 部署单元机制的一个有趣方面就是它是可扩展的。这使得 SCA 运行时能支持 OSGi bundle 作为一个部署单元的打包格式。与之类似,一个 SCA 运行时也能支持诸如 WAR 或 EAR 这样的其他打包格式。

Meeraj:我们检查了 OSGi 和 Spring 动态模块。我们发现 OSGi 和 SCA 之间存在很多重叠。例如,SCA 提升(Promotion,译注:将组合内部的组件提升为外部可用的服务暴露出来)在 OSGi 中有等同的概念,SCA 部署单元也是如此。但是,据我所知,在 OSGi 中并没有等同传输层抽象和策略的概念,即使在企业 OSGi 中有一些关联的项目,但情况依旧。这些特性对于构建企业中间件来说有巨大价值。我们的经验是,SCA 真的使我们构建 SOA 应用的必由之路具体化了:实现 SOA 行话和模式变得简单,强调类型化的服务契约。同时,SCA 能使我们在将来自由地将我们的代码移动到不同 SCA 容器。

InfoQ:你们采用 SCA 的方法是什么?

Meeraj:我们正处于将应用从大型主机移动到中型服务器的过程中,使用 Java 环境。我们经历了两个不同阶段:首先使用重型技术如 EJB,然后转向更轻型的技术如 Spring 和 Mule。现在,就模块组合、策略增强、传输层抽象和异构联邦来说,我们正经历更复杂的问题。Spring 对我们帮助很大,但是 SCA 解决了比 Spring 或 Mule 更多、更复杂的企业软件工程问题。

在我们转向 SCA 时候,我刚刚参与 Tuscany。后来,在我开始从事 Fabric3 工作的时候,我担任了指导性更强的角色。这使得我们能更进一步了解这个技术。我们考虑在 2 个项目中使用 SCA。这是一个有见地的决策,因为我们参与了 OASIS 技术委员会和 Fabric3 项目。当然,我们还没有任何系统在生产,但是我们计划在今年第 4 季度发布这两个系统,这两个系统都在一个 J2EE 容器中使用了 Fabric3。

这些项目混杂着遗留代码和新写代码。绝大部分现有代码构建在象 Spring 这样的技术上。就迁移这些 Spring Bean 到 SCA 环境而言,基本上就是把它们找出来,然后给它们添加 SCA 注解。Fabric 3 也支持许多能将遗留代码作为 SCA 组件运行的启发式方法。那很简单。

Spring 允许我们完成依赖管理,这样我们就能在容器外运行我们的代码,然后改变配载在 J2EE 中运行。在 VocaLink,Spring 为使用更轻量级的编程模型奠定了基础。但是,我们发现 SCA 更好地解决了面向组件软件开发的复杂性。我们有一个关键需求必须用组件封装。我没有办法在把一系列 Spring bean 组装成一个组件的同时,将某些 bean 标识成是这个组件私有的。SCA 非常擅长管理这种区别,只提升组合(composite)中想给外部使用的那些 Bean,而将其他任何东西都留给组合私有。此外,SCA 策略对于强制 QoS 方面具有更多的表现力。SCA 意图(intent)抽象了那些能映射到运行环境中具体策略的需求。对我们来说,我们认为 SCA 以一种标准方式解决了很多过去用 Spring 解决的问题。而且,象 F3 这样的实现完全在无损轻量级开发模型和开发人员生产效率情况下做到了这一点。

Jim:许多的 BEA 产品正转向 SCA。我们正在 WebLogic 中支持通用的 SCA 能力。WebLogic Server 将 Fabric3 内嵌为第一级容器,与服务器包含的 JEE 支持的方式相同。这允许用户在 WebLogic Server 上安装 Fabric3 扩展,如绑定、策略,并支持不同的组件实现类型。它还允许用户创建自定义的扩展,它可被安装到任何内嵌了 Fabric3 的地方,无论是 WebLogic,还是其他服务器,如 Tomcat、Jetty 或一个基于 OSGi 的运行时。WebLogic Server 增加了诸如集群、管理、故障转移和可靠性方面的特性。我们还正在为开发人员和部署人员开发相关的 SCA 工具。

InfoQ:就松耦合和 SCA,你们能提供些看法吗?

Jim:SCA 的编程模型特意为促进松耦合而设计。在 Java 中,SCA 使异步交互、回调和会话成为了一等公民。如 Meeraj 之前所说,SCA 还提供了协议抽象,这样在远程调用时代码就无需处理低级的传输层 API。这就是某种形式的松耦合,它尽可能地移除了与传输协议有关的依赖。

但是,有趣的是,SCA 也支持更耦合的方式,本地交互。这是因为松耦合并不适于应用设计的所有层级。例如,处理远程异步交互一般就比处理同步本地交互复杂。通过它的组合概念,SCA 支持将更小的、紧耦合的组件装配成松耦合服务。这有助于促进应用模块化,因为服务由更小的单元组成,它们作为一个组合被一起管理。它还有助于减少复杂性,因为远程、异步调用可以被限制在应用的关键部分。

InfoQ:你们如何正视 SCA 中的管理和运营?

Jim:这一部分被认为是未来的工作重点。在 BEA 看来,我们看到 SCA 和装配模型极大地增强了管理,因为后者提供了描述运行时环境的统一方法,这些环境通常由不同技术组成。

Meeraj:在概念上,SCA 有两方面导致管理简化。域(domain)概念,如 Jim 所说的,它提供了一个统一视图。另一个重要的概念是递归。递归允许在域的更高层定义策略,然后将它们强制到内部所有组件实现和交互。Fabric3 在支持异构联邦域上花费了不少功夫。这样,SCA 为管理复杂互联系统提供了基础。但是的确,我们需要更进一步对有助于管理和运营的具体策略提供支持。

InfoQ:在采用 SCA 的过程中,你们遇到过什么困难?

Meeraj:缺少成熟的产品绝对算的上是一个,但是对于我们来说,SCA 是迈向构建 SOA 应用的重要一步。规范尚处于 1.x 级别,而且还会发展。参与者的背景很广泛,不仅仅限于厂商。在技术委员会中,我们提供和得到实践反馈,同时面对现实世界的问题:与规范中指定的场景相比,策略如何工作在某个确定的场景中。这是一个非常积极的工作环境。

InfoQ:SCA 的关键好处是什么?

Meeraj:通常说的,如果你想比较 SCA 和其他技术的话,它没有将你限制在特定技术之上。你可以使用不同的组件实现技术如 Spring、Java、BPEL、脚本语言等和各种传输机制如 HTTP-WS、JMS、RMI、Hessian、 AMQP 等。SCA 还为我们解决了范围广泛的重要问题:装配、组合、传输层抽象和绑定、意图和策略、域……SCA 为我们提供的仍旧是一个轻量级编程模型,但是解决了大范围的复杂问题。我们真的期望看到来自厂商更多的推广,帮助他们的客户拥抱这些技术。

Jim:SCA 的确是应用开发的下一阶段。SCA 代表了一些人们常常统称为“SOA”的具体步骤:重用、组合、策略管理和松耦合服务。SCA 最大的好处就是试图以一种比传统方法简单得多的方式提供这些特性。

Meeraj:SCA 不只是呆板地实现 SOA 典型视图:不是所有东西都是松耦合或是无状态的。在你应用的某些层级,你有紧耦合的细粒度组件,经常有有状态的会话,你需要的会话回调支持等等。SCA 谈论的是这些基于 SOA 的应用构建方式:递归地构建它们。SCA 的确代表了一组描述你如何构建基于 SOA 应用的规范。

查看英文原文 Interview: Jim Marino and Meeraj Kunnumpurath on SCA and Fabric3

2008-05-05 08:321032
用户头像

发布了 255 篇内容, 共 54.6 次阅读, 收获喜欢 9 次。

关注

评论

发布
暂无评论
发现更多内容

持续创新·驱动计算:英特尔2021年技术发展大盘点

科技新消息

Dubbo的预热与停机实践

快看工程技术中心

dubbo 优雅停机 服务预热

Linux云计算之使用rsync+sersync 实现数据实时同步

学神来啦

Linux centos linux运维 rsync linux云计算

等保五级怎么划分?适用于哪些系统?

行云管家

网络安全 等级保护 等保测评 信息安全等级保护

QCon-小布助手对话系统工程实践

安第斯智能云

59 K8S之Elasticsearch节点

穿过生命散发芬芳

k8s 28天写作 12月日更

盘点 2021|从零开始,向前出发

Middleware

生涯规划 个人成长 盘点2021 2021年终总结

直播整理 | TDengine 技术内幕分享:兼容 OpenTSDB

TDengine

数据库 tdengine OpenTSDB

【Netty技术专题】「原理分析系列」Netty强大特性之ByteBuf零拷贝技术原理分析

洛神灬殇

Netty 零拷贝 zero copy 12月日更

面试官:this和super有什么区别?this能调用到父类吗?

王磊

新官网心体验,腾讯WeTest全新产品功能与解决方案发布!

WeTest

FFmpeg的一些应用实践-补充

为自己带盐

ffmpeg 28天写作 12月日更

网络编程懒人入门(十三):一泡尿的时间,快速搞懂TCP和UDP的区别

JackJiang

TCP 网络编程 udp 即时通讯 IM

Flink CDC 系列 - Flink MongoDB CDC 在 XTransfer 的生产实践

XTransfer技术

flink 分布式数据库mongodb

检索、问答、情感分析场景前沿技术方案分享!

百度开发者中心

自然语言处理

如何把 MySQL 备份验证性能提升 10 倍

Juicedata

MySQL 数据库 云存储 数据备份

SLICK: Facebook基于SLO的可靠性保障实践

俞凡

facebook 架构 大厂实践

Hoo虎符研究院 | Mir Protocol 调研报告

区块链前沿News

Hoo虎符 虎符交易所 好项目

【鲲鹏 DevKit黑科技揭秘】│如何实现全链路系统问题90%精准诊断?

华为云开发者联盟

内存 性能分析 内存泄漏 鲲鹏 鲲鹏 DevKit

SphereEx 亮相 openGauss Summit 2021,同云和恩墨签订战略合作协议

SphereEx

开源 ShardingSphere SphereEx 云和恩墨 战略合作

TiDB Hackathon 项目白皮书—LotusDB

roseduan

TiDB KV存储引擎 kv

大数据开发之Spark SQL及基础引擎知识分享

@零度

大数据 spark SQL

四款常见IT自动化运维工具简单介绍-行云管家

行云管家

运维 IT运维 自动化运维

面向 web 开发人员的免费托管服务

开源之巅

并发场景加锁优化小技巧

程序员小航

jdk 并发

在线JSON转MySQL建表语句工具

入门小站

工具

如何在 Go 中将 []byte 转换为 io.Reader?

AlwaysBeta

golang Go 语言

近百万条数据、3秒查询,TDengine助力北微云平台的搭建

TDengine

数据库 tdengine 物联网

RandomAccessFile 解决多线程下载及断点续传

码农架构

微服务架构 断点续传 大文件断点续传 RandomAccessFile 微服务附件

PingCode 技术架构揭秘

PingCode研发中心

架构 技术架构 研发 PingCode

Babel 学习日记(0)

恒生LIGHT云社区

前端 babel

Jim Marino与Meeraj Kunnumpurath专访:关于SCA和Fabric3_SOA_Jean-Jacques Dubray_InfoQ精选文章