【Sentinel】sentinel 集成 apollo 最佳实践

【Sentinel】sentinel 集成 apollo 最佳实践

sentinel

前言

  在 sentinel 的控制台设置的规则信息默认都是存在内存当中的。所以无论你是重启了 sentinel 的客户端还是 sentinel 的控制台。你所设置的规则都会丢失。如果想要 sentinel 在线上环境使用,要么花钱用阿里云上的付费版本,要么自己去实现规则的持久化,如果你或你所在的公司不差钱,那么关掉这篇文章,直接用付费版吧,省掉了一大堆坑要踩。或者你是一个特立独行的人,那么我们接着往下说。
  首先说一下写这篇文章的原因,因为真得在与 apllo 集成时,踩坑踩到怀疑人生。另一点是,找了一大堆关于集成的 apollo 的文章,都清一色的都是仿照官方给的限流规则的 DEMO 做的。 但是 sentinel 规则还有熔断规则、参数限流、系统限流、黑白名单等很多规则,每个规则还有细节上的不一致,这些都没有提,还有一些客户端的坑就更没有了。踩了这么多坑,有了一点心得与体会,梳理与此,希望能帮助到读者。

拉取 sentinel 控制台源码进行修改

  因为修改内容过多,本文不会详述,下面的截图是所有修改内容,并且因为写这篇文章时,1.7版本在 master 开发,有大量快照版本。所以是切到当前稳定的 1.6 分支进行修改的。我已经 fork sentinel 到我的 github,下面是修改的内容 地址

修改点1:实现所有规则的拉取与推送接口

  添加与实现了所有的规则的 Provider 与 Publisher 的配置拉取的与推送。

修改点2:修改控制台使用的规则操作 api

规则在控制台的操作 controller 进行大量改造。

修改点3:修改 xxEntity

  最后一点也是最坑的修改了大量的 xxEntity 类,这些类是规则的实体类,本身没什么,源码是直接 json 化保存的,但是用于客户端集成的 spring-cloud-alibaba 使用了 json 校验,如果 apollo 保存的 json 与客户端的实体类有一丁点不一样就报 convert 0 rules but there are 1 rules from datasource . RuleCLass: FlowRule 。 是不是觉得很摸不着头脑,这报错跟 json 格式转换错误有什么,下面是 spring-cloud-alibaba json 转换的代码。

  写这段代码的老哥,把这个异常吃了,并补上了一个 // won't be happen 的注释,你能理解我当时被这个报错坑的死去活来,后来发现是这里的问题吗?后来在 github 上找到两个同样的问题问题1问题2,按照方法把 xxEntity 中用不到的字段全部加上 @JSONField(serialize = false) 解决。

修改点4:抽离配置使得可以在启动的时传入

  添加的配置在下面

使用修改的控制台版本

  1. 你可以fork sentinel 官方代码按上述的自行修改,然后打包
  2. 你可以拉取我 fork 的 sentinel 代码下来直接打包
  3. 你可以使用我已经打好的包 地址

自定义配置

<
配置名称 是否必填 默认值 作用
env DEV 指定 apollo 使用的环境
app.id sentinel-apollo 指定保存 sentinel 规则的 apollo 应用 ID
cluster.name default 指定保存 sentinel 使用的 apollo 集群
namespace.name application 指定保存 sentinel 使用的 apollo 命名空间
modify.user
apollo 控制台显示的修改人账号,此账号务必要有此应用的权限
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值