微服务-Ocelot配合缓存使用

微服务-Ocelot配合缓存使用
一、 介绍:很多时候我们希望对一些数据能够进行缓存,因为这些数据是不会变的,所以没必要频繁的去查询数据,所以就可以在网关层中进行数据缓存。
二、配置:
1. 安装Nuget包

 

 2. 修改program.cs

var builder = WebApplication.CreateBuilder(args);
#region 配置文件管理+日志
builder.Configuration.AddJsonFile("configuration.json", optional: false, reloadOnChange: true);
#endregion


//#region IOC扩展负载均衡策略
Func<IServiceProvider, DownstreamRoute, IServiceDiscoveryProvider, CustomPollingLoadBalancer> loadBalancerFactoryFunc = (serviceProvider, Route, serviceDiscoveryProvider) => new CustomPollingLoadBalancer(serviceDiscoveryProvider.Get);
//#endregion
builder.Services.AddOcelot()
    .AddCustomLoadBalancer<CustomPollingLoadBalancer>(loadBalancerFactoryFunc) // 自定义负载均衡
    .AddConsul()   //使用consul
     .AddCacheManager(x =>
     {
     x.WithDictionaryHandle();//开启缓存,默认字典存储
     })
     ;

builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

var app = builder.Build();

// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}
app.UseOcelot();//直接替换了管道模型

//app.UseHttpsRedirection();

//app.UseAuthorization();

//app.MapControllers();

app.Run();

3. 配置文件:

{
  "Routes": [
    {
      "DownstreamPathTemplate": "/api/{url}", //�����ַ--url����
      "DownstreamScheme": "http",
      "UpstreamPathTemplate": "/T/{url}", //���ص�ַ--url����
      "UpstreamHttpMethod": [ "Get", "Post" ],
      "UseServiceDiscovery": true,
      "ServiceName": "UserMinimalAPIService", //consul��������
      "LoadBalancerOptions": {
        "Type": "CustomPollingLoadBalancer" //��ѯ      LeastConnection-�����������ķ�����   NoLoadBalance�����ؾ���
      },
      "FileCacheOptions": {
        "TtlSeconds": 15, //Second
        "Region": "UserCache" //这是自定义缓存,下面有定义好的缓存,这个节点可以注释掉
      }
    }
  ],
  //"GlobalConfiguration": {
  //  "BaseUrl": "http://127.0.0.1:6299", //���ض����ַ
  //  "ServiceDiscoveryProvider": {
  //    "Host": "192.168.3.230",
  //    "Port": 8500,
  //    "Type": "Consul" //��Consul�ṩ������, ÿ������ȥconsul
  //  }
    "ServiceDiscoveryProvider": {
      "Host": "192.168.3.230",
      "Port": 8500,
      "Type": "PollConsul", //��Consul�ṩ������,
      "PollingInterval": 1000 //��ѯconsul,设置缓存为1秒
    //  //"Token": "footoken"//��ҪACL�Ļ�
    //}
  }
}

谢谢学习!!!

posted @ 2022-09-07 17:37  锦大大的博客呀!  阅读(114)  评论(0编辑  收藏  举报