1.6 云和物联网
1.6.1 云
今天,越来越多的计算是在“云”中完成的,即在遍布全球范围内的Internet上完成。我们每天使用的很多APP都依赖基于云的服务,这些服务会使用大量的计算资源(计算机、处理器、内存、磁盘驱动器等)和数据库,这些资源和数据库之间以及它们与APP之间要通过Internet进行通信。通过Internet提供访问自身的服务称为Web服务。通过Python使用基于云的服务通常非常简便,只需创建软件对象并与之交互即可。该对象会根据具体操作连接到云并使用相应的Web服务。
在第11~16章的示例中,将用到以下基于云的服务:
- 在第12章和第16章中,将使用Twitter的Web服务(通过Python的Tweepy库)获取特定Twitter用户的信息,搜索过去七天的推文并在有新的推文出现时实时接收推文流。
- 在第11章和第12章中,将使用Python 的TextBlob库进行文本翻译。TextBlob会借助Google Translate Web服务来完成这些翻译工作。
- 在第13章中,会用到IBM Watson的文本转语音(text to speech,即语音合成)、语音转文本(speech to text,即语音识别)和翻译(Translate)服务。我们将设计一个旅行者翻译伴侣APP,该APP能够将我们说出的英文语音转录为文本,再将英文文本翻译成西班牙语并朗读出来。同样,我们也可以通过这个APP将对方回复的西班牙语(如果不会说西班牙语,我们会提供音频文件供测试使用)语音转录为文本,再将文本翻译为英语并用英语朗读。除此之外,在第13章中还将在IBM Watson示例中尝试许多其他的基于云的Watson服务。
- 在第16章中,当使用Apache Hadoop和Spark实现大数据APP时,将会用到Microsoft Azure的HDInsight服务和其他Azure Web服务。Azure是Microsoft的一组基于云的服务。
- 在第16章中,将使用dweet.io Web服务来模拟一款通过Internet在线发布温度读数的恒温器,还将使用基于Web的服务来创建一个“仪表板”,以实时可视化温度读数,并在温度过低或过高时发出警告。
- 在第16章中,将使用一个基于Web的仪表板可视化来自PubNub Web服务的模拟实时传感器的数据流,还将创建一个Python应用程序,对PubNub模拟的实时股票价格变化流进行可视化。
在大多数情况下,我们会创建一个Python对象来与Web服务进行交互,隐藏通过Internet访问这些服务的细节。
mashup
我们将在IBM Watson旅行者翻译伴侣APP中采用mashup应用程序开发方法,这样可以通过将补充型Web服务和其他形式的信息源进行组合(通常是免费的)来快速开发功能强大的应用程序。最早的mashup之一是将http://www.craigslist.org提供的房地产列表与Google提供的地图绘制功能相结合,提供显示特定区域内待售或出租房屋位置的地图。
ProgrammableWeb(http://www.programmableweb.com/)提供了超过20,750个Web服务和近8,000个mashup的目录,还提供了使用Web服务和创建mashup的操作指南与示例代码。该网站指出,Facebook、Google Map、Twitter和YouTube是目前使用最广泛的网络服务。
1.6.2 物联网
Internet不再只是一个计算机构成的网络,而是一个物联网(IoT)。这里的物可以是任何对象,只要该对象拥有IP地址,并且可以通过Internet自动发送或接收数据。这类物包括:
- 带有可以支付通行费的装置的汽车;
- 车库的停车位监视器;
- 植入人体的心脏监护仪;
- 水质监测器;
- 可以报告电力使用情况的智能电表;
- 辐射探测器;
- 仓库中的物品跟踪器;
- 可跟踪人体运动和位置的移动应用;
- 可以根据天气预报和家中的活动自动调节室内温度的智能恒温器;
- 智能家电。
据statista.com报道,目前已有超过230亿台物联网设备投入使用,到2025年预计会有超过750亿台物联网设备[1]。
[1] https://www.statista.com/statistics/471264/iot-number-of-connected-devices-worldwide/.