Ocelot是一个用.NET Core实现并且开源的API网关,它功能强大,包括了:路由、认证、鉴权、简单缓存、限流熔断、负载均衡器等。简单的来说Ocelot是一堆的asp.net core middleware组成的一个有顺序的管道。当它拿到请求之后会用一个request builder来构造一个HttpRequestMessage发到下游的真实服务器,等下游的服务返回response之后再由一个middleware将它返回的HttpResponseMessage映射到HttpResponse上。

项目描述

> 1. 这是一个ASP.NET Core Web项目,主要展示Ocelot的使用
> 2. 实现Ocelot来控制访问
> 3. 实现Ocelot来控制负载均衡

项目架构

// OcelotStudy项目
namespace OcelotInput
{
public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
} public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((hostingContext, config) =>
{
config
.SetBasePath(hostingContext.HostingEnvironment.ContentRootPath)
.AddJsonFile("ocelotsettings.json", true, true)
.AddEnvironmentVariables();
})
.UseStartup<Startup>();
}
} namespace OcelotInput
{
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddOcelot();
} public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
} app.UseOcelot().Wait();
}
}
}

其他两个是asp.net core api的项目,vs直接创建就可以

Ocelot配置

{
"ReRoutes": [
{
"DownstreamPathTemplate": "/values/{action}", //下游服务配置
"DownstreamScheme": "http",
"DownstreamHostAndPorts": [
{
"Host": "localhost",
"Port": 54679
},
{
"Host": "localhost",
"Port": 57417
}
],
"UpstreamPathTemplate": "/values/{action}", //上游服务配置
"UpstreamHttpMethod": [
"Get"
],
//"AddHeadersToRequest": {},
//"AddClaimsToRequest": {},
//"RouteClaimsRequirement": {}, //配置Claims鉴权
//"AddQueriesToRequest": {},
//"RequestIdKey": "",
//"FileCacheOptions": { //缓存配置
// "TtlSeconds": 0,
// "Region": ""
//},
//"ReRouteIsCaseSensitive": false,
//"ServiceName": "",
//"QoSOptions": { //服务质量与熔断
// "ExceptionsAllowedBeforeBreaking": 3,
// "DurationOfBreak": 10,
// "TimeoutValue": 5000
//},
"LoadBalancerOptions": {
"Type": "LeastConnection"
} //LoadBalancer将决定负载均衡的算法,LeastConnection – 将请求发往最空闲的那个服务器,RoundRobin – 轮流发送,NoLoadBalance – 总是发往第一个请求或者是服务发现
//"RateLimitOptions": { //为限流配置
// "ClientWhitelist": [],
// "EnableRateLimiting": false,
// "Period": "",
// "PeriodTimespan": 0,
// "Limit": 0
//},
//"AuthenticationOptions": { //配置服务认证
// "AuthenticationProviderKey": "",
// "AllowedScopes": []
//},
//"HttpHandlerOptions": {
// "AllowAutoRedirect": false,
// "UseCookieContainer": false
// //"UseTracing": true
//}
//"UseServiceDiscovery": false, // 配置服务发现
}
//{
// "DownstreamPathTemplate": "/{url}",
// "DownstreamScheme": "https",
// "DownstreamHostAndPorts": [
// {
// "Host": "localhost",
// "Port": 80
// }
// ],
// "UpstreamPathTemplate": "/{url}",
// "UpstreamHttpMethod": [ "Get" ]
//}
]
//"Aggregates": [ //服务聚合配置
// {
// "ReRouteKeys": [
// "Tom",
// "Laura"
// ],
// "UpstreamPathTemplate": "/"
// }
//]
}

运行效果

Web1项目:http://localhost:54679,    Web2项目:http://localhost:57417,     Ocelot项目:http://localhost:57083

源码地址

https://github.com/jasonhua95/samll-project/tree/master/OcelotStudy

