您的位置:首页 > 其它

基于.NET CORE微服务框架 -浅析如何使用surging

2017-11-02 00:00 447 查看
1、前言

      surging受到大家这么强烈的关注,我感到非常意外,比如有同僚在公司的分享会上分享surging, 还有在博客拿其它的RPC框架,微服务做对比等等,这些举动都让我感觉压力很大,毕竟作为个人的开源项目,无法与成熟的开源社区的项目相比,也只有等到后面有许许多多志同道合的朋友加入一起研发完善surging,这样才能让surging 成为流行的微服务框架。

这篇文章介绍如何使用surging

 

开源地址:https://github.com/dotnetcore/surging


2、设计模式

Surging 提供了以下四种设计模式


2.1  代理模式

通过代理调用不同的微服务。并且针对于规则控制其访问,如下图所示:

 



2.2 异步消息模式

再处理等待而阻塞的问题时候, 基于微服务的架构会选择使用消息队列来代替请求/响应模式,如下图所示:



 


2.3 链式模式

这种模式在接收到请求后会进行互相合并的响应,如下图所示:

服务A接收到请求后会与服务B进行通信,服务B会同服务C进行通信。所有服务之间的通信使用基于Netty的RPC通信。



 


2.4  分支模式

这种模式允许调用多个服务提供者,来合并数据进行返回,如下图所示:



 


3、外部如何交互

服务主要针对提交的数据进行处理,在单个服务或多个服务调用的问题上,采取使用网关统一访问的形式进行处理,如下图所示

 


网关包括以下功能:

安全身份认证

统一访问

流量控制

分流控制

数据监控

缓存拦截


2.简单示例


服务端



服务路由访问配置

在接口上,添加以下特性(还未实现统一方法配置)
[ServiceBundle("api/{Service}")]


服务创建代理调用 (需要依赖接口创建代理)

ServiceLocator.GetService<IServiceProxyFactory>().CreateProxy<T>(key)


 


服务根据RoutePath 进行调用(不需要依赖接口,耦合性低)


 


本地模块和服务调用

ServiceLocator.GetService<T>(key)


通过以上配置,可以通过网关进行访问,如果我们要访问接口IUserService ,方法为GetUser,路由映射的规则[ServiceBundle("api/{Service}/{Method}")],所转化地址应该是api/User/GetUser,

用Postman测试的效果如下:




4. 总结

surging外部通过Api 网关 Rest 访问,内部通过netty RPC访问,surging还在不断完善中,帮助文档也正在赶工中,请大家耐心等待。如感兴趣请多关注或者加入QQ群:615562965

原文地址:http://www.cnblogs.com/fanliang11/p/7766955.html

.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: