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