前言
最近一直忙于公司和私人兼职,白天十个小时,晚上四个小时。感觉天天打鸡血,精力充沛。连自己学过打酱油的宝宝都很少管,我也很久没更新博客了。特别抱歉,朋友一直等着关机!哈哈,开个玩笑,非常感谢朋友们的关注和支持。
不到半个月的时间,猪年就要到了。在此,提前祝大家猪年好运。祝你身体健康,长寿,好运,财源广进,万事如意,新年快乐,吉祥平安!
请特别注意,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