UDP 每秒发送接收100万条数据包,有什么好的解决方案??

100万条数据有顺序,每条数据包有相应的时戳进行延时控制。

单机做不了,得群集,可以用guid做标识,放入消息队列

//连接广播
UH.WebSocket.connect(AppConfig.wsUrl);

websocket.js:
var NetControl={
_sock:{}, //当前的webSocket的对象
_name : "socket",

setName: function (name) {
    this._name = name;
},

connect: function (url) {//新建socket对象
        this._sock = new WebSocket(url); 
        this._sock.onopen = this._onOpen.bind(this);
        this._sock.onclose = this._onClose.bind(this);//
        this._sock.onmessage = this._onMessage.bind(this);//收到广播消息
        this._sock.onerror = this._onError.bind(this);
},

_onOpen:function(evt){
    var key = name + "onopen";
    GlobalEventManager.emit(key, evt);

this.hasConnect = true;//已连接的标志
this.send("connect");
},

_onClose:function(evt){
    var key = name + "onclose";
    GlobalEventManager.emit(key, evt);       

if (this.hasConnect) {
//被动断开要重连
this.connect(AppConfig.wsUrl);
}
},

_onMessage:function(evt){
    var key = name + "onmessage";
    GlobalEventManager.emit(key, evt);

var jsonData = JSON.parse(evt.data);
if (jsonData) { //处理接受消息的逻辑 }
},

_onError:function(evt){
    var key = name + "onerror";
    GlobalEventManager.emit(key, evt);    

//被动断开要重连
this.reConnect();
},

send:function(msg){//手动发送message
    this._sock.send(msg);
},

close: function () {//手动关闭websocket
cc.log("Websocket close");
this.hasConnect = false;
if (this._sock) {
this._sock.close();
this._sock = null;
this._onClose();
}
},

reConnect: function () {//重连
    cc.log("Websocket reconnent");
    this.close();
    this.connect(AppConfig.wsUrl);
},

};

module.exports=NetControl;

通过消息队列做分布式集群吧

可以考虑kafka,一个分区内的消息都是顺序性的,不同分区没法保证顺序性。你这每秒100万的收发,只能做集群了,而且还得对数据进行分类。
数据包带时间戳且有精度要求,说明你的数据有时效性,队环境要求很高。

使用缓存消息队列加集群 读写分离 减少数据库的压力

那你为啥不考虑使用kafka,activeMq这些消息中间件