一、概述
有人奇怪为啥surging 宣布不更新,后面又更新了,又开发出木舟平台呢?我只能说有些事是命里注定,有些事情注定放弃不了,当你放弃的时候,会有客户花钱让你扩展更新,会有客户购买你的微服务引擎框架,甚至碰上叫你定制功能,给了代码,没给钱的,最近一年surging 就卖出去了10万,那为啥又开发木舟平台,是因为前年有个客户找我25万开发物联网平台,因为费用授权的关系,后面回绝了他,而后发现这是不是老天给我的机会呢?然后着手利用闲暇时间进行开发木舟物联网平台。现在平台初具雏形,几个月之后会推出稳定高效的微服务物联网平台。
木舟 (Kayak) 是什么?
木舟(Kayak)是基于.NET6.0软件环境下的surging微服务引擎进行开发的, 平台包含了微服务和物联网平台。支持异步和响应式编程开发,功能包含了物模型,设备,产品,网络组件的统一管理和微服务平台下的注册中心,服务路由,模块,中间服务等管理。还有多协议适配(TCP,MQTT,UDP,CoAP,HTTP,Grpc,websocket,rtmp,httpflv,webservice,等),通过灵活多样的配置适配能够接入不同厂家不同协议等设备。并且通过设备告警,消息通知,数据可视化等功能。能够让你能快速建立起微服务物联网平台系统。
那么下面就为大家介绍如何从创建组件、协议、设备网关,设备到设备网关接入,再到设备数据上报,把整个流程通过此篇文章进行阐述。
木舟物联网平台:http://117.72.121.2:3100
链路跟踪Skywalking V8:http://117.72.121.2:8080/
surging 微服务引擎开源地址:https://github.com/fanliang11/surging(后面surging 会移动到microsurging进行维护)
二、什么是微服务
微服务(Microservices)是一种软件架构风格,它将单一的应用程序拆分为多个小型服务,每个服务独立运行和部署,专注于特定的业务功能。这些服务通常拥有自己的数据存储,并通过轻量级的通信机制(如HTTP或RESTful API或消息队列)与其他服务进行交互。
对于以上概念很多人都很清楚,都背的滚瓜烂熟,甚至都可以谈到,服务注册、服务发现、负载均衡、服务熔断、服务降级、服务限流,RPC等方面的问题, 那么我今天就谈点实在的,让你区分真正意义上的微服务思想去构建解决方案,首先看下图:

通过上图我们可以把微服务分为 四种服务,接口服务,业务服务,聚合服务,中间服务
**接口服务:**就是对外业务接口服务,通过接口服务就能生成swagger文档服务,生成代理进行远程调用
业务服务: 业务服务它主要用于处理领域对象业务逻辑,是指在领域服务当中,对于业务实体通过数据仓储转化成数据模型,再映射到数据库的持久化处理。
**聚合服务:**就是远程调用多个业务服务,整合处理返回给终端,这里不包含任何的业务处理,只做数据整合。
**中间服务:**中间服务是跟业务无关,是对于组件的功能扩展服务, 比如EchoService就是框架自带的分流定位服务,还有对于协议组件的扩展服务。
三、网关
网关可以分为API网关和设备网关,功能包含身份鉴权,黑白名单,数据聚合,多种协议终端对接,路由转发。
身份鉴权:就是通过Token 进行身份认证。比如通过MD文件生成的身份认证对接说明,如下图:

黑白名单:通过设置IP,IP段来阻止或允许用户访问,如下图

**数据聚合:**就是驱动加载聚合服务,通过网关身份鉴权后统一访问。
多种协议终端:通过在设备网关中配置网络组件,消息协议就能生成终端协议对接
网络组件:

消息协议:

设备网关:

多种协议终端:通过在设备网关中配置网络组件,消息协议就能生成终端协议对接
路由转发:API网关在处理收到的请求时,会按照规则引擎配置的路由规则的优先级逐一进行匹配。匹配过程是从高优先级规则向低优先级规则进行遍历。如果与某条规则匹配成功,则转发请求至规则中配置的目标服务;如果匹配失败,则会返回404错误。如下图:

四、热部署模块
微服务需要满足热部署的功能,以满足业务或者功能升级带来的简便部署
上传业务模块:

上传消息协议模块:

五、链路跟踪

六、总结
最近平台更新需要延期,这边有客户定制需求,需要先解决客户的问题后再继续完善木舟平台。