专栏首页使用Cloud Foundry来调整微服务API

使用Cloud Foundry来调整微服务API

[本文由John Wetherill撰写。]

最近的微服务博客中,我讨论了创建和管理访问库的做法,建议“微服务提供者应负责构建和管理用于访问服务的客户端库”。

在上周的Get Some REST文章中,我深入盘点了Cloud Foundry REST API。

在这里,我将把使用Cloud Foundry“cf”CLI端的虽然不是数据库本身但却是策划Cloud Foundry API的完美例证的两者联系在一起,并且也是一种直接应用于微服务API的技术。

Cloud Foundry REST API:简约却不简单

获取某些REST”文章显示了使用Cloud Foundry REST API将应用程序推送到Cloud Foundry所需的精确调用。该API的使用灵活,功能强大且相对直接,但正如我所提到的,它需要做出错误处理,解析响应,获取各种实体的GUID,压缩应用程序目录和其他低级工作。API方法虽然简单,但其实并不像看起来那么容易。当你真的想要部署你的应用程序时,你需要花费很多时间在管道上工作。

还有一个更简单的方法

比起前述种种,我们来看看这个如何:

     cf push

这个简单的命令调用了“cf”端,它负责处理上面的所有细节。它处理错误,处理身份验证令牌,解析和解释响应,创建zip文件,向PaaS查询所需的信息,如域指引。以及更多功能。

全部只需用一个命令。

管理模式

而这正是重点。“cf”命令是“调整”或“掌管”API的完美例子。虽然Cloud Foundry API功能强大且方便,但它们使用起来相当复杂,而在没有“cf”命令的情况下,任何想要使用此API的人都必须设置自己的访问实用程序或库。并保持它。并教育其他开发人员。随着基础API的发展,随着时间的推移而变化。

“cf”端提供了执行基本Cloud Foundry操作(例如推送应用程序)所需的各种API调用的标准包装。

对于大多数用途,最好使用cf工具与Cloud Foundry进行交互,而不是直接调用API。Cloud Foundry验收测试(或CAT社区)就是这样做的。这些测试可以确保Cloud Foundry自身的行为,而不是像调用低级别的REST调用那样直接包装cf命令。

这是大使模式

这种使用大使设计模式的管理方法。

一个大使要做什么?在现实生活中,大使是一个国家或国家的官方特使或代表,作为该国与外国政府的联络人。大使了解当地法律,语言,习俗,解决交流沟通问题,以及如何应对可能发生的事件和情况。如果游客需要帮助,那么通过大使而不是自己处理复杂问题要高效得多。

与此类似,cf命令充当Cloud Foundry(特别是其REST API)的特使,因为它了解如何与其通信,响应特殊情况,解释响应以及遵循Cloud Foundry特性(又名协议)。

这个比喻可能会让事情变得有些松懈,但重要的是,图书馆或者工具能够处理所有的细节,减轻开发者的担忧。

其他Cloud Foundry管理示例

“cf”命令不是Cloud Foundry可用的唯一访问库/实用程序。看看Java的cf端,通过Java允许相同的功能。

例如,下面是几行Java代码,它们调用(提供)cf Java客户端来输出每个空间的名称以及它所包含的组织:

for(CloudSpace space:client.getSpaces()){
   System.out.printf(“%s \ t(%s)%n”,space.getName(),
   。space.getOrganization()的getName());
}

请注意,Java客户端比cf cli稍低一点,因为它不提供单个调用来推送应用程序。也许更高级别的api被要求包装整个推送操作,但另一方面,也许不是:它足够简单地直接从Java调用“cf”cli客户端,并且如上所述,这是首选方法。

另一个值得关注的访问库是ActiveState的云代工客户端 JavaScript客户端。如果您想从浏览器中运行的应用程序管理Cloud Foundry,这个方法非常方便。像Java客户端一样,它还不具备直接推送应用程序的能力(Pull Requests welcome!),但它确实可以直接从JavaScript访问大多数Cloud Foundry功能。

所有这些:“cf”命令行客户端,Java客户端库和JavaScript客户端都是API管理的好例子,提供了一个高层次的低级操作包装,大多数开发人员不必担心。

