[关闭]
@liuhui0803 2016-04-16T09:18:09.000000Z 字数 6570 阅读 2075

使用Bluemix和混合云技术造就更健康的星球,第3篇

云计算 Bluemix 混合云


在这一系列文章中,我们将介绍一个在为公民提供所需医疗用品方面遇到挑战的虚构国家中发生的故事。我们会介绍云解决方案(IBM Bluemix®)和预测分析,以及移动和安全技术如何帮助他们应对挑战, 造就出一个更智能、更健康的星球。

本篇将讨论调度器应用程序,这是这一系列文章的第1篇所描述解决方案的一个组件。调度器应用程序可以使用Bluemix的Predictive Analytics服务调用第2篇所提及的需求预测组件。随后应用程序便可连接至后端订单管理系统,根据预测的需求下订单。该应用程序本身会使用Bluemix提供的Workload Scheduler服务定期检查最新预测的需求。为了在Bluemix上保存订单数据的本地版本,该应用程序会使用Bluemix提供的Cloudant NoSQL Database服务在本地操作数据库中存储订单数据的副本。

调度器应用程序概述

一起来看看调度器应用程序的组件:

此处输入图片的描述

调度器应用程序每周运行一次,生成需要在本周发货的订单并下单:

  1. Bluemix中的Workload Scheduler服务首先调用Predictive Analytics服务预测每个地区本周需要多少数量的某种物品。通常来说随后可以返回一个包含所有预测需要物品的清单。(关于该服务的详情请参阅第2篇。)Predictive Analytics服务会返回所请求的预测数量。
  2. 客户的订单管理系统(OMS)作为公开的API暴露出来。这是通过Bluemix中的API Management服务实现的。调度器会调用该服务,在客户内部部署的OMS中使用预测的数量创建订单。
  3. API Management服务通过Bluemix中的Secure Gateway服务连接至客户的OMS,此时需要建立到客户内部环境所需的VPN连接。(为简化本文内容,我们将跳过安全网关配置的详细信息。)随后调度器进程就可以使用Predictive Analytics服务的输出内容,通过API Gateway调用客户的OMS,使用预测的数据创建真实订单。
  4. 最后一步,Bluemix中的Workload Scheduler服务将预测的订单写入中央Cloudant数据库。医疗健康机构的员工可以通过移动设备读取这个数据库查看订单信息。这一过程将在第4篇中详细介绍。

构建调度器应用程序

本节将介绍如何创建:

  1. 调用客户内部部署OMS的API Management服务
  2. Cloudant数据库,订单将写入到这里,并且移动应用也需要使用该数据库
  3. 调度器,每周需要调用所有这三个端点:Predictive Analytics、API Gateway,以及Cloudant。

API Management服务

API Management服务的用途如下:

该服务确保了您可以对暴露给外部用户的API施加完整的控制权,例如版本控制和API生命周期管理、速率限制、安全、访问控制,以及用量和消耗量分析。

API管理包含下列主要构件:

创建API

若要新建API Management服务,请执行下列操作:

  1. 登录至Bluemix(或注册您的免费Bluemix试用)。
  2. 在Bluemix中添加一个API Management服务,让该服务保持未绑定状态。
  3. 打开该服务,点击底部的GO TO API MANAGER按钮。

此处输入图片的描述

  1. 在API选项卡下点击+标志,随后选择Compose。您可以从Swagger中导入API定义。本例中我们会循序渐进定义API。

此处输入图片的描述

  1. 输入下图所示的信息。其中的Base Path应为/oms/v1.0

此处输入图片的描述

  1. 点击Add
  2. 其余选项保留默认设置。但请注意:

    • 请留意Settings选项卡下的API是强制应用的,这意味着具体的主机名将覆盖API Management主机名。如果像本例一样不指定主机名,将默认使用网关的主机名。

此处输入图片的描述

此处输入图片的描述

请注意下列事项:

注意:在测试API之前,您需要将其加入规划,具体做法请参阅下文。

创建规划

  1. 从主页左侧打开Plan选项卡。
  2. 点击+ Plan按钮。
  3. 输入该规划的名称,例如“OMS Plan v1”。

此处输入图片的描述

  1. 点击+ Operation以便为规划添加操作。您可以从已创建的API中选择所需操作。
  2. 点击Save

测试API

  1. 通过API选项卡打开API页面。
  2. 点击刚才创建的API。
  3. 选择要添加到该API中的操作。
  4. 点击右侧的Edit按钮。

此处输入图片的描述

  1. 点击Test选项卡查看您的API调用。

