低代码到底是不是行业毒瘤?一线大厂怎么做的?戳此了解>>> 了解详情
写点什么

采访 Ross Mason:MuleSoft 的新 API 平台

2013 年 5 月 18 日

MuleSoft 最近发布了他们的 Anypoint 平台,该平台支持云和 on-premise 服务的开发、部署和集成。InfoQ 有幸在全球 Mule Summit tour 期间采访了 MuleSoft 的 CTO,Ross Mason,并和他讨论了这个新平台。Ross 曾经创建了开源的 Mule 项目。

InfoQ: MuleSoft 最近发布了很多与服务和 API 管理相关的新产品:服务注册表(Service Registry, GA)、APIKit(当前还是 beta 版本)以及 API 管理器(beta)。可否请您告诉我们关于这些产品更多的信息?

RM:APIKit 是为开发者提供的设计工具集,使用它我们可以遵循 API 最佳实践实现一致的 API。APIKit 是一种开源、声明式的模型,设计它是用来构建遵守良好 API 设计实践的 REST API 和框架——像一致的 URL 模式、版本控制、安全性等——从而帮助你更快地编码、更有效地测试,并为你的 API 编写文档。APIKit 促进了 API 优先(API-first)的开发方法。它把实现和接口定义分离开来,从而让我们更易于快速整合 API 设计,并使用虚拟实现来试验,然后逐渐增加后端代码。这种方法意味着 API 本身可以独立于后端代码进行测试。

有趣的是:我们使用 APIKit 构建了 Anypoint 服务注册表的 API。因为我们先拥有了用来做功能演示的 API,几个月之后才创建好能工作的用户界面。

Anypoint 服务注册表是为新企业创建的第一个 SOA 治理平台。我们从无到有创建了这个产品,使其支持混合的环境,它会治理所有服务和 API,包括 REST、SOAP 和遗留的系统,现在你可以管理所有服务资产,不管它们是内部的还是外部的,在防火墙之后还是在云中,或是在单独的平台上。Anypoint 服务注册表让我们可以轻松地发现服务并对其分类,在整个生命周期中对其进行管理,分析使用数据,并执行策略和契约。

Anypoint API 管理器让我们可以快速、按照具体规模部署企业级的 API。它可以管理你基于云的 API,那可能运行在 CloudHub 上,或者使用 Anypont API Gateway 运行在你本地的私有数据中心上。为了让开发者参与并采用你的 API,你可以使用 APIhub——世界上最大的 API 目录和发布平台——创建自定义的开发者门户。

InfoQ: Anypoint 平台除了包含这些新产品之外,还包括了现存的一些产品和服务,像 Mule ESB、Cloudhub 和 API Connectors。Anypoint 平台表明 on-premise 和云是有清晰界限的,还是一个统一体呢?

RM:Anypoint 平台支持通过 API 与遗留系统、打包的应用、SaaS 应用以及移动设备进行端到端的连接。它是一个连接 on-prem 和云服务的平台,其中集成可以使用 Mule ESB 以 on-prem 的形式运行,或者在 Cloudhub 的云中运行,还可以以混合的方式运行。平台是为了整合新旧形式的统一体而构建的。你可以选择想要使用的部分。我们的客户中有做完整 on-prem 集成的、混合集成的,也有做仅针对云集成的。关键的区别在于 Anypoint 平台让开发者可以选择在哪里集成他们的应用程序,并在单独一个平台上支持混合的集成架构。

InfoQ: 在过去我们看到过基于 UDDI 的服务注册表,它只支持 SOAP web 服务,而新一代的 API 管理器,主要支持基于 REST 和 JSON 的服务。服务注册表位于两种极端情况的哪个位置呢?

RM:UDDI 完全以 SOAP 为中心,但它最大的问题就是,很多人都无法使用它。我们通过 Anypoint 服务注册表(ASR)采用了和其他注册表产品非常不同的方法。ASR 是从头进行设计的,专注于可用性和对用户的零摩擦。ASR 专注于运行时,并具有向活动的端点附加元数据以及产品的能力。对活动端点的管理意味着我们可以在运行时向端点增加行为。这些行为叫做策略,可以控制与端点请求相关的一切内容,像限流、安全性(认证和授权)、SLA、转换和虚拟化等。ASR 另一个独特的方面是,它是基于云的治理平台,让企业可以管理任何类型的服务(不仅仅是 web 服务),不管是 on-premise 的还是在云中的。所有企业使用的系统都有新有旧,还有各种奇怪的系统,我们尊重这一点,构建出一种能够在多样化环境中工作的解决方案。

