回页首
Watson IoT Event Recorder 应用程序(示例代码)创建了一个 Cloudant NoSQL DB,并在发布设备事件时将它们实时存入到该数据库中。本文将使用共享订阅功能,在某个应用程序实例无法适应公布的信息的数量时分担负载。请参阅此文章了解有关共享订阅的更多信息。
本文的 示例代码 是用 Python Client Library for IBM Watson IoT Platform 编写的,简化了与 IBM Watson IoT Platform 的交互。Python Client Library for IBM Watson IoT Platform 根据用户为属性“type”设置的值启用了共享订阅支持。当“type”属性设置为“shared” 时,会在共享预订模式下连接应用程序,否则会在独立模式(默认行为)下建立连接。为了启用共享订阅支持或可扩展的应用程序支持,该库在内部以 “A:org_id:app_id”的形式采用客户端 id,其中
本文是为 Windows 平台编写的,但也可以在其他平台上应用。
回页首
打开一个命令提示符,并逐个安装以下 python 模块:
pip install ibmiotf pip install cloudant pip install bottle
(备注:在目录 $Python_Home/Scripts 下可以找到 pip 可执行文件。例如,C:/Python35/Scripts)
回页首
创建 Cloudant NoSQL DB 来存储设备事件
1. 转到Bluemix。如果已是一名 Bluemix 用户,请像平常一样登录。如果您对 Bluemix 不熟悉,那么可以通过注册获得一个免费 30 天的试用版。
2. 在 Bluemix 应用程序中,单击“CATALOG”选项卡。
3. 选择“Cloudant NoSQL DB” 服务。(备注:如果无法找到该服务,可以使用搜索框,如下所示。)
4. 为您的服务键入一个名称并单击 Create 按钮。
5. 导航到 Service Credentials 选项卡,如下所示,并记下用户名和密码,稍后从 python 模块连接到 Cloudant DB 服务时需要使用它们。
6. 导航到 Managed 选项卡并单击 Launch 按钮来访问 Cloudant DB,如下所示。
回页首
本节假设 Watson IoT Organization 已经设置好了,并且有一个或多个设备正在向它发布事件。请参阅文章共享订阅,了解如何设置 Watson IoT Organization 和发布设备事件。
1. 打开一个命令提示符并下载 IoT Event Recorder python 模块。
https://raw.githubusercontent.com/ibm-messaging/iotf-recorder-py/master/record-cloudant.py
2. 通过输入您的组织 ID、应用程序的 API 密钥和身份验证令牌来创建一个 app.cfg 配置文件,如下所示:
[application] org=<Your Organization ID> id=<Unique application id> auth-method=apikey auth-key=<Your Organization's API Key> auth-token=<Your Organization's API Token> type=shared
(type 必须设置为 shared,以便在共享订阅模式下运行应用程序)
3. 通过指定以下命令来运行示例代码:
python record-cloudant.py -c app.cfg -u <username> -p <password>
(备注:必须使用前一小节中记录的用户名和密码替换此处的用户名和密码。)
4. 回到浏览器并刷新 Cloudant DB 页面,您会观察到,已经创建了一个叫做 $org-events 的数据库名称,并且已经存储事件。
5. 打开数据库来查看一个或多个事件。
回页首
您可以通过将多个设备连接到组织来增加负载,但这需要启动 Event Recorder 应用程序的更多实例来分担负载。
1. 当 Event Recorder 的第一个实例在第一台服务器中运行时,从另一台服务器使用相同的 app.cfg 文件和相同的命令运行 Watson IoT Event Recorder 的另一个实例。
python record-cloudant.py -c app.cfg -u <username> -p <password>
(确保 app.cfg 文件不被修改。为了实现负载平衡,必须使用相同的 id 来连接到 IBM Watson IoT Platform。)
2. 您会观察到,现在已在两个应用程序之间分担负载。
3. 您可能需要做一些实验来了解获得最佳负载平衡需要使用多少个应用程序实例。