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、外部如何交互

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

网关包括以下功能:

  1. 安全身份认证
  2. 统一访问
  3. 流量控制
  4. 分流控制
  5. 数据监控
  6. 缓存拦截

2.简单示例

服务端

var host = new ServiceHostBuilder().RegisterServices(option=> {option.Initialize(); //初始化服务option.RegisterServices();//依赖注入领域服务option.RegisterRepositories();//依赖注入仓储option.RegisterModules();//依赖注入第三方模块option.RegisterServiceBus();//依赖注入ServiceBus}).RegisterServices(builder =>{builder.AddMicroService(option =>{option.AddServiceRuntime();//// option.UseZooKeeperManager(new ConfigInfo("127.0.0.1:2181")); //使用Zookeeper管理option.UseConsulManager(new ConfigInfo("127.0.0.1:8500"));//使用Consul管理option.UseDotNettyTransport();//使用Netty传输option.UseRabbitMQTransport();//使用rabbitmq 传输option.AddRabbitMQAdapt();//基于rabbitmq的消费的服务适配builder.Register(p => new CPlatformContainer(ServiceLocator.Current));//初始化注入容器});}).SubscribeAt()     //消息订阅.UseServer("127.0.0.1", 98)//.UseServer("127.0.0.1", 98,“true”) //自动生成Token//.UseServer("127.0.0.1", 98,“123456789”) //固定密码Token.UseStartup<Startup>().Build();using (host.Run()){Console.WriteLine($"服务端启动成功,{DateTime.Now}。");}

服务路由访问配置

在接口上,添加以下特性(还未实现统一方法配置)

   [ServiceBundle("api/{Service}")]

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

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

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

ServiceLocator.GetService<IServiceProxyProvider>().Invoke<string>(model, path, serviceKey)

本地模块和服务调用

ServiceLocator.GetService<T>(key)

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

用Postman测试的效果如下:

4. 总结

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

转载于:https://www.cnblogs.com/fanliang11/p/7766955.html

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

  1. 基于.NET CORE微服务框架 -谈谈surging API网关

    1.前言 对于最近surging更新的API 网关大家也有所关注,也收到了不少反馈提出是否能介绍下Api网关,那么我们将在此篇文章中谈谈surging Api 网关 开源地址:https://gith ...

  2. 基于.NET CORE微服务框架 -谈谈Cache中间件和缓存降级

    1.前言 surging受到不少.net同学的青睐,也提了不少问题,提的最多的是什么时候集成API 网关,在这里回答大家最近已经开始着手研发,应该在1,2个月内会有个初版API网关,其它像Token身 ...

  3. 基于.NET CORE微服务框架 -谈谈surging的服务容错降级

    一.前言 对于不久开源的surging受到不少.net同学的青睐,也受到.net core学习小组的关注,邀请加入.NET China Foundation 以方便国内.net core开源项目的推广 ...

  4. 基于thrift的微服务框架

    前一阵开源过一个基于spring-boot的rest微服务框架,今天再来一篇基于thrift的微服务加框,thrift是啥就不多了,大家自行百度或参考我之前介绍thrift的文章, thrift不仅支 ...

  5. (二)surging 微服务框架使用系列之surging 的准备工作consul安装(转载 https://www.cnblogs.com/alangur/p/8377977.html)...

    (二)surging 微服务框架使用系列之surging 的准备工作consul安装 suging 的注册中心支持consul跟zookeeper.因为consul跟zookeeper的配置都差不多, ...

  6. surging 微服务框架使用系列之surging介绍

    surging 微服务框架使用系列之surging介绍 原文:surging 微服务框架使用系列之surging介绍 surging 是一个分布式微服务框架,提供高性能RPC远程服务调用,采用Zook ...

  7. python sanic orm_基于sanic的微服务框架 - 架构分析

    感谢@songcser分享的<基于sanic的微服务基础架构>https://github.com/songcser/sanic-ms 最近正在学习微服务,发现这个repo不错,但不完整, ...

  8. Java框架jboot_Jboot v3.0.3 正式版发布,基于 JFinal 的微服务框架

    Jboot是一个基于JFinal.JFinal-Undertow.Dubbo等开发的微服务框架,帮助开发者降低微服务开发门槛.同时完美支持在idea.eclipse下多maven模块,对java代码. ...

  9. 几个基于jvm 的微服务框架

    一个简单的整理,留待深入学习 micronaut http://micronaut.io/ sparkjava http://saprkjava.com spring cloud http://pro ...

最新文章

  1. 图像轮廓的提取和绘制
  2. 崛起于Springboot2.X之Mybatis-全注解方式操作Mysql(4)
  3. AD学习笔记----PCB设计
  4. ACM POJ 2723 Get Luffy Out(2-SAT入门)
  5. 大话设计模式—策略模式
  6. C++中各种智能指针的实现及弊端(三)
  7. [伤了昨天的心 裂成碎片和沙一起飞]五香里脊
  8. SAP自学指南:案例公司的管理难题
  9. 数据结构与算法:实验一线性表(字符串分类统计)
  10. 织梦轻量级mvc框架笔记
  11. POJ1579 HDU1331 HDU1579 ZOJ1168 Function Run Fun【记忆化递归】
  12. Linux内核同步 - Read/Write spin lock
  13. gridview中js的绑定问题 一个js的函数[转]
  14. UNIX 操作系统体系结构调整
  15. 计算机网络发展的第四阶段特点,计算机网络的发展可分为哪几个阶段?每个阶段各有什么特点?...
  16. Python import无法导入包问题
  17. 电脑qq游戏程序更改计算机,电脑怎么把qq游戏快捷到桌面
  18. AspectJ in Action 第2版 中文版 简明的内容
  19. 翻译2Momentum, business cycle, and time varying expected returns(后附读后感)(图表上传不了)
  20. GitHub 热榜:天才黑客开源新项目,不到 1000 行代码,1400 Star!

热门文章

  1. apache 服务器配置 虚拟,apache配置虚拟服务器
  2. Suhana and Equation | codechef 几何级数的模和
  3. DSP28335 SPWM之动作限定模块学习(AQ)Action-Qualifier
  4. 使用openssl进行ssl/tls加密传输会话测试
  5. android 显示电池电量
  6. SQL自学总结四 MySQL多表操作
  7. a标签disabled属性失效
  8. C语言实现RC4加解密算法
  9. 【Vue面试专题】50+道经典Vue面试题详解!
  10. PowerMILL 2016三五轴编程加工视频教程