InfoQ: 服务注册表只作为 SaaS 产品提供。这如何与 on-premise 服务的策略执行和服务分析协作呢? 你能告诉我们更多关于 Anypoint 内部的信息吗? 它是基于哪种代理,agent 还是 proxy 呢?

RM:Anypoint 服务注册表是一种混合架构,带有作为安全多租户云发布的管理程序和资源库;每个用户都会获得包含元数据和策略的独立模式(schema)。而运行时查找、策略和契约的执行、数据搜集以及执行都是通过 agent 在 on-premise 上发生的。应用程序的策略、跟踪和处理都是通过 agents 在 Mule servers on-premise 完成,或者通过在与 agents 通信的 CloudHub workers 上面完成,那些 agents 会通过唯一令牌进行路由。这种混合的 agent 方法支持其他方法所不支持的大规模和性能,因为调用不是通过中心代理路由的。agent 还提供了缓存层,以减少延迟,并提供一种安全的机制,如果与云服务器的连接中断,也可以离线工作。

InfoQ: 这对于服务虚拟化有什么好处呢?

RM:我们不需要在应用程序中硬编码端点的地址,而可以在运行时查询注册表,以基于元数据获得位置,这些信息可以缓存,当 Anypoint 服务注册表中发生变更的时候,新的策略可以被推送下去。缓存和推送通知都用于确保没有不必要的网络通信。

InfoQ: APIKit 包含了 Swagger。如果我使用 APIKit,Swagger 给了我们哪些立即可用的功能呢?

RM:Swagger 是一种和语言无关的规范和框架,用于定义服务接口,主要用于描述 RESTful 的 API。它专注于为 API 创建优秀的文档和客户端库。支持 Swagger 的 API 可以为 API 方法生成交互式的文档,让用户可以通过以可视化的方式试验,查看请求和响应、头文件和返回代码,从而发现 API 的功能。它本身就非常强大,但是 Swagger 框架还支持为多种流行的语言——包括 JavaScript、Python、Ruby、Java、Scala 等等——生成客户端代码。

InfoQ:REST 服务的 API 契约一直是一种热门的观念话题。你认为 Swagger 会超越 WADL 等方法为这个讨论下个定论吗,或者是根本不使用契约?

RM:我们认为 Swagger 是一种应该支持的良好规范。它的方向是正确的,并且拥有积极的团队和社区,而不是由一些厂商来掌管的。我们在 APIKit 和 APIhub 发布平台中都采用了 Swagger。尽管所有规范都有优势和劣势,但我们感觉 Swagger 已经很好,并提供了足够的价值,可以继续前行或者重新创建。Mule 团队和 Swagger 的成员合作,协作开发了规范的一些边缘功能,以覆盖某些与 API 定义相关的一般需求。

我们查看了 WADL,在过去实践过没有契约的方法,但是你意识到,随着 API 的数量暴增,需要一种更加结构化,而且低摩擦力的方法。使用 APIKit,你会根据 RESTful 规范来设计你的 API,并且我们会帮你处理版本管理、URL 格式化、安全性、Swagger 生成等工作。我们对 API 采用的是一种“rails”式的方法。

InfoQ: API 管理器将会在今年稍后发布。它会增加哪些新功能呢? API Manager 和服务注册表会互为补充,还是会应对完全不同的需求?

RM:在 Anypoint 服务注册表和 Anypoint API 管理器之间有一些类似的地方,但是 API 管理器更关注于外部的 API,例如:对公众、合作社区开放,或者只是和外部消费应用构建的开发 API。外部 API 为开发者提供了一个门户,让用户可以发现、测试和使用 API。这样,Anypoint API 管理器就有集成的功能,可以使用 APIhub 发布平台创建公有或私有的开发者门户。

API 管理器构建在服务注册表之上,并支持关于治理、虚拟化和策略执行的类似功能。渐渐地,我们看到,企业想要创建所有 API,就像它们都是外部 API 一样。这让架构师和开发者从客户的角度来思考所构建的 API,这是很好的现象。我们相信 APIkit 和 Anypoint API 管理器为企业 API 发展的方向提供了很好的蓝图。

