原文 使用这个特性的时候要小心点. 可以如下一样提供一些中间件用以覆盖默认的中间件: var configuration = new OcelotPipelineConfiguration { PreErrorResponderMiddleware = async (ctx, next) => { await next.Invoke(); } }; app.UseOcelot(configuration); PreErrorResponderMiddleware - 最先运行的中间件 PreAu…
先说下为什么翻译这篇文章,既定的方向是架构,然后为了学习架构就去学习一些架构模式.设计思想. 突然有一天发现依赖注入这种技能.为了使得架构可测试.易维护.可扩展,需要架构设计为松耦合类型,简单的说也就是解耦.为了解耦前面的人提出各种理论,主要思想是控制反转,而现在主流的主要是两个:依赖注入.服务定位(有篇英文文章特意讨论这种模式,最终的结论是否定的,乍看了一眼,没看懂) 有了某个思想便可以在程序中体现,用多了,人们就去对它进行封装,普通的人封装的大概就自己用,高人封装了便成了组件.现在基本上都在…
原文 Ocelot可以通过header的形式发送一个requestid.ocelot会将这个requestid转发到下游服务. 如果在日志配置中设置了IncludeScopes为true,那么request id会打在日志里面. 可以通过两种方式使用requestid. 1.Global - 配置如下GlobalConfiguration.这将作用于所有的请求 "GlobalConfiguration": { "RequestIdKey": "OcRequ…
原文 用户授权后才能使用此功能. 用户获得授权后claims将被发送到claims transformation中间件.用户授权后,我们首先调用claims to headers middleware,claims to query string parameters middleware. 在ReRoute配置中添加名为AddClaimsToRequest, AddHeadersToRequest, AddQueriesToRequest的字典信息. 字典的条目标识ocelot将怎么转换,键会…
原文 可以针对每个ReRoute设置对下游服务的熔断器circuit breaker.这部分是通过Polly实现的. 将下面的配置添加到一个ReRoute下面去. "QoSOptions": { "ExceptionsAllowedBeforeBreaking":3, "DurationOfBreak":5, "TimeoutValue":5000 } ExceptionsAllowedBeforeBreaking必须大于0.…
原文 Ocelot支持基本的缓存,目前Ocelot的缓存是通过CacheManager project实现的. 下面的示例展示了如何启用缓存: s.AddOcelot() .AddCacheManager(x => { x.WithDictionaryHandle(); }) 为了在路由中使用缓存,需要在ReRoute中添加下面的配置: "FileCacheOptions": { "TtlSeconds": 15, "Region": &q…
原文 Ocelot支持对上游做访问限流,这样就可以保证下游不要负载太大了. 如果要启用访问限流,需要做如下配置: "RateLimitOptions": { "ClientWhitelist": [], "EnableRateLimiting": true, "Period": "1s", "PeriodTimespan": 1, "Limit": 1 } Clien…
原文 你可以指定一个service discovery provider,ocelot将使用它来找下游的host和port. Consul 下面的配置要放在GlobalConfiguration中.如果你没有指定host和port,那么就需要一个service discovery provider,默认使用的是Consul. "ServiceDiscoveryProvider": { "Host": "localhost", "Port…
原文 Aggregate ReRoutes用来组合多个ReRoutes,将它们的响应结果映射到一个响应中返回给客户端. 为了使用Aggregate ReRoutes,你必须像下面的ocelot.json中做些配置. 在下面的例子中,有两个ReRoutes,且它们都有一个Key属性,我们将使用ReRoute里面的key在Aggregate中组合ReRoute.Aggregate 和 ReRoutes的UpstreamPathTemplate不能重复.Aggregate可以使用ReRoute中出了R…
原文 目录 Big Picture Getting Started Configuration Routing Request Aggregation Service Discovery Authentication TODO Authorisation TODO Rate Limiting Caching Quality of Service Headers Transformation Claims Transformation Logging Tracing Request Id / Co…