使用大量mysql更新处理套接字连接的最佳方式



Js是单线程的,所以我有用socket io连接的车辆。所以这些车辆会每隔一秒或更短的时间发送位置,并用它和一些东西更新MySQL。有什么更好的方法来做这些重负载的事情?像Node.Js应该是单线程的,而我在同一个Node.J进程中有很多东西,所以我认为这可能很糟糕?Python更好吗?就像可能有2个服务器1个节点2个python我不知道该怎么办,哪个更好?如果我没有提到的东西比这些更好,请像java或smth一样提到它,有什么想法吗?

首先,你必须知道你是开发人员,你必须选择满足你需求的东西。

不管怎样,让我们谈谈我对这件事的看法。

如果您想创建高负载实时服务器,您必须了解多线程无阻塞套接字

为什么选择多线程在自己的线程中处理作业。好吧,这看起来很容易,但不是!你必须知道如何共享和管理线程。在服务器上创建许多线程会造成错误和过载,所以您需要正确地管理它们。例如,如果您有许多数据库更新,最好将这些作业放在队列中并一个接一个地执行,但不要为每个作业创建一个新线程。当然,这些事情中的许多都是在库的低层处理和实现的。

为什么没有阻塞套接字使服务器通信异步。它可以与第一部分(多线程(相关。如果你使用阻塞套接字,你需要为每个套接字打开一个新的线程来读取消息(也许你会锁定其他线程来发送数据包…(,所以如果你有1000个并发客户端,你需要1000个线程!太糟糕了。另一方面,我们没有阻塞套接字,您可以在一个线程中处理许多连接(相关问题(。

哪种编程语言实时服务器性能是个大错误。解释语言可能会带来性能问题,我更喜欢使用编译后的编程语言,如Java、C、Go和。为了更好地体验多线程,您可以使用GOErlang,它们有自己的轻线程,并处理异步操作,如同步操作。我们可以说,这些lang关心线程如何创建、共享和。

请记住,有很多工具可以处理这类工作。即使你想自己动手开发,使用这些工具来帮助你实现你的概念也不是一个坏主意。

如果您使用java:

网络(传输库(,

Hazelcast(集群(故障容限-水平规模和…((,

Kafka(消息代理(,

卡塞德拉(db(,

而且。。。

最后一句话:就这么做吧。

最新更新