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. 在centos7上编译安装nginx
  2. 解决 fastjson 泛型报错 : java.lang.ClassCastException: com.alibaba.fastjson.JSONObject cannot be cast to X
  3. Django 练习班级管理系统五 -- 查看老师列表
  4. Java与.NET的WebServices相互调用
  5. .NET Core开发实战(第8课:配置框架:让服务无缝适应各种环境)--学习笔记
  6. 推荐系统相关科技论文写作建议
  7. 好看的扁平化大气IT个人简历网页模板
  8. UE4之cmd调用函数
  9. JZOJ2499 东风谷早苗
  10. Jmeter读取CSV文件
  11. 有关PS中图片不能解锁问题
  12. Google登录和内购简要说明
  13. jQuery Text-to-Speech 谷歌在线语音
  14. c语言航班管理系统报告,c航班管理系统课程设计报告.doc
  15. 关于北京地区2009年度计算机技术与软件专业技术资格(水平)考试有关问题的通知
  16. 商业软件linux下闭源,如何发布使用LGPL版Qt的商业软件
  17. 参考文献中常见的会议论文的出版地址
  18. PageHelper 补充
  19. 东芝230复印机常用08设定模式代码
  20. solaris oracle 磁盘阵列,Solaris 下的 oracle 的基本操作。

热门文章

  1. 设计模式之命令模式(Java实现)
  2. matlab径向基函数插值,径向基函数(Radial Basis Function)插值
  3. 武汉大学计算机假期有什么活动,关于2018年“中秋节、国庆节”学生放假的通知...
  4. asp.net mvc ViewBag常用操作
  5. Es Bucket聚合(桶聚合) 第二篇-Terms Aggregation与Significant Terms Aggregation
  6. 超平面的法向量与距离公式
  7. CTF密码学之RC4
  8. 学习方法-学习观(04)英语专题
  9. PowerMill C#插件二次开发 截图处理
  10. 爬虫入门教程 —— 1