设为首页 加入收藏

TOP

Ocelot的学习(一)
2019-09-17 18:35:33 】 浏览:41
Tags:Ocelot 学习

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,  // 配置服务发现
    }
    //{
    //  &quo
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇C#时间加减 下一篇VS2017 无法连接到Web服务器“IIS..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目