在新版本的服务网关中提供了服务发现和泛域名路由解决功能,服务发现可以在无须配置的情况下实现服务自动注册到网关中解脱对服务配置的繁琐工作;而泛域名路由则可以针对不同的域名制定不同的负载规则。

使用consul服务发现插件

网关需要维护相关负载的服务器,手动添加相对来说是一件比较麻烦的工作;为了解决这一问题组件扩展了一个基于consul服务发现插件,通过配置这个插件和启用后网关会自动从consul服务中获取服务并添加到网关对应的路由负载规则中。

引用插件

Bumblebee中使用服务发现需要引用两个插件,分别是BeetleX.Bumblebee.ConfigurationBeetleX.Bumblebee.BeetleX.Bumblebee.Consul。加载启动后就可以通过管理工具进行插件配置.

            g = new Gateway();
g.HttpOptions(
o =>
{
o.Port = ;
o.LogToConsole = true;
o.LogLevel = BeetleX.EventArgs.LogType.Error;
});
g.Open();
g.LoadPlugin(
typeof(Bumblebee.Configuration.Management).Assembly,
typeof(Bumblebee.Consul.ConsulPlugin).Assembly
);

如果不想自己编写代码可以下载编译的运行包 https://github.com/IKende/Bumblebee/blob/master/bin/ 下载1.1.9或更高版本;运行后 访问 http://host/__system/bumblebee/

插件管理

运行程序后进行配置管理工具的插件管理页面,可以看到Consul插件,组件默认是关闭需要进行一些配置。

插件配置

{
"ConsulAddress": "http://192.168.2.19:8500",
"Services": [
"bumblebee_services"
],
"Token": null,
"DataCenter": "dc1"
}
  • ConsulAddress 对应Consul的服务地址
  • Services 检索相应名称的服务列表一个或多个
  • Token 访问Consul相应的Token信息
  • DataCenter 检索相应的数据中心名称

配置完成后只需要启用插件即可

注册要求

Dictionary<string, string> meta = new Dictionary<string, string>();
meta.Add("path", "^/home.*");
client.Agent.ServiceDeregister("api_test1").Wait();
client.Agent.ServiceDeregister("api_test2").Wait();
client.Agent.ServiceRegister(new AgentServiceRegistration
{
Tags = new string[] { "Bumblebee" },
Address = "192.168.2.18",
Port = ,
Name = "bumblebee_services",
Meta = meta,
ID = "api_test1"
}).Wait();

以上是一个简单的注册代码,如果想服务需要注册到相应路由规则下的负载需要指定path,在不指写的情况bumblebee获取后会注册到默认路由规则上。

状态跟踪和故障

bumblebee内部有一套服务监控和故障处理机制无须依据consul相关状态注册信息;bumblebee会根据自身的检测机制对应用进行一个负载迁移和恢复处理。

泛域名路由

泛域名解释在web服务代理中比较常用的功能,主要由代理服务器根据不同请求的域名来做不需同服务的转发。Bumblebee同样也支持泛域名路由解释,就是针对不同请求的域名来制定不同的转发规则。Bumblebee对泛域名的转发配置非常简单只需要加载BeetleX.Bumblebee.Configuration新版本插件在路由管理配置即可(由于组件支持标准的http1.1协议,Bumblebee不仅可以做webapi网关,还能做网站代理)。

运行部署

Bumblebee配置路由解释,只需要加载BeetleX.Bumblebee.Configuration插件启动后在Routes中配置即可.

        g = new Gateway();
g.HttpOptions(
o =>
{
o.Port = ;
o.LogToConsole = true;
o.LogLevel = BeetleX.EventArgs.LogType.Error;
});
g.Open();
g.LoadPlugin(
typeof(Bumblebee.Configuration.Management).Assembly
);

如果不想自己编写代码可以下载编译的运行包 https://github.com/IKende/Bumblebee/blob/master/bin/ 下载1.2或更高版本;运行后 访问 http://host/__system/bumblebee/

配置

Routes添加路由规则,如果转发规则需要对域名进行一个匹配那规则是域名|路径

beetlexjs.ikende.com|.*

以上规则是配置经过beetlexjs.ikende.com域访问的所有请求都到这个规则里。

以上官网的路由配置规则 beetlexjs.ikende.com|.*路由到http://localhost:8081/,而其它则路由http://localhost:8080/。由于服务打开了处理服务地址输出所以访问这两个域的头信息可以看到:

  • ikende.com

  • beetlexjs.ikende.com

更多资料可查看组件开源网站 https://github.com/IKende/Bumblebee/wiki

最新文章

  1. MATLAB实现频数直方图——hist的使用
  2. Java学习-026-类名或方法名应用之二 -- 统计分析基础
  3. (转)C# wnform 请求http ( get , post 两种方式 )
  4. Hadoop系列(一)hadoop2.2.0源码编译
  5. 使用phpize建立php扩展(Cannot find config.m4)(转)
  6. hdu 4751
  7. C++ 类的前向声明
  8. 华丽的网上突出代码组件CodeMirror
  9. 快速排序(js版本)
  10. NOIP 2000 提高组 题解
  11. SSH深度历险(十一) AOP原理及相关概念学习+xml配置实例(对比注解方式的优缺点)
  12. 在SpringBoot中引入Redis
  13. POJ-3159.Candies.(差分约束 + Spfa)
  14. jar 包启动
  15. Latex 三线表及设置列数
  16. PYTHON语言书库
  17. 4~20mA电流输出芯片XTR111完整电路
  18. 尚硅谷STRUTS2视频学习笔记
  19. 【node.js】函数、路由
  20. .NET平台下开源三维 GIS (地形与游戏)平台资料

热门文章

  1. Docker下实战zabbix三部曲之二:监控其他机器
  2. mysql修改数据库的存储引擎(InnoDB)
  3. angular 配置开发环境、测试环境、生产环境
  4. Vue躬行记(1)——数据绑定
  5. 【Sqlserver】查询结果导出excel
  6. Web应用程序并发问题处理的一点小经验
  7. python编程基础之七
  8. .NET Core ❤ gRPC
  9. for循环练习题1——水仙花数
  10. python pip源安装模块的一些常见问题