最近有个项目,需要在远程设备上采集数据,设备上用c语言编写,服务端用java,由于设备比较多,服务端需要搭建集群,设备端是通过IP+端口的形式与服务端进行通信,那么设备端是如何与集群进行通信,负责均衡又是怎么实现的?先提前谢谢各路大神,项目比较急,求帮助!!
有人说用haproxy来做反向代理,但是客户端建立连接后,netty的通道就不对了
最近有个项目,需要在远程设备上采集数据,设备上用c语言编写,服务端用java,由于设备比较多,服务端需要搭建集群,设备端是通过IP+端口的形式与服务端进行通信,那么设备端是如何与集群进行通信,负责均衡又是怎么实现的?先提前谢谢各路大神,项目比较急,求帮助!!
有人说用haproxy来做反向代理,但是客户端建立连接后,netty的通道就不对了
上面的大佬说 nginx 没用,我的想法其实就是部署多个tomcat运行netty,然后使用 nginx 来做负载均衡,不知道这样可行不可行,但是 netty 是做socket 通信,这样做代理可能会有问题吧。
可以用haproxy做代理啊。我们公司就是这么做的。
我说一下我的思路
1. 做分发服务, 每次客户端连接时,先去分发服务那拿一个连接地址,分发服务维护一个可连接的服务列表,以及每个服务的当前连接数,然后做一个负载均衡
2. 某个服务要重启时,有三种处理方式
2.1 将某个服务标记为不可连接, 然后等这个服务上的所有旧连接断开后重启(这种适用于所有客户端连接都不会很长的方式,比如游戏,一个玩家上线后总会有下线的时候)
2.2 直接重启服务,客户端收到断开事件后,重新连接,不需要提示给用户
2.3 服务端下发一个新的地址,客户端收到后连接的地址,并且断开旧的连接
后面这两种方式的优点时可以做到实时重启,缺点是需要客户端配合,但如果要做到高可用,还是需要客户端做重连处理会好一点,因为就算不是人为重启,有时服务出问题了也是需要重连的
1. HAProxy能实现,不知“有人说用haproxy来做反向代理,但是客户端建立连接后,netty的通道就不对了”说的是什么。
2.前置加一个分发服务器,分发服务器需要知道后端Socket服务器的负载的,这样才能做路由算法,这里是有工作量的。
可以用consul或者etcd来做
兄弟,你的问题解决了么? 设备端是如何与集群进行通信,负责均衡又是怎么实现的? 我也困惑,第一次接触物联网
我也是
咱们的业务场景是一样的,请教一下是怎么实现的。