Home » go » 随笔 » 基础TCP&HTTP微服务架构设计

基础TCP&HTTP微服务架构设计

针对当前的物联网服务的大力使用,以及业务层的微服务化,我们在处理大多出NB-IOT的物联网服务,我们经常遇到硬件端采用的是TCP链接,链接到服务器,然后自定义协议来与服务器通信,完成硬件到后台服务器的链接,同时我们可能又需要部署多节点,多台机器的集群.采用k8s集群管理和部署。

针对HTTP层,自然都采用以模块化的形式输出类似用户中心或者购物车中心之类的微服务,同样也是采用k8s的集群化管理。

那么对于HTTP层到TCP层的控制,可能我们最重要的就是发部分控制指令来控制硬件的开关或者配置。

这时候的难点就在于,我们两边都是集群的方式,我们如何去找到某个SN的硬件链接的TCP服务器,并且正确的处理完业务逻辑后,封包发送到TCP层硬件锁链接的node节点?

对于目前的业务形态,可能我们就需要分层来处理,每一层的需求,一下是我根据我目前的经验分层:

1.TCP层,只负责处理TCP层的链接,收发完数据后,把数据发送到相应的worker业务端处理后端逻辑

2.worker层,只负责处理业务逻辑,封包逻辑,封包完后,发送到相应的TCP端,TCP端负责发送到硬件。或者是收到硬件的上报的数据,解析处理,处理完成后,针对不同的需求做推送,或者更新存储的数据。同时处理上层HTTP端发来的请求,封包发送到硬件,完成基本的配置。

3.HTTP层,负责提供处接口,供来自网页端,或者APP端,微信这类的第三方的调用,然后完成签名校验后,发送消息到worker端,worker负责封包发给硬件,完成上层业务到硬件端的配置调用。

4.所有的层与层之间的通信,可以通过MQ集群来实现异步的通信过程

5.worker端功效路由的问题,我目前是采用了redis的存储来共享路由信息,worker端处理完成后,通过redis读取路由信息,然后根据相应的路由信息推消息到相应的TCP端监听的MQ队列。TCP 的MQ队列收到消息后,将最后的封包发送到对应的硬件,完成整个链路的通信处理。

smallService

 

使用或者转载本问相关内容,请注明出处,并告最原始作者。