.net core中使用Bumblebee架设微服务网关
Bumblebee是款基于.net core开发开源的http服务网关,经过最近版本的完善在功能足以满足作为微服务网关的需要。在微服务网关功能中它提供了应用服务负载,故障迁移,安全控制,监控跟踪和日志处理等;不仅如此它强大的插件扩展功能,可以针对实业务情况进行不同的相关插件应用开发满足实际情况的需要。
项目地址:https://github.com/IKende/Bumblebee
主要功能
- 服务管理,可以针对业务需要可以添加管理相应的服务应用
- 动态路由管理,可以针对不同请求路径制定不同的负载方案;负载的方案调整都具备热更能力,并不需要重启即可完成相关调整。
- 负载策略多样性,可以针对不同的路径和服务制定不同的负载方式,包括有:动太一致性,权重负载和请求限制等.
- 自动的负载故障和恢复迁移,组件对服务的可用性会进行一个可靠的管理,根据服务的可用性进行动态负载策略调整.
- 完善的插件扩展机制,可以制定如管理,监控,日志和安全访问等等功能。
- 支持
https
可以制定更安全的通讯服务应用 - 支持
windows
,linux
等多平台
部署使用
新建一个控制台程序后引用组件
BeetleX.Bumblebee
然后编写以下代码
private static Gateway g;
static void Main(string[] args)
{
g = new Gateway();
g.HttpOptions(h =>
{
h.Port = ;
});
g.SetServer("http://192.168.2.25:9090").AddUrl("*", , );
g.SetServer("http://192.168.2.26:9090").AddUrl("*", , );
g.Open();
Console.Read();
}
以上代码是在本机80
端口部署一个网关服务,并把请求负载到http://192.168.2.25:9090
和http://192.168.2.26:9090
这样使用比较麻烦,如果你想自己制定一些特别的需求才需要这样做。
引用管理插件
组件很多功能可以通过插件扩展的方式引入,以下是引入一个管理插件,通过这个插件对网关进行一个可视化操作。
BeetleX.Bumblebee.Configuration
这是一个可视化网关管理的插件,只要引用上即可通过插件提供的管理界面来进行网关配置
class Program
{
static Gateway gateway;
static void Main(string[] args)
{
gateway = new Gateway();
gateway.HttpOptions(o =>
{
o.Port = ;
o.LogToConsole = true;
o.LogLevel = BeetleX.EventArgs.LogType.Error;
});
gateway.Open();
gateway.LoadPlugin(typeof(Bumblebee.Configuration.Management).Assembly);
Console.Read();
}
}
或直接下载编译好的版本https://github.com/IKende/Bumblebee/blob/master/bin/Bumblebee1.0.2.zip执行dotnet GatewayServer.dll
运行后即可通过以下地址访问管理界面http://localhost/__system/bumblebee/
默认登陆用户名和密码是admin
和123456
,建议登陆后在配置页面上修改登陆密码。登陆后就进入网关的基础监控页面
当服务和路由配置好后,就可能通过这个页面查看网关的运行情况;主要包括网关的基础资源信息,服务应用状况和不同Url
的请求情况。由于这个插件还在完善中所以提供的功能并不够,只是一般的配置和监控。
服务配置简介
服务配置比较简单,只需要把服务地址添加进来即可;Max
是指网关连接到服务的最大连接数,可以根据应用的并发情况进行配置最大连接数;在并发中即使最大连接数被占用完也不会引起服务异常,组件还针对每个服务分配一个队列,只有当连接数被分配完后并且队列也满的情况才会拒绝请求。
路由配置简介
可以根据不同的Url
制定不同的负载策略,策略调整保存后会马上生效并不需要重启服务程序。
插件管理
插件是组件的核心,相关功能都可以通过插件二次扩展完成,包括现有的这个管理界面也是通过插件的方式加载进来(基础组件并不具备可视化管理功能 )。
主要用于管理网关的插件,用于启用,停用或配置插件相关信息
日志查看
这个主要是查看网关处理的日志,请求转发日志由于量比较大这个管理插件暂没有实现接管,使用者可以写插件来记录相关API转发的详细日志。
性能测试对比(Bumblebee vs Ocelot)
测试服务配置 E3 1230v2 16G windows 2008 Network:10Gb
测试工具 ab和bombardier
测试代码 https://github.com/IKende/Bumblebee/tree/master/BumblebeeVSOcelot
测试内容 分别启用500,1000和2000个连接进行请求并发测试
ab测试结果
bombardier测试结果
.net core中使用Bumblebee架设微服务网关的更多相关文章
- Bumblebee微服务网关的部署和扩展
Bumblebee是.netcore下开源基于BeetleX.FastHttpApi扩展的HTTP微服务网关组件,它的主要作用是针对WebAPI集群服务作一个集中的转发和管理:作为应用网关它提供了应用 ...
- 在 asp.net core 中使用类似 Application 的服务
在 asp.net core 中使用类似 Application 的服务 Intro 在 asp.net 中,我们可以借助 Application 来保存一些服务器端全局变量,比如说服务器端同时在线的 ...
- 微服务网关Ocelot加入IdentityServer4鉴权-.NetCore(.NET5)中使用
Consul+Ocelot+Polly在.NetCore中使用(.NET5)-Consul服务注册,服务发现 Consul+Ocelot+Polly在.NetCore中使用(.NET5)-网关Ocel ...
- 微服务网关 Spring Cloud Gateway
1. 为什么是Spring Cloud Gateway 一句话,Spring Cloud已经放弃Netflix Zuul了.现在Spring Cloud中引用的还是Zuul 1.x版本,而这个版本是 ...
- 王院生:Apache APISIX 微服务网关极致性能架构解析
2019 年 10 月 27 日,又拍云联合 Apache APISIX 社区举办 API 网关与高性能服务最佳实践丨Open Talk 杭州站活动,Apache APISIX PPMC 成员王院生做 ...
- 微服务架构学习与思考(10):微服务网关和开源 API 网关01-以 Nginx 为基础的 API 网关详细介绍
微服务架构学习与思考(10):微服务网关和开源 API 网关01-以 Nginx 为基础的 API 网关详细介绍 一.为什么会有 API Gateway 网关 随着微服务架构的流行,很多公司把原有的单 ...
- 使用 Node.js 搭建微服务网关
目录 Node.js 是什么 安装 node.js Node.js 入门 Node.js 应用场景 npm 镜像 使用 Node.js 搭建微服务网关 什么是微服务架构 使用 Node.js 实现反向 ...
- springcloud使用Zuul构建微服务网关入门
为什么要使用微服务网关 不同的微服务一般会经过不同的网络地址,而外部客户端可能需要调用多个服务的接口才能完成一个业务需求. 如果让客户端直接与各个微服务通信,会有以下的问题: 客户端会多次请求不同的微 ...
- 解决微服务网关Ocelot使用AddStoreOcelotConfigurationInConsul后请求404问题
一个小插曲,最近研究 netcore 微服务网关,在使用AddStoreOcelotConfigurationInConsul将配置存到consul后,任何经过网关的请求都出现404,并且没有任何有用 ...
随机推荐
- HTML(四)图像,表格
HTML 图像 插入动图的语法和静态图的语法是一样的 HTML 图像- 图像标签( )和源属性(Src) 一个来自文件夹中的图像: 一个来自网站的图像: alt 属性用来为图像定义一串预备的可替换的文 ...
- F-maximum clique 1_2019牛客暑期多校训练营(第五场)
题意 给出n个不同的数字\(a_i\),求出最大的子集,使得子集内任意两个数在二进制下至少有两位不同. 题解 先对任意两个二进制位只有一个不同的两个数连边,那么问题就转化成找出最多的点集,任意两点没有 ...
- 洛谷 P2051 [AHOI2009]中国象棋 状态压缩思想DP
P2051 [AHOI2009]中国象棋 题意: 给定一个n*m的空棋盘,问合法放置任意多个炮有多少种情况.合法放置的意思是棋子炮不会相互打到. 思路: 这道题我们可以发现因为炮是隔一个棋子可以打出去 ...
- HDU 4719Oh My Holy FFF 线段树+DP
/* ** 日期: 2013-9-12 ** 题目大意:有n个数,划分为多个部分,假设M份,每份不能多于L个.每个数有一个h[i], ** 每份最右边的那个数要大于前一份最右边的那个数.设每份最右边的 ...
- hdu 5887 Herbs Gathering (dfs+剪枝 or 超大01背包)
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=5887 题解:这题一看像是背包但是显然背包容量太大了所以可以考虑用dfs+剪枝,贪心得到的不 ...
- 线段树(求单结点) hdu 1556 Color the ball
Color the ball Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- React-router总结
版本 v3和v4有一些差距: https://blog.csdn.net/qq_35484341/article/details/80500237 以下的总结,都是基于V4的 官方文档:https:/ ...
- java基础day2
Java标识符命名规则: 标识符由字母,下划线“_”.美元符号$或数字组成/ 不能以数字开头 区分大小写 不能是关键字 “ 见名知意” 约定俗成的规则 类名:首字母大写变量名:除第一个单词外小写,其他 ...
- Android开发教程:开发框架基本原理
1.提供应用程序框架(Framework) 开发者可以遵照这些框架搭建应用程序读者可以结合J2SE平台的Applet框架或J2ME平台的移动信息设备套件框架来理解Android平台的应用程序框架. 每 ...
- Redis缓存和数据库一致性问题
工作中,经常会遇到缓存和数据库数据一致性问题.从理论上设置过期时间,是保证最终一致性的解决方案.这种方案下,我们可以对存入缓存的数据设置过期时间,所有的写操作以数据库为准,对缓存操作只是尽最大努力即可 ...