开源吧!

我建议,如果可能的话,你开源你的访问库或实用程序。除了通常的开放源代码提供的许多好处之外,这允许API的消费者直接在源代码级看到API调用是如何进行的。

这有助于澄清规范的意图,在规范可能含糊或模糊的情况下。实际上,您正在为您的消费者提供参考实施,帮助了解规范,并避免分散和曲解。

这种方法的优点

管理API具有一些强大的优势,而不这样做就会有一些缺点。

单纯地要求您的服务的消费者/客户建立他们自己的访问库无疑增加了使用服务过程的负担,不过这是个只需通过构建您自己的访问库或实用程序即可轻松化解的入门障碍。

此外,如果您不管理您的API,则可以强制消费者编写自己的访问库。如果这样做的话,他们可能会误解你的规范,如果他们的访问库得到普及,其他消费者最终会依靠这种曲解,并出现存储残片。

无论如何,最好避免在社区中流传多种访问库和工具。

概要

微服务并不是什么新东西,但微服务的使用和意识最近已经膨胀到爆炸了。自然而然地,随着所有这些消息的曝光,许多微服务相关的模式和实践正在迅速发展。调整/掌管API是cf命令(以及stackato CLI也)精确体现的一个例子。

本文的版权归 用户1208077 所有,如需转载请联系作者。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 如何自动地将代码从Git平台部署至组件容器

    将源代码从Git平台部署至组件容器有很多种可以选择的方法,包括重新部署整个容器,通过卷即时重新部署,或者使用“git clone”的方法。但是,当这个过程自动化...

    用户1208077
  • xmake-gradle 首发, 集成xmake快速构建Android JNI程序

    目前在 gradle 中做 android jni 相关集成开发,有两种方式,通过 ndkBuild 或者 CMake 来支持,gradle 也内置了这两工具的...

    ruki
  • 大型网站架构系列:电商网站架构案例

    大型网站架构是一个系列文档,欢迎大家关注。本次分享主题:电商网站架构案例。从电商网站的需求,到单机架构,逐步演变为常用的,可供参考的分布式架构的原型。除具备功能...

    小莹莹
  • 使用Hybris Commerce User API读取用户信息时,电话字段没有返回

    在使用Hybris Commerce User API读取一个user信息时,我遇到一个问题,在API返回的结构里没有包含期望看到的Phone字段。

    Jerry Wang
  • IDEA 插件推荐: Cloud Toolkit 入门与评测

    IDEA 中有很多鬼斧神工的插件,在一次与中间件运营团队的同事的交流中了解到这款插件:“这款免费的 IDEA 插件可以有效地提升开发部署效率。”使用了一段时间之...

    kirito-moe
  • 拖拽式机器学习的爱与恨

    拖拽式机器学习是我想了很久的问题。 ? 1. 前世今生 拖拽式机器学习是,人们在界面上通过拖拽就是建立机器学习过程。拖拽式机器学习系统一...

    AlgorithmDog
  • VulnHub靶机渗透之DC:3

    这次练习的是DC系列靶机的第三个(一共6个)DC-3靶机下载地址https://download.vulnhub.com/dc/DC-3VMware.zip,有...

    光明SAMA
  • xmake从入门到精通1:安装和更新

    xmake是一个基于Lua的轻量级现代化c/c++的项目构建工具,主要特点是:语法简单易上手,提供更加可读的项目维护,实现跨平台行为一致的构建体验。

    ruki
  • Golang语言延迟函数defer用法分析

    本文实例讲述了GO语言延迟函数defer用法。分享给大家供大家参考。具体分析如下: defer 在声明时不会立即执行,而是在函数 return 后,再按照 FI...

    李海彬
  • 用Python使用C语言程序(Windows平台)

    前言 在机器学习中,很多时候我们需要Python和C的混合编程,最重要的原因是为了性能效率的提升: 解释型语言一般比编译型语言慢,一般提高性能的有效做法是,先做...

    用户1332428

扫码关注云+社区

领取腾讯云代金券