BeetleX服务网关之服务发现与泛域名路由
在新版本的服务网关中提供了服务发现和泛域名路由解决功能,服务发现可以在无须配置的情况下实现服务自动注册到网关中解脱对服务配置的繁琐工作;而泛域名路由则可以针对不同的域名制定不同的负载规则。
使用consul服务发现插件
网关需要维护相关负载的服务器,手动添加相对来说是一件比较麻烦的工作;为了解决这一问题组件扩展了一个基于consul
服务发现插件,通过配置这个插件和启用后网关会自动从consul
服务中获取服务并添加到网关对应的路由负载规则中。
引用插件
Bumblebee
中使用服务发现需要引用两个插件,分别是BeetleX.Bumblebee.Configuration
和BeetleX.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
BeetleX服务网关之服务发现与泛域名路由的更多相关文章
- Spring Cloud构建微服务架构(五)服务网关
通过之前几篇Spring Cloud中几个核心组件的介绍,我们已经可以构建一个简略的(不够完善)微服务架构了.比如下图所示: 我们使用Spring Cloud Netflix中的Eureka实现了服务 ...
- Spring Cloud构建微服务架构 - 服务网关
通过之前几篇Spring Cloud中几个核心组件的介绍,我们已经可以构建一个简略的(不够完善)微服务架构了.比如下图所示: alt 我们使用Spring Cloud Netflix中的Eureka实 ...
- 服务网关zuul之一:入门介绍
通过之前几篇Spring Cloud中几个核心组件的介绍,我们已经可以构建一个简略的(不够完善)微服务架构了.比如下图所示: 我们使用Spring Cloud Netflix中的Eureka实现了服务 ...
- Spring Cloud (12) 服务网关-基础
通过前几篇介绍,已经可以构建一个简单的微服务架构了,如下图: 通过eureka实现服务注册中心以及服务注册发现,通过ribbon或feign实现服务的消费以及负载均衡,通过spring cloud c ...
- 王院生:Apache APISIX 微服务网关极致性能架构解析
2019 年 10 月 27 日,又拍云联合 Apache APISIX 社区举办 API 网关与高性能服务最佳实践丨Open Talk 杭州站活动,Apache APISIX PPMC 成员王院生做 ...
- Spring Cloud架构教程 (三)服务网关(基础)
通过之前几篇Spring Cloud中几个核心组件的介绍,我们已经可以构建一个简略的(不够完善)微服务架构了.比如下图所示: alt 我们使用Spring Cloud Netflix中的Eureka实 ...
- api-gateway实践(02)新服务网关 - 运行环境
一.服务网关的运行环境 1.服务配置中心 1.1.服务配置中心前台 前台 http://10.110.17.20/#/login:无源码,德奎部署在10.110.17.20的DockerStatck环 ...
- Spring Cloud 服务网关Zuul
Spring Cloud 服务网关Zuul 服务网关是分布式架构中不可缺少的组成部分,是外部网络和内部服务之间的屏障,例如权限控制之类的逻辑应该在这里实现,而不是放在每个服务单元. Spring Cl ...
- 跟我学SpringCloud | 第十七篇:服务网关Zuul基于Apollo动态路由
目录 SpringCloud系列教程 | 第十七篇:服务网关Zuul基于Apollo动态路由 Apollo概述 Apollo相比于Spring Cloud Config优势 工程实战 示例代码 Spr ...
随机推荐
- linux中必备常用支持库的安装(CentOS)
在CentOS安装软件的时候,可能缺少一部分支持库,而报错.这里首先安装系统常用的支持库.那么在安装的时候就会减少很多的错误的出现 yum install -y gcc gdb strace gcc- ...
- centos赋予访问权限
chmod u+x *.sh (代表授权现在所处的文件目录下的所有以:.sh的文件 启动tomcat:/usr/local/tomcat9/bin/shutdown.sh 关闭tomcat:/usr/ ...
- 下载腾讯VIP视频
1.找到自己想看的VIP视频网页地址,比如我就喜欢看一周一更的天行九歌,链接地址:https://v.qq.com/x/cover/rm3tmmat4li8uul/i0031xd1vjf.html 2 ...
- 性能测试之 Gatling
在应用程序上线之前,有多少人做过性能测试? 估计大部分开发者更多地关注功能测试,并且会提供一些单元测试和集成测试的用例.然而,有时候性能漏洞导致的影响比未发现的业务漏洞更严重,因为性能漏洞影响的是整个 ...
- Kubernetes 系列(四):使用Traefik访问.net core api
一. 准备 本篇的要求是在前三篇的基础上已经搭建好的本地k8s以及部署了Traefik,我们将会使用Traefik Ingress来访问.net core api,比较简单,做个记录,如果还没有搭建k ...
- ServiceStack.Redis高效封装和简易破解
1.ServiceStack.Redis封装 封装的Redis操作类名为RedisHandle,如下代码块(只展示部分代码),它的特点: 1)使用连接池管理连接,见代码中的PooledClientMa ...
- Go标准库Context
在 Go http包的Server中,每一个请求在都有一个对应的 goroutine 去处理.请求处理函数通常会启动额外的 goroutine 用来访问后端服务,比如数据库和RPC服务.用来处理一个请 ...
- 【HIVE】各种时间格式处理
yyyy-MM-dd与yyyyMMdd000000转换的三种方法 方法一:date_format(只支持yyyy-MM-dd -> yyyyMMdd000000) select date_for ...
- java第1天:简介,入门程序,变量,常量
1 java语言简介 美国的SUN公司开发的静态面向对象的编程语言,后来被甲骨文公司收购,现在也是全球范围内最受欢迎的编程语言. *** 2 计算机进制的相互转换 进制 英文代号 2进制 bin 8进 ...
- 【Visual Studio】关于vs 打开网站时报错 配置iis express失败 无法访问IIS元数据库...
关于vs 打开网站时报错 配置iis express失败 无法访问IIS元数据库... 我安装了vs2015,一开始创建项目,网站都没问题,有一次突然打开项目时报错,瞬间懵逼,我啥都没干啊!!! 网上 ...