一、Surging框架简介
surging 是一个分布式微服务引擎,提供高性能RPC远程服务调用,服务引擎支持http、TCP、WS、Mqtt协议,采用Zookeeper、Consul作为surging服务的注册中心,集成了哈希一致性,随机,轮询、压力最小优先作为负载均衡的算法,底层协议集成采用的组件是dotnetty、websocket-sharp、Kestrel。支持通过docker hub 部署服务引擎,也可以通过nuget 引用组件的方式自定义服务引擎。

二、Surging本地部署测试

1、首先使用vs2017拉取surging最新代码

红框标记的有微服务框架代码、作者提供的服务DEMO代码、还有网关代码。代码详情可以去作者博客了解,这里就不一一阐述了。

2、安装启动Redis、RabbitMQ、Consul等相关依赖

相关需要安装的都已经成功安装,然后配置Surging.ApiGateway、Surging.Services.Server这两个项目中redis rabbitmq consul的相关配置,因为是本地部署所以配置一般是不需要动的。
3.部署前,我们要配置启动项,我们这里右击解决方案-》属性然后按我图中的顺序设置启动项
 

直接点击启动就可以了。
这样我们的网关和服务就已经正常启动了。下面我们测试一下接口是否可以用。
服务端中注册了一个SayHello的接口,我们来看看它是否可以正常访问。
使用PostMan调用我本地网关端口中的SayHello接口(这里需要注意,我们调用的时候不在是使用服务的ip和端口了,要使用网关的Ip和端口才能正常访问)
OK!访问成功了。

三、使用Docker部署Surging及相关的测试(docker中部署和本地类似)

1.为了检验Surging服务发现和自动注册功能,我做了一个多服务的Demo。 

2.安装启动Redis、RabbitMQ、Consul等相关依赖。

docker 安装部署这些你可以通过docker pull 相应的版本这样的命令去完成。这里我就演示一个简单点的,鼠标右击小鲨鱼。
点击红框位置,然后下载安装这个。然后就可以通过Kitematic,在搜索栏中下载好RabbitMQ、redis、consul相关镜像
3.网关和服务中配置redis rabbitmq consul  
这里我们要找到redis rabbitmq consul docker镜像的ip,具体如何查看其ip,看如下操作:进入到命令窗口,输入docker container ls或者  docker ps -a  查看docker,可以看到现在运行的docker的相关信息。

然后查看consul的相关配置,输入docker inspect  镜像的 containerID,如consul的id是53c171257c61,输入命令如下:docker inspect 53c171257c61

找到其中的ip是多少,然后修改surging网关中的consul地址为:"Address": "172.17.0.2:8500",其他配置根据上面的操作进行修改,如redis 镜像地址的查找和修改等。

4.添加Docker支持
修改好surging的网关配置后在网关项目上单击右键,点击docker支持 。如图:
自动生成docker-compose.yml后,修改docker-compose.yml配置
网关docker-compose.yml配置 
服务A、B、C docker-compose.yml配置 
5.使用Docker生成相应的镜像和容器,然后运行容器
运行命令 docker-compose -f docker-compose.yml up -d 生成镜像 
启动网关和服务 
查看网关是否发现并注册我写的那三个服务 
使用PostMan访问docker中的三个服务 
  服务A调用成功!

服务B调用成功!

服务C调用成功!

四、总结

通过学习Surging让我掌握了很多平时不太基础的知识,比如:Consul服务发现、服务与服务之间之间的通讯、Docker相关的知识等。后面我还会继续深入的研究Surging框架,继续加油!

转载于:https://www.cnblogs.com/YorkSun/p/10438717.html

Surging学习笔记(一)相关推荐

  1. PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 call

    您的位置 首页 PyTorch 学习笔记系列 PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 发布: 2017年8月4日 7,195阅读 ...

  2. 容器云原生DevOps学习笔记——第三期:从零搭建CI/CD系统标准化交付流程

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

  3. 容器云原生DevOps学习笔记——第二期:如何快速高质量的应用容器化迁移

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

  4. 2020年Yann Lecun深度学习笔记(下)

    2020年Yann Lecun深度学习笔记(下)

  5. 2020年Yann Lecun深度学习笔记(上)

    2020年Yann Lecun深度学习笔记(上)

  6. 知识图谱学习笔记(1)

    知识图谱学习笔记第一部分,包含RDF介绍,以及Jena RDF API使用 知识图谱的基石:RDF RDF(Resource Description Framework),即资源描述框架,其本质是一个 ...

  7. 计算机基础知识第十讲,计算机文化基础(第十讲)学习笔记

    计算机文化基础(第十讲)学习笔记 采样和量化PictureElement Pixel(像素)(链接: 采样的实质就是要用多少点(这个点我们叫像素)来描述一张图像,比如,一幅420x570的图像,就表示 ...

  8. Go 学习推荐 —(Go by example 中文版、Go 构建 Web 应用、Go 学习笔记、Golang常见错误、Go 语言四十二章经、Go 语言高级编程)

    Go by example 中文版 Go 构建 Web 应用 Go 学习笔记:无痕 Go 标准库中文文档 Golang开发新手常犯的50个错误 50 Shades of Go: Traps, Gotc ...

  9. MongoDB学习笔记(入门)

    MongoDB学习笔记(入门) 一.文档的注意事项: 1.  键值对是有序的,如:{ "name" : "stephen", "genda" ...

最新文章

  1. 从一起丢包故障来谈谈 nginx 中的 tcp keep-alive
  2. 直线和圆交点 halcon_初中数学三角形、四边形、圆辅助线的添加方法
  3. ViewPager嵌套ViewPager 滑动冲突
  4. oracle别名作用范围,在Oracle的Where子句子查询中使用别名或表名,
  5. MSSQL-SQL SERVER 分页原理
  6. Molly's Chemicals
  7. python简单开发接口
  8. .NET 6新特性试用 | 可写JSON DOM API
  9. TCP协议——粘包与拆包
  10. mysql先删后增并发时出现死锁_MySQL死锁案例分析一(先delete,再insert,导致死锁)...
  11. 代码在eclipse下不报错,在doc命令行下报错--jar file和runable jar file
  12. c python 内存冲突_Python在计算内存时应该注意的问题?
  13. Linux安全手册(转载)
  14. HashMap暴力枚举(洛谷P1765题题解,Java语言描述)
  15. Tomcat爆出严重漏洞,影响所有版本,波及约8万台服务器,附解决方案!(扩散!!!)...
  16. 共享内存、消息队列、信号量之ipcs命令详解
  17. 计算机毕业论文选题 - 毕设选题推荐
  18. RANSAC算法(原理及代码实现+迭代次数参数自适应)
  19. 高仿精仿微信客户端源码完整版
  20. 微信小程序emoji表情输入框制作

热门文章

  1. java 根据word模板导出导出word文档
  2. 自动化运维平台Spug介绍
  3. python散点图密度颜色_关于matplotlib:Python散点图:如何使用与colorcycle具有相同颜色的色图...
  4. 《在线草图理解技术研究》博士论文复现
  5. 实验01:吃鸡蛋问题
  6. 计算机教室翻转电脑桌,多媒体翻转显示器电脑桌培训桌
  7. 网易新闻客户端(高仿)
  8. hiti打印机android驱动,诚研Prinhome P461驱动
  9. Scrapy爬取豆瓣影评
  10. Andorid手机振动器(Vibrator)的使用