在这里主要介绍beetlex应用网关的两个插件,分别是聚合和url请求过虑.通过聚合插件可以把整合多个请求的数据来应答请求端,而Url请求过虑同可以拒绝一些有非常关键字的请求。

请求聚合

在网关服务中请求聚合是允许把多个请求打包成一个响应给请求方,这样不仅可以节省请求方的请求数量,还可以根据需求的情况整合不同业务数据响应请求。BeetleX.Bumblebee虽然并没有内置这一功能,但可以通过扩展的形式来支持请求聚合,接下来就介绍一下组件的聚合插件使用。

引用插件

可以通过Nuget安装最新版本BeetleX.Bumblebee.Aggregation,安装后通过网关加载插件(需要更新BeetleX.FastHttpApi 到1.7.7.8)

gateway.LoadPlugin(typeof(Bumblebee.Aggregation.Aggregate).Assembly);

注册了插件后,可以在管理的插件页面看到相关插件

插件默认是不启用,启用前需要配置相关的Url聚合。

应用需求

现在有两个请求,一个是获取雇员信息,另一个则获取雇员相关订单,情况如下:

http://192.168.2.25:9090/employee/2

http://192.168.2.26:9090/orders/2

接下来希望访问以下地址来整合两个接口的数据输出

http://host/GetEmployeeOrders?id=2

配置

接下来根据上面的情况来制定一个聚合配置,点击插件进行配置页面

配置信息是一个数组结构,可以根据需要来定义多个聚合请求路径。Url表示聚合的请求路径,OutputError用于描述如果某个请求有错误是否把错误输出,Actions相应聚合的多项请求地址。针对刚提到的需要配置如下:

[
{
"Url": "/GetEmployeeOrders",
"OutputError": true,
"Actions": [
{
"Name": "Employee",
"Host": "http://192.168.2.25:9090",
"Url": "/employee/{id}"
},
{
"Name": "Orders",
"Host": "http://192.168.2.26:9090",
"Url": "/orders/{id}"
}
]
}
]

配置支持通过{xxx}的方式把请求的参数传递到聚合请求中。接下来尝试访问一下/GetEmployeeOrders(注意要先启用插件)

由于没有带上参数所以访问返回了404,接下来带上正式的参数

当提供正确的参数后就把请求数据聚合到正常结果输出

不输出错误

有时候为了方便处理不想输出错误,当聚合Url有错误只响应null。这样只需要把OutputError调整一下即可

[
{
"Url": "/GetEmployeeOrders",
"OutputError": false,
"Actions": [
{
"Name": "Employee",
"Host": "http://192.168.2.25:9090",
"Url": "/employee/{id}"
},
{
"Name": "Orders",
"Host": "http://192.168.2.26:9090",
"Url": "/orders/{id}"
}
]
}
]

通过以上介绍组件制定聚合处理是不是非常方便呢,如果想更多了解组件可以访问

url请求过虑

一旦网站部署到互联网上,就会受到一些非法的请求,而这些请求的Url都是一些特定的路径或带上一些无关请求的字符用于探测一些服务存在的问题;还有这些请求会落到日志中,导致日志臃肿和转发到后台服务带能处理上的损耗。为了应对拦截这些请求不流入到后台节点服务,组件提供了一个插件来解决这一问题。

引用组件

可以通过Nuget引用BeetleX.Bumblebee.InvalidUrlFilter,引用之后通过组件加载这个插件的程序集即可:

Gateway.LoadPlugin(typeof(Bumblebee.InvalidUrlFilter.RequestUrlFilter).Assembly);

引用成功后,通过管理插件提供的列表中可以看到

这个插件默认是关闭,如果有需要开启即可。

配置插件

插件默认是不过虑任何请求的Url,你需要配置一些非常的关键字词组,只要请求的Url存在这些词组即可被组件拒绝。配置可以点击插件进行配置页面.

可以根据需要来添加一些非常法的关键字,添加完成后保存即可。如果请求的Url有相关内容即会响应网关错误

只需发简单地配置,就可以过虑一些非法的Url请求

