# DotNet-OcelotStudy **Repository Path**: yus1977/DotNet-OcelotStudy ## Basic Information - **Project Name**: DotNet-OcelotStudy - **Description**: Ocelot学习 - **Primary Language**: C# - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-06-13 - **Last Updated**: 2021-04-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Ocelot学习 ## 相关资料 - Github地址 https://github.com/ThreeMammals/Ocelot - 中文教程和示例 https://github.com/yilezhu/OcelotDemo - 中文教程2 https://www.jianshu.com/p/c967eda8b04d ## 组件包安装 //基础功能 Install-Package Ocelot //缓存功能 Install-Package Ocelot.Cache.CacheManager //熔断功能 Install-Package Ocelot.Provider.Polly ## ocelot.json 主要配置说明 **注意:** 版本15以前,ocelot.json里 是ReRoutes,后来改成了 Routes - Routes:路由配置,告诉Ocelot如何处理上游的请求。 - DownstreamPathTemplate:下游的路由模板,即真实处理请求的路径模板 - DownstreamScheme:请求的方式,如:http,htttps - DownstreamHostAndPorts:下游的IP以及端口,可以有多个(如果使用负载均衡),方便实现负载均衡,当然你也可以使用服务发现,实现下游服务的自动注册与发现 - UpstreamPathTemplate:上游请求的模板,即用户真实请求的链接 - UpstreamHttpMethod:上游请求的http方法,是个数组,你可以写多个。 - LoadBalancerOptions:负载均衡选项(DownstreamHostAndPorts有多个的时候才能看到效果),有三种方式 - LeastConnection : 将请求发往最空闲的那个服务器 - RateLimitOptions: 请求限流配置,中几个配置项做下解释: - ClientWhiteList:一个字符串数组,在请求头中包含ClientId=xxx的请求不受限流控制,其中ClientId这个key可以修改,后边会介绍,xxx表示配置的白名单。 - EnableRateLimiting:Boolean值,是否启用限流,只有为true时,配置生效。 - Period:限流控制的时间段,可以输入 1s(1秒),1m(1分),1h(1小时),1d(1天)类似的值,以此类推。 - PeriodTimespan:超过限流限制的次数后,需要等待重置的时间(单位是秒)。 - Limit:在Period时间内最大能访问的数量。 - 用一句话描述一下上边的配置:对于除了请求头中包含ClientId=myclient的请求启用限流,1分钟之内该api最多被访问2次,如果已经达到2次,从第2次请求结束起30秒后才能进行下一次访问。 - FileCacheOptions: 请求缓存配置,配置做下解释: - TtlSeconds: 缓存时间(秒) - Region: 缓存区,表示改配置缓存放到哪个区域,可以在配置管理中进行维护,后边将做详细介绍 - 用一句话解释改配置:对链接使用somename缓存区进行60秒缓存。 - QoSOptions: 请求质量设置,对该路由添加QoS,对其中的3个属性解释如下: - ExceptionsAllowedBeforeBreaking:发生几次请求异常(比如超时)后进行熔断,该值必须大于0 - DurationOfBreak:熔断时间(单位:毫秒) - TimeoutValue:下游请求超时时间(单位:毫秒,默认90秒) - 用一句话描述上述配置:对请求超过1s将会超时,发生三次超时后保持60s熔断。 - GlobalConfiguration: 全局配置 ## 示例的内容: > 已试验 - 基本路由 - 接口聚合 - 限流 - 缓存 - 熔断 - 请求头传递 > 计划 - 认证 ## 使用网关和不使用网关的性能对比