微服务-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 @   锦大大的博客呀!  阅读(117)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示