最近正忙于搬家,面试,整理团队开发计划等工做,因此没有什么时间登录我的公众号,今天上线看到有粉丝想了解下Netty结合通用SSM框架的案例,因为公众号时间限制,我不能和此粉丝单独沟通,再此写一篇手记分享下。面试
对于Netty大体以为是迈向中级开发的必备通讯框架,它是轻量级的,且其架构的演进也是至关的出色。对于更多的Netty基础知识我也在去年开发中作了记录,你们能够阅历公众号历史查看Netty相关技术知识,案例项目是我主导开发的上一个大型项目,相似共享充电宝的共享应用,一样主体是小程序,而其中硬件中,嵌入式选用单片机做为主体开发,我则在IOT与Netty中纠结,最后选用Netty也是大部分通讯架构都是基于Netty进行重构设计的,相似京东内部应用通讯架构也是Netty为基础。数据库
Netty与传统的通讯架构不同,它采用了双层概念,这是我本身身实现都的一种白话型理解,两个工做流或容器(ChannelGroup)一个来处理链接实例,一个来处理正在链接通讯。小程序
使用Netty个人容器能够仅开启监听一个端口,以后的链接通讯均交给Netty来实现,固然通讯的数据格式也要统一,帧头、帧尾、加密(项目采用CRC16)等等。架构
以上是真实项目的netty包下的目录截图,一些基本工具类是为了解密与双向通讯发送的实现,因为单片机使用TCP,因此咱们要自定义一个TCP的Handler,加入Netty的handler链中,心跳机制就多说了,主要还有Db层,这是用于在接收到数据,当即进行数据库的读写操做,因为项目自己使用MyBatis做为数据的持久层,可是在Handler中并不能很好的处理,因此我使用了原生的数据库链接,并在数据通讯的不一样类型中,使用线程来执行数据库操做。框架
如上图的示例,还有就是连接对象的惟一性,channelId与channel自己的对应要作好处理,我使用了全局的map来收集,并作了防御机制,同一channel示例,若是连接成功后,出现不一致的channelId发送信息时,系统会自动断开此危险连接。工具
对于netty的使用还不是很深刻,还须要更多的反复推敲,但愿这位朋友能够有所收获或有什么问题从新与公众号联系。加密
关于本项目案例的源码,我须要必定时间进行部分抽离,毕竟netty在本项目中只是通讯的小部分,还有不少模块不能彻底分享出来,涉及商务信息保密,请见谅。线程