beetlex网关之聚合和url请求过虑的更多相关文章

  1. 《Entity Framework 6 Recipes》中文翻译系列 (21) -----第四章 ASP.NET MVC中使用实体框架之在页面中创建查询和使用ASP.NET URL路由过虑

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 4.2. 构建一个搜索查询 搜索数据是几乎所有应用的一个基本功能.它一般是动态的,因 ...

  2. HttpUrlConnection发送url请求(后台springmvc)

    1.HttpURLConnection发送url请求 public class JavaRequest { private static final String BASE_URL = "h ...

  3. Objective-C中把URL请求的参数转换为字典

    上一篇博客中是把URL转换为字典,那么我们如何把URL请求中的参数封装成字典,然后再封装成数组呢?对OC中字符串操作熟练的小伙伴们应该觉得这是一个a+b的问题,没错把URL中的参数转换为字典主要是对字 ...

  4. AFNETWorking 不支持中文URL请求

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #000000; min-height: 16.0px } p.p ...

  5. SpringMVC学习系列(3) 之 URL请求到Action的映射规则

    在系列(2)中我们展示了一个简单的get请求,并返回了一个简单的helloworld页面.本篇我们来学习如何来配置一个action的url映射规则. 在系列(2)中我们在HelloWorldContr ...

  6. IIS 7.5 + asp.net MVC4 设置路由处理URL请求

    使用asp.net MVC4开发的网站,在本地的VS012环境下运行,一切正常.但当发布到Windows 2008 R2(IIS7.5 + Framework4.5)上时,访问相关网页时,出现有下面的 ...

  7. Request.url请求路径的一些属性

    Request.url请求路径的一些属性1,Request.UrlReferrer.AbsolutePath=获取URL的绝对路径例:"/Manager/Module/OfficialMan ...

  8. java解析出url请求的路径和参数键值对类 - 转

    import java.util.HashMap; import java.util.Map; public class CRequest { /** * 解析出url请求的路径,包括页面 * @pa ...

  9. 无论url请求什么.都可以拼接class类名.实例化.传递get参数-->给当前控制器-->传递给抽象父类-->都交给抽象父类.这个方法去处理call_user_func_array()

    <?phpdefine('DS','/');define('A_PATH',str_replace('\\','/',dirname(__FILE__)).DS); //01获取到主程序目录cl ...

随机推荐

  1. H3C 数据封装与解封装

  2. HTML--表格与表单

    一.表格 <table></table>表格 width:宽度.可以用像素或百分比表示. 常用960像素. border:边框,常用值为0. cellpadding:内容跟边框 ...

  3. PyTorch之前向传播函数自动调用forward

    参考:1. pytorch学习笔记(九):PyTorch结构介绍 2.pytorch学习笔记(七):pytorch hook 和 关于pytorch backward过程的理解 3.Pytorch入门 ...

  4. Adam那么棒,为什么还对SGD念念不忘 (1) —— 一个框架看懂优化算法

    机器学习界有一群炼丹师,他们每天的日常是: 拿来药材(数据),架起八卦炉(模型),点着六味真火(优化算法),就摇着蒲扇等着丹药出炉了. 不过,当过厨子的都知道,同样的食材,同样的菜谱,但火候不一样了, ...

  5. (二)C#编程基础复习——变量和常量

    今天要复习一下C#基础中的变量和常量,所谓变量,就是用来存储特定类型的数据,分为值类型和引类型,可以根据需要随时改变变量中所村存储的数据值,变量必须先声明,然后才能赋值:常量就是固定不变的值,常量的变 ...

  6. element 级联选择器使用

    <el-cascader v-model="organSelecList" :change-on-select="true" :options=" ...

  7. UVA 1343 - The Rotation Game-[IDA*迭代加深搜索]

    解题思路: 这是紫书上的一道题,一开始笔者按照书上的思路采用状态空间搜索,想了很多办法优化可是仍然超时,时间消耗大的原因是主要是: 1)状态转移代价很大,一次需要向八个方向寻找: 2)哈希表更新频繁: ...

  8. activeMQ的两个默认端口8161和61616的区别

    activeMQ默认配置下启动会启动8161和61616两个端口,其中8161是mq自带的管理后台的端口,61616是mq服务默认端口 . 8161是后台管理系统,61616是给java用的tcp端口 ...

  9. H3C网络监测工具命令

    1.Debugging 2.Display debugging 3.Display diagnostic-information display diagnostic-information 命令用来 ...

  10. LuoguP5464 缩小社交圈

    LuoguP5464 缩小社交圈 背景:洛谷七月月赛T4 题目大意给定\(n\)个点,每个点的权值对应着一个区间\([l_i,r_i]\),两个点\(i,j\)有边当且仅当他们权值的并集不为空集,问有 ...