iPhone 应用程序与 AWS 服务器之间的通信
Communication between iPhone app and AWS server
tldr;如何在 AWS 服务器上获取一个程序来持续监听数据包?
我想构建一个 iPhone 应用程序来收集传感器数据并将该数据发送到服务器。当服务器有足够的传感器数据时,它会根据数据构建一个分类器并将该分类器发送给所有贡献的 iPhone 应用程序。我正在尝试在 AWS 上托管服务器。
我花了很多时间阅读有关数据流、tcp 协议、amazon ec2、amazon emr、apache spark、spark streaming、amazon s3、restful 接口、cron 作业、amazon vpc 等的内容,但我就是无法将各个部分拼凑起来。我只是不明白 iPhone 和 AWS 服务器是如何通信的。让我向您介绍一下我认为该应用程序应该如何工作。请纠正我思维过程中的任何错误,让我知道我应该如何做这些事情。
1) iPhone 应用程序收集一些传感器数据。
2) iPhone 应用程序使用 HTTP 或 TCP 将数据发送到 AWS 服务器。我该怎么做呢?我需要提供服务器的 IP 地址吗?
3) 服务器从 iPhone 中获取传感器数据。这是我真正感到困惑的地方。这是怎么发生的?我可以在 AWS 运行ning 上托管一个 Python 程序,无限循环检查数据包吗?我需要 运行 AWS 上的 CRON 作业吗?我需要在 EC2 节点上下载 Web 服务器吗?我可以使用 Spark Streaming 或 Amazon Kinesis 等第三方流媒体工具吗?基本上,如何让服务器端程序持续监听数据包?
4)服务器在有足够的数据时构造分类器。
5) 服务器使用 HTTP 或 TCP 将分类器发送到 iPhone 应用程序。
我觉得我缺少一些非常基本的东西。我的主要问题是我不明白服务器上的程序(特别是 AWS ec-2 节点或 AWS EMR 集群)应该如何侦听数据包。
您可以通过多种方式完成此操作。您可以 运行 网络服务器并将 iPhone 应用程序 post 连接到您的 Elastic Load Balancer。或者,您可以在 EC2 服务器上向 运行 编写一些其他类型的服务,这些服务器侦听 TCP 端口并且仍然使用 Elastic Load Balancer。
就我个人而言,我会设置一个 API 网关端点,它接收所有数据 posted 并将其添加到 Kinesis Stream. You can read about doing that here。然后,您可以在 EC2 实例或 Lambda 函数上使用 运行ning 服务来处理流数据。
关于服务器监听数据包的一般问题只是基本的服务器端编程。您在绑定到某个 TCP 端口的服务器上有一个服务 运行ning。然后服务 运行 是您在该端口上接收数据时将其配置为 运行 的代码。
如果您想摄取 Kinesis Stream,那么您可以使用 Kinesis Client Library 编写代码。或者您可以在一个或多个 Web 服务器上编写 运行 的 REST API。或者您可以编写绑定到服务器上特定端口的代码并侦听 TCP 数据包,但我不建议在那么低的级别上这样做。如果需要,您还可以让 API 网关将数据直接发送到 Lambda 函数。
最简单的选择是使用新的 Amazon Kinesis Firehose 服务:
https://aws.amazon.com/blogs/aws/amazon-kinesis-firehose-simple-highly-scalable-data-ingestion/
您只需创建一个传输流,将您的数据提交到流并将它们定向到 S3 存储桶。您还可以自动将数据加载到 Amazon Redshift。
tldr;如何在 AWS 服务器上获取一个程序来持续监听数据包?
我想构建一个 iPhone 应用程序来收集传感器数据并将该数据发送到服务器。当服务器有足够的传感器数据时,它会根据数据构建一个分类器并将该分类器发送给所有贡献的 iPhone 应用程序。我正在尝试在 AWS 上托管服务器。
我花了很多时间阅读有关数据流、tcp 协议、amazon ec2、amazon emr、apache spark、spark streaming、amazon s3、restful 接口、cron 作业、amazon vpc 等的内容,但我就是无法将各个部分拼凑起来。我只是不明白 iPhone 和 AWS 服务器是如何通信的。让我向您介绍一下我认为该应用程序应该如何工作。请纠正我思维过程中的任何错误,让我知道我应该如何做这些事情。
1) iPhone 应用程序收集一些传感器数据。 2) iPhone 应用程序使用 HTTP 或 TCP 将数据发送到 AWS 服务器。我该怎么做呢?我需要提供服务器的 IP 地址吗? 3) 服务器从 iPhone 中获取传感器数据。这是我真正感到困惑的地方。这是怎么发生的?我可以在 AWS 运行ning 上托管一个 Python 程序,无限循环检查数据包吗?我需要 运行 AWS 上的 CRON 作业吗?我需要在 EC2 节点上下载 Web 服务器吗?我可以使用 Spark Streaming 或 Amazon Kinesis 等第三方流媒体工具吗?基本上,如何让服务器端程序持续监听数据包? 4)服务器在有足够的数据时构造分类器。 5) 服务器使用 HTTP 或 TCP 将分类器发送到 iPhone 应用程序。
我觉得我缺少一些非常基本的东西。我的主要问题是我不明白服务器上的程序(特别是 AWS ec-2 节点或 AWS EMR 集群)应该如何侦听数据包。
您可以通过多种方式完成此操作。您可以 运行 网络服务器并将 iPhone 应用程序 post 连接到您的 Elastic Load Balancer。或者,您可以在 EC2 服务器上向 运行 编写一些其他类型的服务,这些服务器侦听 TCP 端口并且仍然使用 Elastic Load Balancer。
就我个人而言,我会设置一个 API 网关端点,它接收所有数据 posted 并将其添加到 Kinesis Stream. You can read about doing that here。然后,您可以在 EC2 实例或 Lambda 函数上使用 运行ning 服务来处理流数据。
关于服务器监听数据包的一般问题只是基本的服务器端编程。您在绑定到某个 TCP 端口的服务器上有一个服务 运行ning。然后服务 运行 是您在该端口上接收数据时将其配置为 运行 的代码。
如果您想摄取 Kinesis Stream,那么您可以使用 Kinesis Client Library 编写代码。或者您可以在一个或多个 Web 服务器上编写 运行 的 REST API。或者您可以编写绑定到服务器上特定端口的代码并侦听 TCP 数据包,但我不建议在那么低的级别上这样做。如果需要,您还可以让 API 网关将数据直接发送到 Lambda 函数。
最简单的选择是使用新的 Amazon Kinesis Firehose 服务:
https://aws.amazon.com/blogs/aws/amazon-kinesis-firehose-simple-highly-scalable-data-ingestion/
您只需创建一个传输流,将您的数据提交到流并将它们定向到 S3 存储桶。您还可以自动将数据加载到 Amazon Redshift。