2013 年 5 月 18 日 18:071884
用户头像

发布了 340 篇内容, 共 113.1 次阅读, 收获喜欢 4 次。

关注

评论

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

不要轻言放弃,阿里P8架构师分享十年学习生涯

Java架构师迁哥

就这一次,阿里大牛终于把困扰我多年的Spring Boot【入门+基础+进阶+项目实战】全部讲清楚了

神奇小汤圆

Java 编程 程序员 架构

我不懂区块链,但不影响我改变世界!

北熊老师

区块链 数字货币 太空猫社区联盟

Java开发项目模板16步快速搭建,拒绝重复性工作!

北游学Java

Java 项目 模板

ipfs挖矿多少钱一台?ipfs挖矿到底靠谱吗?ipfs投资有风险吗?

v:IPFS456

Filecoin IPFS挖矿值得投资吗 IPFS矿机多少钱一台 IPFS矿机投资靠谱吗 IPFS挖矿可靠吗

GitHub首次上线!华为顶级工程师手写的这份网络协议手册全面开源

Java架构之路

Java 程序员 面试 编程语言 计算机

SpringBoot-技术专题-教你使用Cache缓存组件

李浩宇/Alex

spring springboot cache 五月日更

音视频编解码流程与如何使用FFMPEG命令进行音视频处理

张音乐

音视频 ffmpeg

不可忽视的Dubbo线程池

互联网架构师小马

FIL币价格今日行情,FIL今日行情如何?

投资矿机v:IPFS1234

FIL币价格今日行情 FIL今日行情如何

「2021最新复盘」面试BAMT回来整理398道Java岗高频面试题,助你拿高薪offer

Crud的程序员

Java 程序员 架构 java程序员

新手学习微服务,得先看看这篇文章

Java架构师迁哥

去中心化、P2P、NAT浅析

IT酷盖

音视频 WebRTC 去中心化

天时地利人和—一个传奇操作系统的诞生记

兆熊

unix 历史

封神总结!蚂蚁金服+滴滴+美团+拼多多+腾讯15万字Java面试题

Java架构之路

Java 程序员 架构 面试 编程语言

分布式存储协议服务器多少钱一台?分布式存储协议怎么获取区块奖励?

投资矿机v:IPFS1234

分布式存储服务器多少钱 分布式存储获取区块奖励

架构设计模块3 - 消息队列架构设计文档

Presley

架构实战营

圆梦腾讯之后,我收集整理了这份“2021春招常见面试真题汇总”

周老师

Java 编程 程序员 架构 面试

Dubbo 动态配置中心

青年IT男

dubbo

从简历被拒到收割8个大厂offer,我用了3个月成功破茧成蝶

Java架构之路

Java 程序员 架构 面试 编程语言

架构实战营 模块二 作业

Pitt

架构实战营

牛逼!超级黑客用10部分讲明白Git (建议收藏)

Machine Gun

Java git

圆梦腾讯之路!6面阿里、5面字节、4面腾讯,终斩腾讯Offer

周老师

Java 编程 程序员 架构 面试

烂大街的Spring循环依赖该如何回答?

互联网架构师小马

【死磕JVM】看完这篇我也会排查JVM内存过高了 就是玩儿!

牧小农

JVM;

filecoin矿机一天收益多少?filecoin矿机2021各家的价格多少?

v:IPFS456

IPFS Filecoin IPFS挖矿值得投资吗 FIL矿机在哪里买 FIL矿机多少钱一台

Vue Router 10 条高级技巧

马士兵-苹果老师

技巧

字节一二三面,面经(已经OC)四月底真实面试经历!

Java大蜗牛

Java 程序员 面试 算法 后端开发

自研消息队列架构设计文档

小荷才露尖尖角

#架构实战营

比比看!Java时间和空间的复杂度算法,3分钟你能学会哪个?

java专业爱好者

Java

出游时,请继续戴好口罩

石云升

新冠疫苗 5月日更

2021 ThoughtWorks 技术雷达峰会

2021 ThoughtWorks 技术雷达峰会

采访Ross Mason:MuleSoft的新API平台-InfoQ