前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >浅谈高性能网关Apache ShenYu

浅谈高性能网关Apache ShenYu

作者头像
小四的技术之旅
发布2023-03-02 19:09:36
4.2K0
发布2023-03-02 19:09:36
举报
文章被收录于专栏:小四的技术文章

❝立春一段时间了,依然还是穿着厚厚的棉袄,西南的腹地偶尔一两个清晨,会有娇羞的阳光洒在阳台上,不过也是瞬息,这情景总会想起儿时清晨的家门口,阳光穿过雾,穿过杉树,形成一道道美丽的丁达尔效应,至今记忆犹新!❞

介绍

Apache ShenYu是一个异步的,高性能的,跨语言的,响应式的 API 网关,ShenYu谐音为神禹,相信大禹治水的故事作为华夏子孙都耳濡目染,它的设计是以插件为核心,扩展功能只需要以插件的方式加入便可,真正实现了热插拔,ShenYu本身提供了丰富的插件给我们使用,包括协议转换,比如http/https协议转SpringCloud协议,Dubbo协议,Tars协议等,安全插件,如jwt,sign等,还有限流等插件,总之,ShenYu对于API治理是非常的强大。

设计之美

我们从shenyu的插件,多协议,热插拔,规则这几个方面去聊一下,当然,不止这些,后面再继续聊其他的。

插件

ShenYu里面插件是最核心的,使用插件的好处是,和代码不耦合,如果需要开发新的插件,那么只需要实现相应的接口即可,它抽象出了一个ShenyuPlugin接口,只需要实现它,定义自己的逻辑便可,然后如果需要使用这个插件的时候,就将其开启便可,不需要使用时,关闭便可。

多协议

使用过SpringCloud的话,我们知道SpringCloud提供了一个网关SpringCloud GateWay,它提供了路由,断言,过滤器等功能,我们可以通过编写代码或者配置yml等文件进行配置,但是它和SpringCloud捆绑在了一起,我们使用SpringCloud才能使用它,而且通过配置文件去编写路由相关信息回比较麻烦,当服务很多,API管理就变得麻烦,并且不能对API进行精细化的管理,虽然它提供了动态路由,但是动态路由配置起来比较专业,需要专业的人进行配置,成本比较搞,而ShenYu提供了可视化的页面,可以更加方便的管理API,在ShenYu里面,SpringCloud也只是一个插件,我们还可以对Dubbo等框架进行管理。

热插拔

前面说了插件,但是是从代码层面去说,这里的热插拔是从使用层面去说,我们举一个例子,如果对API进行限流,我们可能会在接口层面编写限流的逻辑,可能使用Java的并发类,或者Guava的RateLimiter类,或者Redis等方案进行限流,所以就需要编写代码,这已经和代码耦合在了一起,当然,如果设计合理,也可以将他们分离,但是,在一定程度上还是会业务代码有一定的挂钩,而ShenYu是面向API的,只要API被ShenYu代理了,那么就可以对API“为所欲为”了,如果现在系统的流量比较大,那么就可以动态调整限流,缓存等,待到洪峰过去后,可以进行调整或者直接关闭插件,这样就能够对系统进行最大程度的保护。

总而言之,它的热插拔就是,“该上的时候随时上,该撤离就随时撤离”。

规则

规则是ShenYu里面很核心的点,如果我们使用过规则引擎,那么里面会定义很多条件,符合什么样的条件就执行什么样的逻辑,在代码中,if/else也是规则的判断,ShenYu的规则也是定义条件,当条件符合时,就执行对应的逻辑,它的规则隶属于选择器。

ShenYu会按照规则进行匹配,举个栗子,如果我们需要对某个API的结果进行缓存,那么只需要在缓存插件里面添加对应API的uri即可,但是现实可能变化莫测,需要从不同的维度进行缓存,那么就可以添加规则,比如根据查询参数缓存,根据ip地址进行缓存,或者根据域名缓存等,那么就可以添加多重条件,ShenYu提供了了多维度的规则,比如请求头,参数,uri,ip,cookie等,在实际使用中可以根据自己的需求进行设置,以减轻服务器的负担。

总结

以上简单的聊了一下ShenYu的一些特性,并没有过多从代码层面去聊,只是从功能性层面去聊了一下,后续再从它的原理和代码去聊,相信会被它惊艳到,如果我们需要对API进行很好的治理,相信ShenYu是一个很不错的选择。

❝今天的分享就到这里,感谢你的观看,我们下期见!❞

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-02-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 刘牌 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • 设计之美
    • 插件
      • 多协议
        • 热插拔
          • 规则
          • 总结
          相关产品与服务
          云数据库 Redis
          腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档