微服务入门08 Ocelot

Posted amayer

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微服务入门08 Ocelot相关的知识,希望对你有一定的参考价值。

介绍

Ocelot是一个用.NET Core实现并且开源的API网关


简单的来说Ocelot是一堆的asp.net core middleware组成的一个管道。当它拿到请求之后会用一个request builder来构造一个HttpRequestMessage发到下游的真实服务器,等下游的服务返回response之后再由一个middleware将它返回的HttpResponseMessage映射到HttpResponse上。

引用自腾飞博客


安装

Install-Package Ocelot
public void ConfigureServices(IServiceCollection services)
    {
        services.AddOcelot(Configuration);
    }

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        app.UseOcelot().Wait();
    }

手动服务发现

新建配置json

{
  "ReRoutes": [
    //两个路由规则
    {
      "DownstreamPathTemplate": "/api/{url}",
      "DownstreamScheme": "http",
      //目标地址
      "DownstreamHostAndPorts": [
        {
          "Host": "localhost",
          "Port": 5001
        }
      ],
      "UpstreamPathTemplate": "/MsgService/{url}",
      "UpstreamHttpMethod": [ "Get", "Post" ]
    },
    {
      "DownstreamPathTemplate": "/api/{url}",
      "DownstreamScheme": "http",
      "DownstreamHostAndPorts": [
        {
          "Host": "localhost",
          "Port": 5003
        }
      ],
      "UpstreamPathTemplate": "/ProductService/{url}",
      "UpstreamHttpMethod": [ "Get", "Post" ]
    }
  ]
}
.ConfigureAppConfiguration((hostingContext, builder) => {
            builder.AddJsonFile("configuration.json", false, true);
        })

ocelot本质的作用上就是一个微服务管理者,外部想要访问某个微服务,就要通过这个网关,由ocelet决定访问哪个微服务,并将结果返回

原来的访问地址 http://localhost:5003/api/product/1

新访问 http://localhost:8888/ProductService/product/1

ocelot搭配consul

ocelot也能做集群

以上是关于微服务入门08 Ocelot的主要内容,如果未能解决你的问题,请参考以下文章

微服务专题之.Net6下集成微服务网关-Ocelot

微服务--Ocelot+Consul整合使用,网关+服务注册发现

.NETCORE微服务架构--网关篇(Ocelot)

微服务之:从零搭建ocelot网关和consul集群

使用 API 网关 Ocelot 与 Nginx 的微服务

我的第一个微服务系列:使用Ocelot搭建网关