此处输入图片的描述

  1. API管理功能会使用参数名映射URL中包含的所有参数。例如,如果您的API是

    /oms/v1.0/orders/17/region_x/product_x

    该API会映射至下列实施

    https://camss-sor-oms.mybluemix.net/orders/2015/5/region_x/product_x

  2. 输入希望在调用API时使用的参数值。

  3. 点击Invoke

创建环境

若要准备并发布API,您需要将其加入到环境中。

  1. 从主页左边栏打开Environments选项卡。
  2. 点击+ Environment
  3. 随后将使用默认名称添加一个环境。请更改环境名称,使其更为直观易懂,例如“沙箱”。

此处输入图片的描述

  1. 您还可以在这里更改访问该API的URL。此处可以使用默认值,因为您还将使用默认URL。
  2. 随后返回计划页面,点击Stage按钮并选择刚才创建的环境。

发布规划

  1. 打开左侧的Management选项卡。

此处输入图片的描述

  1. 在您的规划中,点击最右侧的Management按钮,随后点击Publish
  2. 选择Visible to PublicSubscribable by Authenticated users,这两个选项意味着任何在开发者门户上通过身份验证的用户都能订阅、使用,并消耗该API。

此处输入图片的描述

至此您的API已经发布,您可以通过下列地址访问:
https://<gateway_base_url>/<api_base_path>/<operation_path>
在本例中,完整的路径为:
https://api.apim.ibmcloud.com/ahmedaegibmcom-dev/sb/oms/v1.0/orders/week_x/region_x/product_x

注册以便以开发者身份使用该API

开发者可以使用开发者门户在API编录中浏览暴露出的API,并可订阅任何API以供自己使用。这些做法皆受制于API发布者所强制实施的访问规则。

  1. 在首页左侧的Management选项卡下点击Portal,随后可显示开发者的门户信息。
  2. 点击Basic Developer Portal下方的Portal URL。

此处输入图片的描述

随后,作为开发者,您需要加入门户才能使用该API。
3. 点击右上角的Join按钮。

此处输入图片的描述

  1. 输入您的信息并点击Join。您还需要使用IBM ID注册。
  2. 注册完毕后,使用您的IBM ID登录。

创建应用程序

  1. 作为该API的消耗方,您需要创建一个应用程序,获得所生成的客户端ID,然后在相应的规划中请求使用该API。这样可确保当您在请求参数中使用该客户端ID进行调用时,API管理网关可以批准您的访问。
  2. 在门户首页点击左侧的Application选项卡。
  3. 点击+ Application按钮。
  4. 为您的应用程序提供名称和描述。
  5. 随后您可以看到生成的客户端ID。点击Show并复制客户端ID以供通过工作负载调度器调用该API时使用。

此处输入图片的描述

  1. 随后为该AP规划添加新的客户端(应用程序):点击门户首页左侧该API的选项卡,随后可以在门户中显示该API的编录。
  2. 您会看到OMS API显示在编录中,该API可供通过身份验证的用户和开发者访问。点击该API。
  3. 通过右上角的按钮选择您想要订阅的规划。

此处输入图片的描述

  1. 点击Use this plan,随后会显示您作为开发者所创建的应用程序清单。选择刚才创建的应用程序。
    此处输入图片的描述

至此您已经可以通过客户端/应用程序,使用提供的客户端ID完整访问该API。

创建Cloudant数据库

  1. 在Bluemix中创建一个Cloudant NoSQL DB服务,但不要将其绑定至任何应用。您需要在第4篇使用MobileFirst容器时绑定该服务。
  2. 从Bluemix控制台打开该服务。
  3. 点击左侧的Service Credentials,记录这些信息,尤其是URL。随后您需要使用这些信息从工作负载调度器连接至Cloudant。
  4. 点击右上角的Launch按钮启动Cloudant控制台。
  5. 在Cloudant控制台中点击Add New Database添加一个新数据库。
  6. 输入orders_db作为名称并点击Create

创建Workload Scheduler服务

Workload Scheduler是负责在这些组件之间进行协调的服务。

  1. 在Bluemix控制台中创建一个Workload Scheduler服务,使其保持未绑定状态。
  2. 打开该服务并点击右上角的Launch Application Lab,打开用于管理工作负载调度器中所包含过程的控制台。

创建过程

  1. 点击My processes,这是默认的过程库。
  2. 点击+ New新建一个过程。
  3. 随后将创建一个默认过程。将其选中,并在页面底部的窗格中编辑其属性。
  4. General下方输入过程的名称,例如“Controller Process”。
  5. Triggers下新建一个触发器。触发器决定了运行过程的时间。在本例中,我们选择每周(周六)运行一次以创建该周的订单。

