当前位置:首页 > 民俗文化

ocelot .NET Core微服务之路:基于Ocelot的API网关实现--http/https协议篇

前言

最近一直忙于公司和私人兼职,白天十个小时,晚上四个小时。感觉天天打鸡血,精力充沛。连自己学过打酱油的宝宝都很少管,我也很久没更新博客了。特别抱歉,朋友一直等着关机!哈哈,开个玩笑,非常感谢朋友们的关注和支持。

不到半个月的时间,猪年就要到了。在此,提前祝大家猪年好运。祝你身体健康,长寿,好运,财源广进,万事如意,新年快乐,吉祥平安!

请特别注意,BaseUrl是我们对外公开的Url。比如我们的豹猫运行在一个http://127.0.0.1的地址(或端口)上,但是有一个绑定了域名https://api.mybusiness.com的Nginx,所以我们这里的BaseUrl应该是https://api.mybusiness.com。

将配置文件添加到ASP.NET核心配置

我们需要添加我们通过IWebHostBuilder添加到Asp.net核心的json文件

【端口】:5000

},

{

“主机”:“127.0.0.1”,

【端口】:5001

}

],

/*

上游服务配置配置、请求和网关条目。

/API/values-通过定义规则来配置上游PATH规则

/{ URL }-使用一般(通用)规则来配置上游PATH规则

*/

" UpstreamPathTemplate ":/{ URL } ",

//上游支持的http请求方法

" UpstreamHttpMethod": [

“得到”,

“贴”,

“删除”,

“更新”

],

//上游域名主机

// "UpstreamHost": "domain.com ",

//当前路由节点的优先级

【优先】:99、

/*

路由负载平衡:

转义连接–将请求发送到最不忙的服务器空

循环赛——依次发送

无负载平衡–总是发送到第一个请求或服务发现

*/

“负载平衡器”:“最小连接”,

“键”:“路由1”,

}

],

//限流配置(请求限流)

//限制请求流可以防止下游服务器因访问过载而崩溃

