转载

Bumblebee微服务网关之缓存

缓存在服务处理中承担着一个提高性能的主要角色,特别在高IO应用中如果加入缓存则性能可以达到数倍的提升。 由于网关涉及到非常多的网络IO处理,所以网关层面集成缓存不仅可以降低服务的处理压力,还能大大提高服务对外的响应效率和网关整体的并发性能。 BeetleX.Bumblebee.Caching Bumblebee 的一个缓存插件,该缓存插件可以配置任意请求路径的缓存策略,针对不同的接口制定相应的缓存机制让服务应对更高的并发情况。 接下来介绍插件的使用:

引用插件

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

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

如果不想自己编写代码可以下载编译的运行包 https://github.com/IKende/Bumblebee/blob/master/bin/

插件管理

运行程序后进行配置管理工具的插件管理页面,可以看到缓存插件,默认是未启用

Bumblebee微服务网关之缓存

缓存插件有两部分,分别是写入和读取;当写入开启后读取才能生效。缓存配置只需要配置写入插件即可,读取插件无需配置。

写入配置

插件可以针对不同请求的路径来制定缓存策略,制定也非常方便内容如下:

{
    "Caches": [
        {
            "Url": "^/jso.*",
            "TimeOut": 100
        },
        {
            "Url": "^/api.*",
            "TimeOut": 200
        }
    ],
    "WhiteList": [
        "192.168.2.1/24"
    ]
}

这个缓存插件配置简单,只需要针对不同 Url 配置相应的正常和缓存超时时间即可(单位秒); WhiteList 是一个缓存操作的授权白名单。这个缓存的机制是使用.net core的 MemoryCache ,如果需要使用 Redis 则需要扩展引入,针对密集处理的网关一级缓存在本地内存会高效很多。

测试

为了检测网关层面缓存的效果,所以对插件进行了一个压力测试;为了确保缓存发挥比较大的作用所以这个测试在10Gb网络下面进行(网关服务器则是E3-1230V2的老机器),这样可以更好的突出缓存在没有带宽限制情况达到的应用效果。测试分别是获取不同大小的数据列表在关闭和开启缓存的不同差异。

  • http://192.168.2.18/customers/5

    Bumblebee微服务网关之缓存

    以上是插件显示的并发情况,前面是没有开启缓存并发在4万rps左右,带宽是500Mb上下;但开启缓存后并发达到了20万以上rps(插件走势图最大显示并发只有10万rps),带宽接近3Gb。

  • http://192.168.2.18/customers/20

    Bumblebee微服务网关之缓存

    以上是插件显示的并发情况,前面是没有开启缓存并发在2万rps左右,带宽是1Gb上下;但开启缓存后并发达到了17万rps(插件走势图最大显示并发只有10万rps),带宽接近8Gb上下.

总体上来说如果网关缓存开启其收益是非常明显的,这个时候限制服务并发输出的可能是出口的带宽。

缓存操作

插件安装后会提供两个接口来删除某个Url对应的缓存,或清除所有缓存;这两个接口的访问权IP必须在白名单中描述否则无权操作。

  • http://host/__system/bumblebee/cache/remove?url=缓存对应的url

  • http://host/__system/bumblebee/cache/clean

关注公众号

Bumblebee微服务网关之缓存

https://github.com/IKende/

高性能的服务通讯框架  Beetlex(http,rpc,gateway的详细实现

原文  http://mp.weixin.qq.com/s?__biz=MzU5NzcwMjI2Mw==&mid=2247484374&idx=1&sn=6e890e9efc721761d061afaa5adbcf25
正文到此结束
Loading...