Ios 大型移动应用的服务器端数据接收使用哪些技术

Ios 大型移动应用的服务器端数据接收使用哪些技术,ios,Ios,各位飞越者 我们正在构建一个iOS应用程序,它将记录在特定时间必须发送回服务器的数据。服务器将不会向客户端发回任何数据,除非确认已成功接收数据。服务器上的处理负载可能会成为一个问题,因此我们希望设计服务器/客户机通信,以尽可能降低开销 1) 使用PHP将接收到的数据写入文件系统/数据库是否明智?它很容易维护,但可能比Glassfish中的Java应用程序(或者如果选择原始套接字连接,则是C中的“手工编码”服务器守护进程)效率低很多 2) 将接收到的数据直接写入MySQL数据库(在同一台服务器上运

各位飞越者

我们正在构建一个iOS应用程序,它将记录在特定时间必须发送回服务器的数据。服务器将不会向客户端发回任何数据,除非确认已成功接收数据。服务器上的处理负载可能会成为一个问题,因此我们希望设计服务器/客户机通信,以尽可能降低开销

1) 使用PHP将接收到的数据写入文件系统/数据库是否明智?它很容易维护,但可能比Glassfish中的Java应用程序(或者如果选择原始套接字连接,则是C中的“手工编码”服务器守护进程)效率低很多

2) 将接收到的数据直接写入MySQL数据库(在同一台服务器上运行)是明智的做法,还是您认为我们应该首先将数据写入文件系统,并将其异步解析到数据库以接收数据(即,在服务器有空闲资源时)

3) 更明智的做法是:使用HTTP或FTP之类的协议,或者构建我们自己的服务器守护进程,让客户端连接到套接字并在其上推送数据,如下面这个高度简化的示例所示:

SocketFD = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
write(SocketFD, theData, sizeOfTheData);
或者,正如Krumelur指出的,这可能不是服务器负载的问题


提前谢谢

这三个问题的答案取决于你的预算和工作量的严重程度

  • 我认为php不是一个明智的选择。如果你有时间和技能写一些东西,在C或C++或一些东西,我建议这样做。特别是因为这将提供线程控制。如果您的预算还没有达到那个水平,那么正如您所建议的,Java将是一个很好的选择,或者可能是Ruby或Python

  • 我建议使用sqlite在应用程序中存储数据。如果只有部分数据被发送,并且可以将该部分与其余部分分开,那么考虑将所有这些数据放在单独的SQLite DB中。你可以发送整个文件。如果您只需要一部分数据,并且非常关心服务器负载,那么我想您有两种选择。以太让应用程序创建一个sqlite文件,其中包含要传输和发送该文件的所有数据。或者只发送一个序列化数组

    首先,我认为您也应该在服务器端使用sqlite db,以简化从传入数据到db的解析过程。再想一想,这是个坏主意,因为sqlite不支持多线程,而且如果您的负载太大,这是不可取的

  • 为什么不使用WebSocket呢?大多数语言中都有可用的守护进程。您可以为每个希望发送数据的客户机打开一个套接字,而不是在有处理线程可用时发出绿灯“立即发送”。交通结束后,您将处理连接。但是,只有当请求的数量如此之大,以至于服务器必须处理如此之多的重新调度,以至于需要比Krumelur建议的更多的cpu时,这才是有效的


  • 我想知道您正在构建什么,以及它将如何产生如此巨大的服务器负载

    我看不出有什么问题。如果有很多用户点击你的服务器,它会变慢。我看不出使用的传输协议对降低CPU负载有多大影响?是否要避免多个用户同时启动CPU?如果是,则对其进行限制,或在x分钟内回答您的客户端重试。