This issue recommends the technical architecture design of iot device Gateway (Session management, heartbeat management, data uplink, data downlink) TCP Gateway.
Introduction
Technical architecture design of iot device gateway (Session management, heartbeat management, data uplink, data downlink)
Description
NioEventLoop is Netty’s Reactor thread and its role is
- Boss Group : used as the Acceptor thread of the server to accept client links and forward them to threads in the WorkerGroup.
- Worker Group : acts as an I/O thread and reads and writes packets from or to the SocketChannel.
- Task Queue/Delay Task Queue : Acts as a scheduled task thread to perform scheduled tasks, such as detecting link idle and sending heartbeat messages.
Summary
- TcpServer: provides TCP connection services
- TcpSessionManager: You can add listening events to listen for TCP session creation, destruction, etc.
- LogSessionListener: a log listener, which is associated with tcpSessionManager. The listener must first SessionListener
- TcpSender: TCP sender. The user sends message notifications to the client and implements downstream logic
- ServerConfig: TCP configuration management class
- TcpConnector: TCP container for managing connections between services and clients
- NotifyProxy: notifyproxy is sent to the proxy class
The above is the default configuration, you can not change, but you may need to change the TCP port
. Network structure of TCP gateway
Build a TCP gateway long connection container based on Netty, and serve as the gateway access layer to provide service API request calls.
The client accesses the TCP gateway through the domain name +Port. Different carriers with different domain names correspond to different VIPs. The VIPs are advertised on LVS, and LVS forwards the request to HAProxy on the back end, and HAProxy forwards the request to Netty’s IP+Port on the back end.
LVS forwards the request to HAProxy on the back end. The request passes through LVS, but the response is directly fed back to the client by HAProxy, which is the DR Mode of LVS.
TCP Gateway execution sequence diagram
where steps 1 to 9 refer to the creation sequence of the Netty server and steps 10 to 13 refer to the creation sequence of the TCP gateway container.
- Step 1 : Create an instance of ServerBootstrap. ServerBootstrap is the boot helper class of the Netty server.
- Step 2 : Set and bind the Reactor thread pool. EventLoopGroup is the Reactor thread pool of Netty. EventLoop is responsible for all channels registered with this thread.
- Step 3 : Set and bind the Server Channel. Netty Server needs to create the NioServerSocketChannel object.
- Step 4 : Create a ChannelPipeline when a TCP link is established. ChannelPipeline is essentially a chain of responsibility that responsibly executes ChannelHandler.
- Step 5 : Add and set ChannelHandler, add ChannelHandler to ChannelPipeline in serial.
- Step 6 : Bind the listening port and start the server, registering the NioServerSocketChannel to the Selector.
- Step 7 : Selector rotation training. EventLoop is responsible for scheduling and executing Selector polling operations.
- Step 8 : Execute the network request event notification, poll the ready Channel, and run the ChannelPipeline by EventLoop.
- Step 9 : Run the Netty system and service ChannelHandler, schedule and execute the ChannelHandler of ChannelPipeline in sequence.
- Step 10 : Invoke the back-end Service through Proxy. After the ChannelRead event, schedule the back-end service by transmitting.
- Step 11 : Create a Session. The Session and Connection are interdependent.
- Step 12 : Create a Connection and save the Connection as ChannelHandlerContext.
- Step 13 : Add a SessionListener that listens for events such as SessionCreate and SessionDestory.
Program run case step
1. Configure the local Host
Window address // C:\Windows\System32\drivers\etc\hosts
Add 127.0.0.1 iot-open.icloud.com
2. Start Server
< p data – track = “42” > location: com. Ibyte. Iot. Test. The server TestTcpServer < / p >
2. Start Client
< p data – track = “46” > location: com. Ibyte. Iot. Test. The client. The TcpClient < / p >