木舟平台微服务构建指南
木舟平台是一个包含微服务和物联网平台的系统,基于.NET6.0软件环境下的surging微服务引擎进行开发。该平台支持异步和响应式编程开发,包含了物模型、设备、产品、网络组件的统一管理和微服务平台下的注册中心、服务路由、模块、中间服务等管理。此外,它还支持多协议适配(如TCP、MQTT、UDP、CoAP、HTTP、Grpc、websocket、rtmp、httpflv、webservice等),通过灵活多样的配置适配能够接入不同厂家不同协议的设备,并提供设备告警、消息通知、数据可视化等功能,能够帮助用户快速建立微服务物联网平台系统。
木舟平台分为微服务平台和物联网平台。本文将详细介绍在木舟平台下如何构建微服务。
构建服务
首先,需要创建服务接口,继承IServiceKey,并添加特性[ServiceBundle("api/{Service}/{Method}")]配置routepath。
接着,创建服务实例,继承ProxyServiceBase、ITestApiService、ISingleInstance。如果只是业务处理,只需继承ProxyServiceBase。继承ISingleInstance表示注入的生命周期为单例模式,添加特性ModuleName标识一个服务多个实例,可以在调用的时候传入ServiceKey。
身份鉴权
webapi调用必然会涉及身份鉴权和用户登录问题,而surging已经集成了一套jwt验证机制。在Stage配置节上配置ApiGetWay,接口方法上加上[Authorization(AuthType = AuthorizationType.JWT)]特性,服务调用就要进行身份鉴权。
缓存拦截
surging支持拦截缓存,可以通过ServiceCacheIntercept特性进行配置。获取缓存可以通过CachingMethod.Get,删除缓存可以通过CachingMethod.Remove。支持MemoryCache、Redis,可以支持一、二级缓存。启用EnableStageCache表示网关调用也可以走缓存拦截(注:不支持模型参数)。参数如果是非模型集合类型的参数,缓存key会取第一个参数值,如果是模型参数就需要添加CacheKey特性。
服务管理
平台支持服务路由管理,可以查看元数据、服务节点、服务规则,还可以在权重轮询负载算法情况下,改变权重可以让更多的访问调用到此服务节点上,还有可以优雅的移除服务节点。此外,还支持热部署中间服务和黑白名单功能,添加IP地址或者IP段就能限制相关IP访问。另外,支持swagger API文档。
分布式链路追踪
木舟平台支持skywalking分布式链路追踪。
构建发布
微服务发布时,需要引用的是微服务,不要引用stage。网关发布则需要引用服务接口和聚合服务(中间服务)模块,还有stage模块。
总结
以上是木舟平台如何构建服务。该平台预计于11月20日发布1.0社区版本,敬请期待。