" RateLimitOptions": {

//client白名单-白名单

“客户端白名单”:[],

//EnableRateLimiting-是否启用限流

" EnableRateLimiting "/>

DownstreamPathTemplate:下游服务的路径模板,支持RESTful模板路径。DownstreamScheme:下游服务协议,支持http和https。DownstreamHostAndPorts:下游服务的地址和集合,用于定义要将请求转发到的任何下游服务的主机和端口,通常,这只包含一个条目,但有时您可能希望向下游服务加载负载均衡。UpstreamPathTemplate: 上游也就是用户输入的请求Url模板,支持RESTful模板路径,或者设置一个空列表以允许其中任何一个方法。UpstreamHttpMethod: 上游请求http方法,可使用数组。 捕获所有(通用模板):

通用模板意味着所有请求都被转发,并且上行路径模板和下行路径模板被设置为“/{url}”

比如你有相同的两条路线,在请求/商品/删除时,下面的会生效,也就是说优先级值越高优先匹配。

请求聚合:

Ocelot允许我们指定组成多个正常路由的聚合的重新路由,并将它们的响应映射到下游对象。通常,当一个客户端向一个服务器发送多个请求时,它可能只是一个服务器。该特性允许您使用ocelot开始向后端实现前端类型的体系结构,并且还可以减少后端服务节点上的重复处理负载。

{

"重新路由":[

{

" Downstream PathTemplate ":/,

" UpstreamPathTemplate ":/Laura ",

" UpstreamHttpMethod": [

“得到”

],

“下行方案”:“http”,

"下游主机和端口":[

{

“主机”:“本地主机”,

【港口】:51881

}

],

“钥匙”:“劳拉”

},

{

" Downstream PathTemplate ":/,

" UpstreamPathTemplate ":/Tom ",

" UpstreamHttpMethod": [

“得到”

],

“下行方案”:“http”,

"下游主机和端口":[

{

“主机”:“本地主机”,

【港口】:51882

}

],

“钥匙”:“汤姆”

}

],

“聚合”:[

{

“重新路由”:[

“汤姆”,

“劳拉”

],

" UpstreamPathTemplate ":/,

“聚合器”:“FakeDefinedAggregator”

}

]

}

添加addsingleton定义的聚合器

服务。AddOcelot()。添加TransientDefinedAggregator<。FakeDefinedAggregator>。();

FakeDefinedAggregator需要从IDefinedAggregator继承,这样下游服务的统一处理在通过Aggreage后会返回到Response。

ClientWihteList 白名单EnableRateLimiting 是否启用限流Period 统计时间段:1s, 5m, 1h, 1dPeroidTimeSpan 多少秒之后客户端可以重试Limit 在统计时间段内允许的最大请求数量

在全局配置下,我们还可以配置以下内容

ExceptionsAllowedBeforeBreaking 允许多少个异常请求DurationOfBreak 熔断的时间,单位为秒TimeoutValue 如果下游请求的处理时间超过多少则自如将请求设置为超时 缓存

Ocelot支持一些非常基础的缓存功能,是基于CacheManager实现的。当然,我们还需要在使用过程中安装CacheManager的lib包,然后通过Ocelot CacheManager的扩展方法添加Cache manager实现。

" FilecacheOptions ":{ " TTL seconds ":15," Region": "somename"}

在本例中,ttl设置为15秒,因此缓存仅存在15秒。当然,您也可以通过添加自定义缓存接口来注入自定义缓存服务。

1服务。AddSingleton<。IOcelotCache & lt缓存响应>。,我缓存>;()认证

如果我们需要对下游API进行认证和认证,首先需要在豹猫网关中加入认证服务。这与将认证服务添加到单独的应用编程接口或ASP.NET核心MVC没有什么不同。

然后在重新路由的路由模板中的认证选项中配置它,只要我们的认证提供者是一致的。

签名权

在我们通过身份验证中的AllowedScopes获得声明之后,如果我们想要对权限进行身份验证,我们需要添加以下配置。

" Routecleims requirement ":{ " UserType ":" registered " }

如果当前请求上下文的令牌中的声明没有name="UserType "和value="registered ",则无法访问下游服务。

一个简单的例子

以上,我们简单介绍了豹猫的一些功能。完整的功能介绍可以参考https://豹猫. readthedocs.io的官方文档,接下来作者做了一个简单的路由转发例子来演示基于http/https协议的豹猫强大而简单的功能。

基于以上三个项目,我们只介绍可以作为网关的功能。另外,我们还需要一个上游作为请求客户端(当然我更喜欢把客户端做成Console控制台,方便快捷),一个下游作为服务器,任意项目名。

创建下游服务器ASP.NET的默认模板时,将默认创建一个值控制器。为了演示和获得当前路由转发的结果,我们只需要稍微修改其中一个接口,并将默认启动端口设置为5000。

在上游服务中,HttpClient可以用来模拟一个请求。

这里,作为ApiGateway服务器,8080默认使用通用路由模板(通用匹配{url}用于上游和下游直接路由),代码不再发布。启动8080网关和5000服务器,通过Console控制台直接访问8080配置(映射)的公有地址(实际上是5000上的api/values),可以看到如下结果。

更多演示示例和源代码,请参考作者的源代码https://github . com/steveeleecn 87/dote asy . RPC/tree/master/src/dote asy . RPC . demo。

摘要

豹猫能实现的功能远不止这些。更多详情请参考美国在线官方API或张兑的解释。

编一集

对了,注意DotEasy。Rpc之友,框架已经更新到1.0.3,主要增加和修改了以下内容:

1.界面注册改为Autofac,实现了统一的批量界面注入,而不是一次手工逐个注入界面。

2.通过代理生成,取消了原来的“兔耳”,增加了客户端非异步远程调用模式,避免了每次接口调用的任务非阻塞模式。

3.通过代理生成,调用方会自动释放接口实例资源,即IDisposable接口的实现,而客户端不需要实现。

4.由代理生成,如果服务节点中没有网关服务(不是微服务,而是直接的RPC调用),客户端对服务器的访问可以通过Token认证。

现在客户端代码变得越来越简单和丰富:

下一步,我们将在网关中研究并实现http到rpc协议的自动(或手动)转换,这可能会导致绕道而行。请继续关注你喜欢的伙伴,下一篇文章会介绍。

感谢阅读!

原始地址:

https://www . cn blogs . com/SteveLee/p/Onelot _ Api _ http _ and _ https . html

1.《ocelot .NET Core微服务之路:基于Ocelot的API网关实现--http/https协议篇》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《ocelot .NET Core微服务之路:基于Ocelot的API网关实现--http/https协议篇》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/guoji/1296163.html

上一篇

山东聊城辱母案 起底聊城黑老大吴学占 刺死辱母者案又有新进展?

下一篇

孩子上辅导班老师不让回家 家长强行领回来一看崩溃

路由器掉线 无线路由器掉线的五种常见情况及解决方法

  • 路由器掉线 无线路由器掉线的五种常见情况及解决方法
  • 路由器掉线 无线路由器掉线的五种常见情况及解决方法
  • 路由器掉线 无线路由器掉线的五种常见情况及解决方法

泰坦尼克号船锚模板将拍卖 估价665万

  • 泰坦尼克号船锚模板将拍卖 估价665万
  • 泰坦尼克号船锚模板将拍卖 估价665万
  • 泰坦尼克号船锚模板将拍卖 估价665万

销售表格模板 销售表格明细模板 excel 销售表格模板

销售表格明细模板 销售表格明细模板 excel 销售表格模板

妻子出轨离婚协议书范本2021 老婆出轨了离婚协议怎样写 女方出轨离婚协议书模板

结婚的理由无外乎就是两情相悦、到了年纪、各取所需,而离婚的理由则显得有点五花八门了,其中被提及最多的离婚原因相信就是出轨了,出轨没有男女之分,只关乎三观正不正,那么如果老婆出轨了离婚协议怎样写呢?今天见闻坊小编就为大家整理了2021妻子出轨离婚协议书范本,马上来了解一下吧!...

猫接两个无线路由器图 光猫连接两个无线路由器的方式,设置方法及优劣对比

  • 猫接两个无线路由器图 光猫连接两个无线路由器的方式,设置方法及优劣对比
  • 猫接两个无线路由器图 光猫连接两个无线路由器的方式,设置方法及优劣对比
  • 猫接两个无线路由器图 光猫连接两个无线路由器的方式,设置方法及优劣对比

一个光猫怎么连两个无线路由器 光猫连接两个无线路由器的方式,设置方法及优劣对比

  • 一个光猫怎么连两个无线路由器 光猫连接两个无线路由器的方式,设置方法及优劣对比
  • 一个光猫怎么连两个无线路由器 光猫连接两个无线路由器的方式,设置方法及优劣对比
  • 一个光猫怎么连两个无线路由器 光猫连接两个无线路由器的方式,设置方法及优劣对比

一个猫怎么连接两个无线路由器 光猫连接两个无线路由器的方式,设置方法及优劣对比

  • 一个猫怎么连接两个无线路由器 光猫连接两个无线路由器的方式,设置方法及优劣对比
  • 一个猫怎么连接两个无线路由器 光猫连接两个无线路由器的方式,设置方法及优劣对比
  • 一个猫怎么连接两个无线路由器 光猫连接两个无线路由器的方式,设置方法及优劣对比