开箱即用Bumblebee独立部署搭建webapi网关详解
在之前的章节里都是讲述如何在程序中使用Bumblebee
来构建一个Webapi网关;但这样显然有些麻烦,毕竟很多时候可能只需要一个简单负载处理,还需要写个程序针对服务进行编写代码或配置的确是比较麻烦的事情;如果有负载方面的调整还需要重新编译部署这的确是很让人头痛的事情!为了解决这一问题这些时间针对Bumblebee
写了个简单的web管理插件并编写一个服务集成进去,只需要简单地部署即可把网关搭建起来并用web管理配置负载服务。
服务安装
首先服务器要安装dotnet core 2.14或更版本,操作系统(linux,windows均可);在不同系统中安装.net core可以到https://dotnet.microsoft.com/download查看详细安装指南 下载最新版本https://github.com/IKende/Bumblebee/tree/master/bin的BumblebeeServerx.x.x.zip
并解压到相应的目录中运行以下指令
- windows
dotnet Bumblebee.Server.dll
或
run.bat
- linux
dotnet Bumblebee.Server.dll
或
./run.sh
如果看到以下日志说明服务运行成功
组件默认启用端口是9090
可以通过修改HttpConfig.json
来指写其他端口或HTTPS服务
"Host": "",
"Port": 9090,
"SSL": false,
"CertificateFile": "",
"CertificatePassword": "",
Web管理配置
服务启动后就可以通过web来管理网关的负载配置策略,可能通过http://gatewayip:9090/__admin/
来访问管理;管理需要用户登陆,默认用户密码是:admin
123456
;进入管理后界面如下:
进入界面后可以看到网关的处理状况,主要包括CPU,并发和网络的详细使用情况。当网关没有配置服务负载策略时访问会得到一个5XX的错误信息,具体如下:
这个时候首先要配置负载的webapi服务,可以根据实际情况添加对应服务的域名或IP地址
网关会检测服务的可用情况,如果服务不可用会显示一个红色灯的小图标;服务添加完成后就要进行转发路由设置
Bumblebee是以url来区分转发,可以根据自己的需求制定多个Url正则匹配,每个匹配下面都可以添加N个负载服务。
*
是默认路由,当没有匹配到的情况则使用该路由,路由是长正则优先匹配;每个路由下面都可以针对服务单独设置权重和RPS并发限制,具体设置数值则和实际应用相结合。以上设置保存后都会实时更新到网关中,因此整个配置策略是即改即生效。
测试
以下是简单地测试一下刚部署的网关,看一下实际处理效果
在扩展的Gateway中使用管理插件
如果基于Bumblebee定义了一个网关服务是否可以用这个简单的管理功能呢?答案是可以的,Bumblebee提供了一系列的插件接口用于提供功能扩展,只需要引用这个管理包加载它即可
Install-Package BeetleX.Bumblebee.Configuration -Version 0.5.0
安装完成后只需要在网关启动代码后加载即可
g = new Gateway();
g.Open();
g.LoadPlugin(typeof(Bumblebee.Configuration.Management).Assembly);
如果有疑问可访问: https://github.com/IKende/Bumblebee/issues
开箱即用Bumblebee独立部署搭建webapi网关详解的更多相关文章
- 【转】jumpserver 堡垒机环境搭建(图文详解)
jumpserver 堡垒机环境搭建(图文详解) 摘要: Jumpserver 是一款由python编写开源的跳板机(堡垒机)系统,实现了跳板机应有的功能.基于ssh协议来管理,客户端无需安装ag ...
- Ubuntu14.04下Mongodb(离线安装方式|非apt-get)安装部署步骤(图文详解)(博主推荐)
不多说,直接上干货! 说在前面的话 首先,查看下你的操作系统的版本. root@zhouls-virtual-machine:~# cat /etc/issue Ubuntu LTS \n \l r ...
- Ubuntu16.04下Mongodb(离线安装方式|非apt-get)安装部署步骤(图文详解)(博主推荐)
不多说,直接上干货! 说在前面的话 首先,查看下你的操作系统的版本. root@zhouls-virtual-machine:~# cat /etc/issue Ubuntu LTS \n \l r ...
- 基于CentOS6.5下snort+barnyard2+base的入侵检测系统的搭建(图文详解)(博主推荐)
为什么,要写这篇论文? 是因为,目前科研的我,正值研三,致力于网络安全.大数据.机器学习研究领域! 论文方向的需要,同时不局限于真实物理环境机器实验室的攻防环境.也不局限于真实物理机器环境实验室的大数 ...
- 基于Windows7下snort+apache+php 7 + acid(或者base) + adodb + jpgraph的入侵检测系统的搭建(图文详解)(博主推荐)
为什么,要写这篇论文? 是因为,目前科研的我,正值研三,致力于网络安全.大数据.机器学习.人工智能.区域链研究领域! 论文方向的需要,同时不局限于真实物理环境机器实验室的攻防环境.也不局限于真实物理机 ...
- Ubuntu下Git从搭建到使用详解
Ubuntu下Git从搭建到使用详解 一.git的搭建 (1).sudo apt-get update (2).sudo apt-get -y install git 符:安装最新版本方法: add- ...
- (转)Centos7上部署openstack ocata配置详解
原文:http://www.cnblogs.com/yaohong/p/7601470.html 随笔-124 文章-2 评论-82 Centos7上部署openstack ocata配置详解 ...
- Ubuntu14.04下Mongodb数据库可视化工具安装部署步骤(图文详解)(博主推荐)
不多说,直接上干货! 前期博客 Ubuntu14.04下Mongodb(离线安装方式|非apt-get)安装部署步骤(图文详解)(博主推荐) Ubuntu14.04下Mongodb官网安装部署步骤(图 ...
- Ubuntu14.04下Mongodb官网卸载部署步骤(图文详解)(博主推荐)
不多说,直接上干货! 前期博客 Ubuntu14.04下Mongodb官网安装部署步骤(图文详解)(博主推荐) https://docs.mongodb.com/manual/tutorial/ins ...
随机推荐
- 分布式任务调度——quartz + spring + 数据库
项目中使用分布式并发部署定时任务,多台跨JVM,按照常理逻辑每个JVM的定时任务会各自运行,这样就会存在问题,多台分布式JVM机器的应用服务同时干活,一个是加重服务负担,另外一个是存在严重的逻 ...
- 时间复杂度O(n),空间复杂度O(1)解斐波那契数列
#include <stdio.h> #include <iostream> using namespace std; long long fibs1(int in_iN) { ...
- Scrapy爬虫框架第一讲(Linux环境)
1.What is Scrapy? 答:Scrapy是一个使用python语言(基于Twistec框架)编写的开源网络爬虫框架,其结构清晰.模块之间的耦合程度低,具有较强的扩张性,能满足各种需求.(前 ...
- 【Quartz】持久化到数据库【五】
前言 我们做到这里已经对Quartz定时器组件已经是学会了基本的使用了.但是我们有没有想过任务开启之后万一断掉了,当机了我们怎么办,你是否还想继续执行原先的任务.我们普通的创建是把任务放在内存中存 ...
- java多线程及线程安全详解
为什么要使用多线程: 单线程只能干一件事 而多线程可以同时干好多事(将任务放到线程里执行 效率高) 而所谓同时干并不是真正意义上的同时 只是(这里就叫CPU)cpu在每个线程中随机切换来执行 ...
- MySQL,简单了解下、
第一章 数据备份与导入导出 1.1.备份基本概念介绍 1.2.mysqldump详解 1.3.mydumper浅析 1.4.MySQL物理备份基本操作 1.5.了解mysqlpump工具 1.6.数据 ...
- Day2 《机器学习》第二章学习笔记
这一章应该算是比价了理论的一章,我有些概率论基础,不过起初有些地方还是没看多大懂.其中有些公式的定义和模型误差的推导应该还是很眼熟的,就是之前在概率论课上提过的,不过有些模糊了,当时课上学得比较浅. ...
- How nginx "location if" works
Nginx's if directive does have some weirdness in practice. And people may misuse it when they do not ...
- pymysql 详解
上一章 pymysql安装完之后 进入到pymysql路径下,可以看到下面文件列表 首先 这是我的pymysql文件路径 进入pymysql的文件夹 可以看到下面这些文件列表 pymysql 数据类型 ...
- tkinter中spinbox递增和递减控件(十)
spinbox递增和递减控件 import tkinter wuya = tkinter.Tk() wuya.title("wuya") wuya.geometry("3 ...