此处输入图片的描述

在下面的三小节内容中,您将为该过程添加三个步骤:

创建变量

您将通过下列步骤创建三个变量,分别代表对预测进行测试运行的周数,所预测订单对应的地区,以及所预测物品数量对应的具体产品。这三个变量将被读取到:

首先需要使用weekregionproduct为名称创建三个变量:

  1. 打开过程的Variables选项卡。
  2. 点击+ New
  3. 输入变量名称,将其类型设置为Text。输入要在测试中使用的默认值。

此处输入图片的描述

调用Predictive Analytics服务

  1. 点击+ Step添加一个新步骤。
  2. 选择步骤类型为RESTful,并选择默认引擎NG_CLOUD

此处输入图片的描述

  1. Action下方添加下列服务URI:https://palbyp.pmservice.ibmcloud.com/pm/v1/score/camss01
  2. 选择POST方法。
  3. 添加访问密钥作为查询参数。
  4. Output file name中输入predicted_orders.json作为名称。请记住这个名称,该名称还将充当下文"调用API Management服务"和"调用Cloudant服务"的输入内容。
  5. Body选项卡中添加下列JSON主体:

{"tablename":"file.csv", ​
"header":["delta_weeks","product","region"],​
"data":[[17,"product_x","region_x"]]}​

上述内容可获取预测的region_x地区第17周对product_x产品的需求数量。

  1. 点击OK

调用API Management服务

按照上文所述操作添加一个新步骤:

  1. 对于服务URL,输入创建订单操作的完整URL。例如,对于2015年的第2周:
    https://api.apim.ibmcloud.com/ahmedaegibmcom-dev/sb/oms/v1.0/orders/^week^/^region^/^product^
    该URL可用于读取这些变量中存储的默认值,并将其补充到URL中。
  2. 添加client_id作为查询参数,并提供您在第5步"创建应用程序"中通过开发者门户获得的值。
  3. Body中输入预测订单文件predicted_orders.json作为输入文件的名称。
  4. 点击OK

调用Cloudant服务

使用上述操作创建步骤,并为该步骤输入下列值:

  1. 服务URL输入:https://e19ea3a8-a128-45c7-aca7-b618af2b431f-bluemix:08f92225b5e54f9e2fb4e3f5eba2045b164f0cddbe340213233c8750c3743bce@e19ea3a8-a128-45c7-aca7-b618af2b431f-bluemix.cloudant.com/orders_db
    这是您在Cloudant Service Credentials中保存的URL,所连接的/orders_db是您在Cloudant中创建的数据库的名称。
  2. 选择POST方法以新建一个JSON文档。
  3. Body选项卡下添加predicted_orders.json作为输入文件的名称。

运行该过程

确保在Steps选项卡下,上文创建的三个步骤处于正确的顺序。

  1. 选择您创建的过程,点击顶部的Enable
  2. 随后该过程将被启用,并会根据您定义的触发器(每周一次)运行。如果要立刻运行以便进行测试,请点击Run now
  3. 打开该过程的History选项卡,查看运行结果。
  4. 双击运行记录以查看每个步骤的状态。
  5. 选择每个步骤并点击View Log以查看该步骤的日志。
  6. 打开Cloudant服务。您可以在Cloudant控制台中看到预测的订单已添加至Cloudant数据库。

结论

IBM Bluemix提供的服务可以帮您以安全的方式将Bluemix应用程序连接至后端系统。Bluemix API Management服务可供您将内部部署环境中系统的功能以API的形式暴露出来,并对API的访问进行控制。Bluemix Secure Gateway服务可对回连至后端系统的连接提供保护。此外,Bluemix提供的Workload Scheduler服务可供您对作业进行调度,以可配置的频率运行,借此实现自动执行的目的。

IBM Bluemix不仅可以用于IBM服务,还可配合其他开源服务使用,例如Cloudant NoSQL DB,该服务也可被其他Bluemix服务访问。Bluemix可支持业务组合这一原则,借此您可以根据新增或现有服务的具体组成,构建新的应用程序。

这一系列的第4篇文章将介绍移动访问和脱机操作。您将了解到如何通过移动设备读取Cloudant数据库借此查看订单。

作者:Ahmed Abbass、Ahmed Abdel-Hamid、Mohamed El-Kholy
阅读英文原文Making a healthier planet with Bluemix and hybrid cloud technologies, Part 3

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注