+
 新版

netty服务器端怎么集群,能做到高可用?

zhaoxu841020 发布于 2019/05/19 22:17
阅读 9K+
收藏 4

最近有个项目,需要在远程设备上采集数据,设备上用c语言编写,服务端用java,由于设备比较多,服务端需要搭建集群,设备端是通过IP+端口的形式与服务端进行通信,那么设备端是如何与集群进行通信,负责均衡又是怎么实现的?先提前谢谢各路大神,项目比较急,求帮助!!

有人说用haproxy来做反向代理,但是客户端建立连接后,netty的通道就不对了

加载中
0
qq528
qq528
lvs dr模式
0
sprouting
sprouting

上面的大佬说 nginx 没用,我的想法其实就是部署多个tomcat运行netty,然后使用 nginx  来做负载均衡,不知道这样可行不可行,但是 netty 是做socket 通信,这样做代理可能会有问题吧。

 

开源肥牛饭
开源肥牛饭
其实没必要用tomcat,用haproxy代理tcp链路,netty应用本身也不用非要做成web项目。 用haproxy代理,负载到不同的子节点上,然后需要做的是记录每个session在哪个节点上,这么一个对应关系,这样下行数据发送的时候通过这个关系找到对应的session,或者是通过sessionID找session就可以了
zhaoxu841020
zhaoxu841020
主要是怎么保持设备和netty服务的通道问题,现在连接的都是代理的IP
0
君君要上天哈
君君要上天哈

可以用haproxy做代理啊。我们公司就是这么做的。

0
shijacky
shijacky

我说一下我的思路
1. 做分发服务, 每次客户端连接时,先去分发服务那拿一个连接地址,分发服务维护一个可连接的服务列表,以及每个服务的当前连接数,然后做一个负载均衡
2. 某个服务要重启时,有三种处理方式
   2.1 将某个服务标记为不可连接, 然后等这个服务上的所有旧连接断开后重启(这种适用于所有客户端连接都不会很长的方式,比如游戏,一个玩家上线后总会有下线的时候)
   2.2 直接重启服务,客户端收到断开事件后,重新连接,不需要提示给用户
   2.3 服务端下发一个新的地址,客户端收到后连接的地址,并且断开旧的连接
   后面这两种方式的优点时可以做到实时重启,缺点是需要客户端配合,但如果要做到高可用,还是需要客户端做重连处理会好一点,因为就算不是人为重启,有时服务出问题了也是需要重连的

三十回头
三十回头
分发服务中的连接地址 是怎么来的 该用什么技术 zookeeper吗
zhaoxu841020
zhaoxu841020
非常感谢
0
yongk
yongk

1. HAProxy能实现,不知“有人说用haproxy来做反向代理,但是客户端建立连接后,netty的通道就不对了”说的是什么。

2.前置加一个分发服务器,分发服务器需要知道后端Socket服务器的负载的,这样才能做路由算法,这里是有工作量的。

0
mickelfeng
mickelfeng

可以用consul或者etcd来做

0
M
Manik

兄弟,你的问题解决了么? 设备端是如何与集群进行通信,负责均衡又是怎么实现的? 我也困惑,第一次接触物联网

0
0
黑哈哈
黑哈哈

咱们的业务场景是一样的,请教一下是怎么实现的。

OSCHINA
登录后可查看更多优质内容
返回顶部
顶部