2015-12-14 147 views
1

tldr;您如何在AWS服務器上獲得程序來持續監聽數據包?iPhone應用程序和AWS服務器之間的通信

我想構建一個收集傳感器數據並將該數據發送到服務器的iPhone應用程序。當服務器有足夠的傳感器數據時,它會根據數據構造一個分類器,並將該分類器發送給所有貢獻的iPhone應用程序。我正嘗試在AWS上託管服務器。我已經花了幾個小時閱讀關於數據流,tcp協議,亞馬遜ec2,亞馬遜emr,apache spark,spark spark,amazon s3,restful接口,cron作業,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集羣)是如何監聽數據包的。

回答

3

有很多方法可以實現這一點。您可以運行Web服務器並將iPhone應用程序發佈到Elastic Load Balancer。或者您可以編寫一些其他類型的服務在EC2服務器上運行,這些服務器在TCP端口上偵聽並仍然使用Elastic Load Balancer。

就我個人而言,我會設置一個API網關端點,將所有數據發佈到它並將其添加到Kinesis Stream。你可以閱讀關於做這個here。然後,您可以在EC2實例或Lambda函數上運行處理流數據的服務。

有關偵聽數據包的服務器的一般問題只是基本的服務器端編程。服務器上運行的服務綁定到某個TCP端口。然後,該服務運行您配置其在該端口上接收數據時運行的代碼。

如果您想攝取Kinesis Stream,那麼您可以使用Kinesis Client Library編寫代碼。或者你可以編寫一個運行在一個或多個Web服務器上的REST API。或者你可以編寫綁定到服務器上的特定端口並監聽TCP數據包的代碼,但我不建議在低級別上執行它。如果需要,您也可以讓API網關將數據直接發送到Lambda函數。

相關問題