一夫当关万夫莫开

一:源起:

当我们的应用不再是单体架构时,微服务将原先单体下的功能组件分割后,产生了许多个微服务,实际上我们还是以前那样的操作,访问服务接口,达到我们的目的,而这次不过是换成了http(s)请求的微服务,以前的服务接口也是有base服务以便挂载一些通用处理,所以这里分化出去的微服务也是要一个统一的入口或者称之为管家的东西来管理与分发。那么API网关这样一个概念就呼之欲出了,这里将记录.net core开源的网关 Ocelot 的使用。

二:搬砖:

此处流程只是Ocelot作为网关转发请求的简单demo,代码设置源自网上,部分自己瞎改

环境:

vs2017  ||   .net core 2.0 || Ocelot 8.0.0

1.创建网关api(nuget或者其他引入Ocelot的依赖),以及2个微服务api。

2.网关api这里我省去了原有的(control以及mvc服务)

Ocelot配置文件

{"ReRoutes": [//微服务一配置:{"DownstreamPathTemplate": "/api/get","DownstreamScheme": "http","DownstreamHostAndPorts": [{"Host": "localhost","Port": 60001}],"UpstreamPathTemplate": "/api/get","UpstreamHttpMethod": [ "Get" ]},//微服务二配置:{"DownstreamPathTemplate": "/api/post","DownstreamScheme": "http","DownstreamHostAndPorts": [{"Host": "localhost","Port": 60002}],"UpstreamPathTemplate": "/api/post","UpstreamHttpMethod": [ "Get" ]}],"GlobalConfiguration": {"BaseUrl": "localhost:60000"}
}

网关api设置:

在 Program.cs添加Ocelot的配置文件

        public static IWebHost BuildWebHost(string[] args) =>WebHost.CreateDefaultBuilder(args)//此处添加Ocelot的配置.ConfigureAppConfiguration((hostingContext, builder) => {builder.SetBasePath(hostingContext.HostingEnvironment.ContentRootPath).AddJsonFile("ocelot.json");}).UseStartup<Startup>().Build();

在Startup.cs添加Ocelot服务

 public void ConfigureServices(IServiceCollection services){//添加网关配置services.AddOcelot(Configuration);}public void Configure(IApplicationBuilder app, IHostingEnvironment env){if (env.IsDevelopment()){app.UseDeveloperExceptionPage();}app.UseOcelot().Wait();}

 2个微服务就是普通的设置: 

namespace MicroServicePost.Controllers
{[Route("api/[controller]")]public class PostController : Controller{[HttpGet]public IEnumerable<string> yishuiPost(){return new string[] { "易", "水", "POST" };}}
}

这里是调试启动3个进程,且Ocelot的配置需要明确的地址,所以端口要么是看api各自属性里面设定的要么就是统一改下占用端口,且调试启动3个端口需要到解决方案属性那里设定,且这3个进程同属于一个解决方案内,后续的部署将是启动docker而不是这样图方便一个解决方案启动的方式。

运行结果如下:

当往网关输入对应的微服务路由时,你能看到不同服务的回调,当然实际上微服务端口还是需要禁止访问的,对外面只是暴露80端口这个就是后话了。

转载于:https://blog.51cto.com/13950217/2168967

.net core 微服务之API网关 开源中间件 Ocelot 笔记相关推荐

  1. 微服务之API网关:Kong:概要与安装

    Kong是一个基于Apache License 2.0的开源项目,是一个云原生的快速可扩的分布式微服务抽象层,应用场景为微服务的API网关,类似于spring cloud的zuul. 概要信息 项目 ...

  2. 微服务之API网关接口设计

    微服务之API网关接口设计 API网关,顾名思义,就是外部到内部的一道门,其主要功能: 服务路由:将前段应用的调用请求路由定位并负载均衡到具体的后端微服务实例,对于前端应用看起来就是1个应用提供的服务 ...

  3. 《企业IT架构转型之道》随笔之SOA、ESB、微服务、API网关(2019-08-07)

    <企业IT架构转型之道>随笔之SOA.ESB.微服务.API网关(2019-08-07) 名词注释 为什么会进化 展望 作者在本章中提到的"烟筒式"系统建设模式,在目前 ...

  4. 深度好文 — 微服务和API网关限流熔断实现关键逻辑思路

    来源:https://www.toutiao.com/i6853970319745483275/?group_id=6853970319745483275 今天准备谈下微服务架构和API网关中的限流熔 ...

  5. java net包 网关_Net分布式系统之六:微服务之API网关

    本人建立了个人技术.工作经验的分享微信号,计划后续公众号同步更新分享,比在此更多具体.欢迎有兴趣的同学一起加入相互学习.基于上篇微服务架构分享,今天分享其中一个重要的基础组件"API网关&q ...

  6. 微服务中API网关的作用是什么?

    目录 什么是API网关? 为什么要用API网关? API网关架构 API网关是如何实现这些功能的? 协议转换 链式处理 异步请求 什么是API网关? Api网关是微服务的重要组成部分,封装了系统内部的 ...

  7. .NET Core微服务之基于Ocelot实现API网关服务(续)

    Tip: 此篇已加入.NET Core微服务基础系列文章索引 一.负载均衡与请求缓存 1.1 负载均衡 为了验证负载均衡,这里我们配置了两个Consul Client节点,其中ClientServic ...

  8. .NET Core微服务之路:基于Ocelot的API网关实现--http/https协议篇

    前言 最近一直在忙公司和私下的兼职,白天十个小时,晚上四个小时,感觉每天都是打了鸡血似的,精神满满的,连自己那已经学打酱油的娃都很少关心,也有很长一段时间没有更新博客了,特别抱歉,小伙伴们都等得想取关 ...

  9. .NET Core微服务之基于Ocelot实现API网关服务

    一.啥是API网关? API 网关一般放到微服务的最前端,并且要让API 网关变成由应用所发起的每个请求的入口.这样就可以明显的简化客户端实现和微服务应用程序之间的沟通方式.以前的话,客户端不得不去请 ...

最新文章

  1. 爬虫必须得会的预备知识
  2. C#的未来:简化参数空值验证
  3. 面试必谈的哈希,.Net 程序员温故而知新
  4. 今天,送你一份交通行业最全数据集(共享单车、自动驾驶、网约出租车、交通信号识别)
  5. mybatis映射longtext类型数据_全网首例全栈实践(五)Spring Boot 集成Mybatis
  6. faststart可以卸载吗_电脑上的许多Microsoft Visual c++组件,可以卸载吗?
  7. CSS中常见的6种文本样式
  8. c#解压文件的实例方法
  9. python画tan_Python tan() 函数
  10. 高斯法求解方程原理及实现
  11. mysql乐观锁 超卖_秒杀系统之超卖现象
  12. 《匆匆那年》每一集的标题
  13. Outlook-VBA-06-邮件另存为
  14. 小程序开发--地区选择四级联动(选择省,市,县,镇)
  15. CSS中的长度单位和HTML5中多媒体标签的使用
  16. 关于基于Linux的电子词典的编写
  17. 微软认证解决方案专家
  18. 2022.11.5 英语背诵
  19. PyTorch深度学习实践(b站刘二大人)P6讲 逻辑斯蒂回归 Logistic Regression
  20. U盘里的文件变成快捷键的解决方法

热门文章

  1. Ubuntu apt 卸载详解
  2. [BUUCTF-pwn]——ez_pz_hackover_2016
  3. linux桌面效率提高,ElementaryOS:使用这个轻量级 Linux 桌面提高工作效率
  4. 如何使用Proxy模式及Java内建的动态代理机制
  5. 在VS中编译C++静态库以及使用的方法
  6. SMTP Error: Could not connect to SMTP host
  7. Cocos2d-x3.0 DrawNode吸取
  8. 转 abap中sy-index和sy-tabix使用的时候有什么区别
  9. cocos2d - CCSprite各种动画
  10. WCF 使用证书认证 方法