进行物联网开发的同学们应该会了解,为了保持与大量物理设备之间的长连接,作为master与物理设备之间的通讯中转站,减轻master的压力,同时做到master集群的负载均衡,网关的作用是非常大的,尤其是高并发状态下。今天为大家介绍的这款入选 Gitee GVP 的开源项目就是针对这种情况研发,一起来看看吧。
项目名称:IOTGate
项目作者:於之
开源许可协议:GPL-2.0
项目地址:https://gitee.com/willbeahero/IOTGate
项目简介
IOTGate是基于netty实现的支持多规约物联网设备同时接入的一个“物联网智能网关程序”。
项目功能架构图
优势和缺点
优点
- 部署灵活:IOTGate既可以单节点部署,又可以多节点集群部署,因此可以根据接入的终端数量灵活决定需要部署IOTGate的节点数量!
- 多规约:目前IOTGate应该是开源社区里面第一个实现多规约支持的物联网网关程序了,我这里所说的规约,不是tcp和upd,而是规定了各个物理设备所传输数据的格式的规约,如果不清楚的建议百度一下。至于如何实现多规约配置,后续教程会详细说明
- 并发能力不俗:由于IOTGate基于netty开发,可谓站在巨人肩膀上了,使用netty作为底层通讯组建的项目太多了,比较出名的如:RocketMQ,DUBBO等,其消息处理能力都很厉害,虽然自己比不上如斯大牛,但用自己笔记本测试了一下,并发能力能达到6000+。
缺点
- 其对运行内存要求比较高点,8000并发访问时,建议内存分配1G起步,512M的话,我看了下jvm,fullgc会比较频繁!
命令行参数说明
如何启动
自行将项目打成jar包,在linux下,执行java -jar iotGate.jar -n 1 [args...] 默认前置端口为8888,可自行源码中修改。
- 单机方式启动 :命令行参数使用“-m”指定前置服务地址
- 集群方式启动:命令行参数“-c”开启zookeeper集群模式,“-z”指定zookeeper集群的地址(逗号分隔)
- 单机版网关不支持IOTGateConsole控制台动态维护,因为IOTGateConsole的节点发现依赖于zookeeper,集群版网关无论节点多少依然可以通过IOTGateConsole管理
如果你对项目更多的部署方式和详细信息感兴趣的话,那就点击后面的链接,前往项目主页看看吧:https://gitee.com/willbeahero/IOTGate