Ocelot的学习的更多相关文章

  1. 【转载】Ocelot网关的路由热更新

    调用API修改Ocelot的配置文件 May 11, 2018 | netcoreocelot | 410 阅读 Ocelot是一个基于.net core的开源webapi服务网关开源项目,功能比较强 ...

  2. 调用API修改Ocelot的配置文件

    Ocelot是一个基于.net core的开源webapi服务网关开源项目,功能比较强大,Github项目地址为:https://github.com/ThreeMammals/Ocelot,关于Oc ...

  3. 微服务&#183;API网关

    阅文时长 | 3.52分钟 字数统计 | 1232字符 主要内容 | 1.什么是API网关 2.微服务中的API网关 3.几种部署策略 『微服务·API网关』 编写人 | SCscHero 编写时间 ...

  4. Ocelot学习笔记

    最近因工作需要,开始学习Ocelot.首先简单介绍一下,Ocelot是一个基于.net core的开源webapi 服务网关项目,目前已经支持了IdentityServer认证.根据 作者介绍,Oce ...

  5. ASP.NET Core on K8S学习之旅(13)Ocelot API网关接入

    本篇已加入<.NET Core on K8S学习实践系列文章索引>,可以点击查看更多容器化技术相关系列文章. 上一篇介绍了Ingress的基本概念和Nginx Ingress的基本配置和使 ...

  6. (10)学习笔记 ) ASP.NET CORE微服务 Micro-Service ---- Ocelot+Identity Server

    用 JWT 机制实现验证的原理如下图:  认证服务器负责颁发 Token(相当于 JWT 值)和校验 Token 的合法性. 一. 相关概念 API 资源(API Resource):微博服务器接口. ...

  7. (8)学习笔记 ) ASP.NET CORE微服务 Micro-Service ---- Ocelot网关(Api GateWay)

    说到现在现有微服务的几点不足: 1) 对于在微服务体系中.和 Consul 通讯的微服务来讲,使用服务名即可访问.但是对于手 机.web 端等外部访问者仍然需要和 N 多服务器交互,需要记忆他们的服务 ...

  8. 微服务(入门学习五):identityServer4+ocelot+consul实现简单客户端模式

    简介 主要是采用identity Server4 和ocelot 加上consul 实现简单的客户端模式 开发准备  环境准备 下载并安装Consul具体请参考前几篇的内容 项目介绍 创建ocelot ...

  9. Ocelot API网关的实现剖析

    在微软Tech Summit 2017 大会上和大家分享了一门课程<.NET Core 在腾讯财付通的企业级应用开发实践>,其中重点是基于ASP.NET Core打造可扩展的高性能企业级A ...

随机推荐

  1. 使用阿里云Java SDK 实现 DDNS

    本代码的实现前提: 1.拥有阿里云域名,且获取了Access Key 及 Access Secret 2.能获取外网IP的页面地址(注意:ip138.com的实际包含ip地址为http://2018. ...

  2. Windows下搭建Python虚拟环境

    一.安装使用 virtualenv 1. 安装 virtualenv pip install virtualenv 2. 新建虚拟环境 virtualenv env1 用 Python3 创建虚拟环境 ...

  3. H5转图片支持保存

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. 【C语言基础】循环体系

    1.For循环结构: For循环的一般形式为: for (表达式1 初始化:判断条件:自增自减) { 语句块 } 2.while循环结构: while循环的一般的形式为: 表达式1 初始化 while ...

  5. 简单的PHP上传图片和删除图片示例代码

    分享一例简单的PHP上传图片和删除图片示例代码,很简单,适合初学的朋友参考,用来研究php上传图片还是不错的. 1.php上传图片: <?php if (!empty($_FILES[" ...

  6. JSon与字符串的转换

    json字符串转化成json对象 // jquery的方法 var jsonObj = $.parseJSON(jsonStr) //js 的方法 var jsonObj = JSON.parse(j ...

  7. Python 中文数字转阿拉伯数字

    #只能转数字,传参中包含非数字会错. def t(str): zhong={'零':0,'一':1,'二':2,'三':3,'四':4,'五':5,'六':6,'七':7,'八':8,'九':9}; ...

  8. 在Centos7上安装wxPython4.0.4

    在linux上安装wxPython4.0.4时需要gtk+2.0,在安装wxPython4.0.4遇到以下错误. linux上是用pip安装wxPython4.0.4的,执行命令如下: pip ins ...

  9. Unity 自定义导入时切割Sprite

    using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEditor; us ...

  10. wireshark抓包新手使用教程

    wireshark是非常流行的网络封包分析软件,可以截取各种网络数据包,并显示数据包详细信息.常用于开发测试过程各种问题定位. Wireshark软件安装 软件下载路径:wireshark官网.按照系 ...