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:9090http://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/

默认登陆用户名和密码是admin123456,建议登陆后在配置页面上修改登陆密码。登陆后就进入网关的基础监控页面

当服务和路由配置好后,就可能通过这个页面查看网关的运行情况;主要包括网关的基础资源信息,服务应用状况和不同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架设微服务网关的更多相关文章

  1. Bumblebee微服务网关的部署和扩展

    Bumblebee是.netcore下开源基于BeetleX.FastHttpApi扩展的HTTP微服务网关组件,它的主要作用是针对WebAPI集群服务作一个集中的转发和管理:作为应用网关它提供了应用 ...

  2. 在 asp.net core 中使用类似 Application 的服务

    在 asp.net core 中使用类似 Application 的服务 Intro 在 asp.net 中,我们可以借助 Application 来保存一些服务器端全局变量,比如说服务器端同时在线的 ...

  3. 微服务网关Ocelot加入IdentityServer4鉴权-.NetCore(.NET5)中使用

    Consul+Ocelot+Polly在.NetCore中使用(.NET5)-Consul服务注册,服务发现 Consul+Ocelot+Polly在.NetCore中使用(.NET5)-网关Ocel ...

  4. 微服务网关 Spring Cloud Gateway

    1.  为什么是Spring Cloud Gateway 一句话,Spring Cloud已经放弃Netflix Zuul了.现在Spring Cloud中引用的还是Zuul 1.x版本,而这个版本是 ...

  5. 王院生:Apache APISIX 微服务网关极致性能架构解析

    2019 年 10 月 27 日,又拍云联合 Apache APISIX 社区举办 API 网关与高性能服务最佳实践丨Open Talk 杭州站活动,Apache APISIX PPMC 成员王院生做 ...

  6. 微服务架构学习与思考(10):微服务网关和开源 API 网关01-以 Nginx 为基础的 API 网关详细介绍

    微服务架构学习与思考(10):微服务网关和开源 API 网关01-以 Nginx 为基础的 API 网关详细介绍 一.为什么会有 API Gateway 网关 随着微服务架构的流行,很多公司把原有的单 ...

  7. 使用 Node.js 搭建微服务网关

    目录 Node.js 是什么 安装 node.js Node.js 入门 Node.js 应用场景 npm 镜像 使用 Node.js 搭建微服务网关 什么是微服务架构 使用 Node.js 实现反向 ...

  8. springcloud使用Zuul构建微服务网关入门

    为什么要使用微服务网关 不同的微服务一般会经过不同的网络地址,而外部客户端可能需要调用多个服务的接口才能完成一个业务需求. 如果让客户端直接与各个微服务通信,会有以下的问题: 客户端会多次请求不同的微 ...

  9. 解决微服务网关Ocelot使用AddStoreOcelotConfigurationInConsul后请求404问题

    一个小插曲,最近研究 netcore 微服务网关,在使用AddStoreOcelotConfigurationInConsul将配置存到consul后,任何经过网关的请求都出现404,并且没有任何有用 ...

随机推荐

  1. springboot事务中的一些坑

    springboot开启声明式事务方式 在Application启动类中加入注解@EnableTransactionManagement(mode = AdviceMode.PROXY) 在需要加入事 ...

  2. ios5与ios7数字输入样式一致

    <input  name="activeCode" id="activeCode" ontouchstart="this.type='numbe ...

  3. CODE[VS] 1294 全排列

    1294 全排列  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解  查看运行结果     题目描述 Description 给出一个n, 请输出n的所有全 ...

  4. 【Swagger】可能是目前最好的 Spring Boot 集成 swagger 的方案

    [Swagger]可能是目前最好的Spring Boot集成 swagger 的方案 ![](https://img2018.cnblogs.com/blog/746311/201909/746311 ...

  5. uwsgi基本介绍安装和测试--使用Django建立你的第一个网站

    一 基本介绍 对像我这样不是专业做网络的人来说,uuwsgi是一个陌生的东西.它是谁?它可以做什么?谁会用到它?其实,在不知道一个东西是什么的情况下,能够快速的了解并使用它,是一门很有艺术性的事情.最 ...

  6. MySQL 数据库出现导入xls数据出现1062主从错误错误问题解决方案

    今天把xls数据表导入MySQL数据库时发现出现1062错误    ,并且有20-700条数据一直导入不了所以开始找解决方案. 解决方案1:   数据库表设计问题导致相同字段的重复数据不能导入   解 ...

  7. 剑指offer】Java版代码(完整版)

    转自:剑指offer]Java版代码(完整版) 转自:[剑指offer] JAVA版题解(完整版)

  8. JSP标签介绍

    JSP标签也称之为Jsp Action(JSP动作)元素,它用于在Jsp页面中提供业务逻辑功能,避免在JSP页面中直接编写java代码,造成jsp页面难以维护. jsp的常用标签有以下三个 <j ...

  9. FreeSql (二十六)贪婪加载 Include、IncludeMany、Dto、ToList

    贪婪加载顾名思议就是把所有要加载的东西一次性读取. 本节内容为了配合[延时加载]而诞生,贪婪加载和他本该在一起介绍,开发项目的过程中应该双管齐下,才能写出高质量的程序. Dto 映射查询 Select ...

  10. Android开发必看知识

    奇艺高清UI界面源代码 http://www.eoeandroid.com/thread-160824-1-1.html 搜索关键字飞入飞出效果 http://www.eoeandroid.com/t ...