Ocelot的学习
Ocelot是一个用.NET Core实现并且开源的API网关,它功能强大,包括了:路由、认证、鉴权、简单缓存、限流熔断、负载均衡器等。简单的来说Ocelot是一堆的asp.net core middleware组成的一个有顺序的管道。当它拿到请求之后会用一个request builder来构造一个HttpRequestMessage发到下游的真实服务器,等下游的服务返回response之后再由一个middleware将它返回的HttpResponseMessage映射到HttpResponse上。
项目描述
> 1. 这是一个ASP.NET Core Web项目,主要展示Ocelot的使用
> 2. 实现Ocelot来控制访问
> 3. 实现Ocelot来控制负载均衡
项目架构
// OcelotStudy项目
namespace OcelotInput
{
public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
} public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((hostingContext, config) =>
{
config
.SetBasePath(hostingContext.HostingEnvironment.ContentRootPath)
.AddJsonFile("ocelotsettings.json", true, true)
.AddEnvironmentVariables();
})
.UseStartup<Startup>();
}
} namespace OcelotInput
{
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddOcelot();
} public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
} app.UseOcelot().Wait();
}
}
}
其他两个是asp.net core api的项目,vs直接创建就可以
Ocelot配置
{
"ReRoutes": [
{
"DownstreamPathTemplate": "/values/{action}", //下游服务配置
"DownstreamScheme": "http",
"DownstreamHostAndPorts": [
{
"Host": "localhost",
"Port": 54679
},
{
"Host": "localhost",
"Port": 57417
}
],
"UpstreamPathTemplate": "/values/{action}", //上游服务配置
"UpstreamHttpMethod": [
"Get"
],
//"AddHeadersToRequest": {},
//"AddClaimsToRequest": {},
//"RouteClaimsRequirement": {}, //配置Claims鉴权
//"AddQueriesToRequest": {},
//"RequestIdKey": "",
//"FileCacheOptions": { //缓存配置
// "TtlSeconds": 0,
// "Region": ""
//},
//"ReRouteIsCaseSensitive": false,
//"ServiceName": "",
//"QoSOptions": { //服务质量与熔断
// "ExceptionsAllowedBeforeBreaking": 3,
// "DurationOfBreak": 10,
// "TimeoutValue": 5000
//},
"LoadBalancerOptions": {
"Type": "LeastConnection"
} //LoadBalancer将决定负载均衡的算法,LeastConnection – 将请求发往最空闲的那个服务器,RoundRobin – 轮流发送,NoLoadBalance – 总是发往第一个请求或者是服务发现
//"RateLimitOptions": { //为限流配置
// "ClientWhitelist": [],
// "EnableRateLimiting": false,
// "Period": "",
// "PeriodTimespan": 0,
// "Limit": 0
//},
//"AuthenticationOptions": { //配置服务认证
// "AuthenticationProviderKey": "",
// "AllowedScopes": []
//},
//"HttpHandlerOptions": {
// "AllowAutoRedirect": false,
// "UseCookieContainer": false
// //"UseTracing": true
//}
//"UseServiceDiscovery": false, // 配置服务发现
}
//{
// "DownstreamPathTemplate": "/{url}",
// "DownstreamScheme": "https",
// "DownstreamHostAndPorts": [
// {
// "Host": "localhost",
// "Port": 80
// }
// ],
// "UpstreamPathTemplate": "/{url}",
// "UpstreamHttpMethod": [ "Get" ]
//}
]
//"Aggregates": [ //服务聚合配置
// {
// "ReRouteKeys": [
// "Tom",
// "Laura"
// ],
// "UpstreamPathTemplate": "/"
// }
//]
}
运行效果
Web1项目:http://localhost:54679, Web2项目:http://localhost:57417, Ocelot项目:http://localhost:57083
源码地址
https://github.com/jasonhua95/samll-project/tree/master/OcelotStudy
Ocelot的学习的更多相关文章
- 【转载】Ocelot网关的路由热更新
调用API修改Ocelot的配置文件 May 11, 2018 | netcoreocelot | 410 阅读 Ocelot是一个基于.net core的开源webapi服务网关开源项目,功能比较强 ...
- 调用API修改Ocelot的配置文件
Ocelot是一个基于.net core的开源webapi服务网关开源项目,功能比较强大,Github项目地址为:https://github.com/ThreeMammals/Ocelot,关于Oc ...
- 微服务·API网关
阅文时长 | 3.52分钟 字数统计 | 1232字符 主要内容 | 1.什么是API网关 2.微服务中的API网关 3.几种部署策略 『微服务·API网关』 编写人 | SCscHero 编写时间 ...
- Ocelot学习笔记
最近因工作需要,开始学习Ocelot.首先简单介绍一下,Ocelot是一个基于.net core的开源webapi 服务网关项目,目前已经支持了IdentityServer认证.根据 作者介绍,Oce ...
- ASP.NET Core on K8S学习之旅(13)Ocelot API网关接入
本篇已加入<.NET Core on K8S学习实践系列文章索引>,可以点击查看更多容器化技术相关系列文章. 上一篇介绍了Ingress的基本概念和Nginx Ingress的基本配置和使 ...
- (10)学习笔记 ) ASP.NET CORE微服务 Micro-Service ---- Ocelot+Identity Server
用 JWT 机制实现验证的原理如下图: 认证服务器负责颁发 Token(相当于 JWT 值)和校验 Token 的合法性. 一. 相关概念 API 资源(API Resource):微博服务器接口. ...
- (8)学习笔记 ) ASP.NET CORE微服务 Micro-Service ---- Ocelot网关(Api GateWay)
说到现在现有微服务的几点不足: 1) 对于在微服务体系中.和 Consul 通讯的微服务来讲,使用服务名即可访问.但是对于手 机.web 端等外部访问者仍然需要和 N 多服务器交互,需要记忆他们的服务 ...
- 微服务(入门学习五):identityServer4+ocelot+consul实现简单客户端模式
简介 主要是采用identity Server4 和ocelot 加上consul 实现简单的客户端模式 开发准备 环境准备 下载并安装Consul具体请参考前几篇的内容 项目介绍 创建ocelot ...
- Ocelot API网关的实现剖析
在微软Tech Summit 2017 大会上和大家分享了一门课程<.NET Core 在腾讯财付通的企业级应用开发实践>,其中重点是基于ASP.NET Core打造可扩展的高性能企业级A ...
随机推荐
- Nginx 负载配置
简版的,详细参数需要自己微调. nginx.conf http{ upstream name { server 127.0.0.1:8777; server 127.0.0.1:8778; serve ...
- 转发: 关于ST MCU的UID详细说明
https://www.stmcu.org.cn/article/id-327990 ST MCU芯片中的绝大部分都内置一串96位唯一标识码[unique ID].时不时有人问起这个东西,尤其最近感, ...
- LeetCode 94. Binary Tree Inorder Traversal 二叉树的中序遍历 C++
Given a binary tree, return the inorder traversal of its nodes' values. Example: Input: [,,] \ / Out ...
- Thinkphp5.0支付宝支付扩展库类库大全
Thinkphp5.0支付宝支付扩展库类库大全,包括手机网站支付.电脑网站支付.支付查询.退款.退款查询.对账单等. Thinkphp5.0支付宝调用方法: 电脑网站支付 Pagepay.php 调用 ...
- JS时间戳转时间
function timestampToTime(timestamp) { S = timestamp, T = new Date(1E3 * S), Format = function(Q){ret ...
- python大法好——ython GUI编程(Tkinter)
Python GUI编程(Tkinter) Python 提供了多个图形开发界面的库,几个常用 Python GUI 库如下: Tkinter: Tkinter 模块(Tk 接口)是 Python 的 ...
- 分享一个微信自动跳转外部浏览器下载app的api接口!
现在微信渠道可以说是拉新最快的渠道,因为微信具备强裂变性.但是目前微信对第三方下载链接的拦截是越来越严格了,那么想要在微信内肆无忌惮地推广链接就需要用到微信跳转浏览器的接口,那如何获取该接口呢? ...
- mysql的SQL集锦
1. SQL内顺号 SELECT (@num := @num + 1) as index, item FROM tbl, (select @num := 0) dmy; 2. 空
- C++文档补充
string s("100010"); bitset<5> b(s,2,2); 只有上图这样写,下图这样是错的.记住.http://www.cppblog.com/k ...
- 使用dubbo中间件的zookeeper注册中心时报错
在项目中搭建soa项目时,使用dubbo服务中间件时需要在虚拟机中创建一个zookeeper注册中心,在配置都没有问题的时候,如果服务端启动成功,但是消费端启动报错并且看不出据地位置时,一定要注意你的 ...