surging 开源地址:https://github.com/dotnetcore/surginghtml
随着业务的发展,并发量的增多,业务的复杂度愈来愈大,对于系统架构能力要求愈来愈高,这时候微服务的设计思想应运而生,可是对于微服务须要引擎进行驱动,这时候基于.NET CORE 的微服务引擎surging 就诞生了。git
1.那么怎么样去理解微服务呢?github
微服务是针对业务的松耦合,是对于业务的解耦,也是粒度最小的功能业务模块,对于本地和远程的抽象化,对于远程调用提供了服务治理保证了可靠性通讯。算法
2. 那么什么是微服务引擎呢?docker
微服务引擎是微服务的容器,是扫描或引用加载业务服务模块驱动生成服务提供者,针对于行业解决方案,集成相应的service host,而针对于业务须要一些中间件来辅助,好比缓存中间件,eventbus中间件(消息中间件),数据储存中间件,而各个服务又可 以互相经过rpc进行可靠性通讯。api
3. 是否是须要有非微服务不可的心态去重构系统?跨域
微服务是针对于业务的松耦合,是针对于调用的抽象,因此相关复杂的系统均可以使用微服务的设计思想去重构,可是团队对于微服务把握不到位的话,我建议仍是使用SOA去设计系统,后面可使用k8s作服务治理。缓存
4.那么surging 又能作什么呢?安全
针对于以上描述,咱们再来看看surging 2.0 新提供的stage组件,在引擎中又有什么做用呢?网络
5. Stage(关卡)组件介绍
stage 从字面翻译是关卡,阶段。而取名设计的目的是经过这个阶段关卡就能进行下一个阶段的访问。其做用针对于对外访问,其功能有路由转发,鉴权,第三方调用,服务聚合网关,中转服务。
1.swagger与stage同时使用
swagger组件能够经过加载的业务接口在线生成API文档,这样能够给开发人员进行测试和调试,那么配合stage组件使用就能够针对鉴权服务进行测试。
设置jwt 鉴权
[ServiceBundle("api/{Service}/{Method}")] //[ServiceBundle("api/{Service}")] //[ServiceBundle("api/{Service}/{Method}/test")] //[ServiceBundle("api/{Service}/{Method}/test",false)] public interface IUserService: IServiceKey { [Authorization(AuthType = AuthorizationType.JWT)] Task<int> GetUserId(string userName); }
经过设置HttpPort 或者stage 的HttpsPort和HttpPort,就能经过相关端口访问,默认是280,而后能够经过http://127.0.0.1:280/swagger/index.html就能访问
2.服务聚合和中转服务
针对于第三方或者移动端调用,须要作服务聚合,以知足业务结果返回的须要, 这个时候就可使用stage组件了
注:
3. 文件服务
经过引用stage 组件,而后设置Policy配置就能跨域进行文件上传和下载功能,并且文件服务能够水平扩展部署
须要按照如下代码进行编码,最主要是注意参数和返回结果类型
[ServiceBundle("api/{Service}/{Method}")] //[ServiceBundle("api/{Service}")] //[ServiceBundle("api/{Service}/{Method}/test")] //[ServiceBundle("api/{Service}/{Method}/test",false)] public interface IUserService: IServiceKey { /// <summary> /// 测试上传文件 /// </summary> /// <param name="form">HttpFormCollection 类型参数</param> /// <returns></returns> Task<bool> UploadFile(HttpFormCollection form); /// <summary> /// 测试下载文件 /// </summary> /// <param name="fileName">文件名</param> /// <param name="contentType">Content-Type</param> /// <returns></returns> [ServiceRoute("{fileName}/{contentType}")] Task<IActionResult> DownFile(string fileName, string contentType); }
而后能够经过swagger 进行测试
上传文件
下载文件
4. SSL认证
能够经过配置HttpsPort、CertificateFileName、CertificateLocation、CertificatePassword来生成ssl认证
5. 网关
stage 能够生成对外访问网关,其做用是路由转发和鉴权
测试环境
CPU:Intel Core i7-4710MQ
内存:16G
硬盘:1T SSD+512G HDD
网络:局域网
版本:.net core 2.2
surging 2.0将在下月底进行发布,敬请期待