iPhone应用程序和AWS服务器之间的通信

时间:2015-12-14 00:45:22

标签: ios amazon-web-services emr server-communication

tldr;如何在AWS服务器上获取程序以持续监听数据包?

我想构建一个收集传感器数据并将该数据发送到服务器的iPhone应用程序。当服务器有足够的传感器数据时,它会根据数据构建分类器,并将该分类器发送给所有有用的iPhone应用程序。我正在尝试在AWS上托管服务器。

我花了几个小时阅读有关数据流,tcp协议,amazon ec2,amazon emr,apache spark,spark streaming,amazon s3,restful interfaces,cron jobs,amazon vpc等等,但我不能把碎片放在一起。我只是不明白iPhone和AWS服务器是如何通信的。让我带您了解我认为该应用应该如何运作。请更正我思考过程中的任何错误,并让我知道我应该如何做这些事情。

1)iPhone应用程序收集一些传感器数据。 2)iPhone应用程序使用HTTP或TCP将数据发送到AWS服务器。我该怎么做呢?我是否需要提供服务器的IP地址? 3)服务器从iPhone获取传感器数据。这是我真的很困惑的地方。这是怎么发生的?我可以在AWS上托管一个Python程序,运行在无限循环中检查数据包吗?我是否需要在AWS上运行CRON作业?我是否需要在EC2节点上下载Web服务器?我可以使用像Spark Streaming或Amazon Kinesis这样的第三方流媒体工具吗?基本上,如何让服务器端程序持续监听数据包? 4)服务器在有足够数据时构造分类器。 5)服务器使用HTTP或TCP将分类器发送到iPhone应用程序。

我觉得我错过了一些非常基本的东西。我的主要问题是我不明白服务器上的程序(特别是AWS ec-2节点或AWS EMR集群)应该如何监听数据包。

2 个答案:

答案 0 :(得分:3)

您可以通过多种方式实现这一目标。您可以运行Web服务器并将iPhone应用程序发布到Elastic Load Balancer。或者您可以编写其他类型的服务以在侦听TCP端口并仍使用Elastic Load Balancer的EC2服务器上运行。

就个人而言,我会设置一个API网关端点,它会将所有数据发布到它,并将其添加到Kinesis Stream。你可以阅读有关here的信息。然后,您可以在处理流数据的EC2实例或Lambda函数上运行服务。

关于服务器侦听数据包的一般问题只是基本的服务器端编程。您在服务器上运行的服务绑定到某个TCP端口。然后,该服务运行您将其配置为在该端口上接收数据时运行的代码。

如果您想要摄取Kinesis Stream,那么您可以使用Kinesis Client Library编写代码。或者您可以编写在一个或多个Web服务器上运行的REST API。或者您可以编写绑定到服务器上特定端口的代码并侦听TCP数据包,但我不建议在较低级别执行此操作。如果需要,您还可以让API网关将数据直接发送到Lambda函数。

答案 1 :(得分:0)

最简单的选择是使用新的Amazon Kinesis Firehose服务:

https://aws.amazon.com/blogs/aws/amazon-kinesis-firehose-simple-highly-scalable-data-ingestion/

您只需创建一个传递流,将数据提交到流并将它们引导到S3存储桶。您还可以自动将数据加载到Amazon Redshift。