编写程序在服务器上运行,请求经验丰富的建议

Hea*_*eek 7 c

我正在开发一个需要在Internet服务器上运行的程序(一个后端组件将被多个跨平台程序使用).我熟悉要采取的安全预防措施(例如,防止缓冲区溢出和SQL注入攻击),但之前从未编写过服务器程序,或者在此规模上使用的任何程序.

该计划需要能够同时为数百或数千个客户提供服务.这些协议是为处理速度和最小化必须交换的数据量而设计的,服务器端将用C语言编写.将有来自相同代码的Windows和Linux版本.

问题:

  • 程序应该如何处理通信 - 多个线程,依次处理所有套接字的单个线程,或者为每个这么多的传入连接(或每个传入连接)产生一个新进程?
  • 我是否需要担心内存碎片等问题,因为这个程序需要一次运行几个月?
  • 对于桌面和移动系统的跨平台程序的经验丰富的开发人员可能没有意识到这些特定于此类编程的其他设计问题?

请不要使用其他语言的建议.我已经做出了这个决定,原因是我不能自由进入.

Ant*_*hon 2

根据我运行多台服务器超过 3 年正常运行时间的经验,以及运行时间仅一年多一点的程序,我仍然建议进行设置,以便系统从程序错误和服务器重新启动中正常恢复。

即使程序重新启动时性能会受到影响,您也需要能够处理该问题,因为外部环境可能会强制程序重新启动。

不要在不需要时尝试重新发明轮子,并查看Zeromq或类似的东西来处理传入通信的分发。(如果允许的话,可以使用比 C 更宽容的语言(例如 Python)对后端进行原型设计,然后重新实现C但保留通信协议)