Open youngzil opened 1 month ago
通过 item.num.limit + item.value.length.limit 应该能起到控制总大小的效果?
通过 item.num.limit + item.value.length.limit 应该能起到控制总大小的效果?
这是一个间接控制的方式,但是这个对于item.num.limit 、 item.value.length.limit 的值怎么能既满足所有appid,又能控制不产生huge的NS配置会是一个需要统计的基础数据+一些小技巧
实际业务中不同的namespace可能会有以下几种场景
说一下实际使用的体会和理解,如有不对帮忙指出,解释了item.num.limit + item.value.length.limit 无法满足的原因,就是下面的第【5】点
item.key.length
和 item.value.length
直接通过item
表的DB的字段定义就控制了,当然实际也可以起到二次控制的目的(配置比数据库定义字段更小的大小),否则估计都可以不校验item.num
、item.key.length
、item.value.length
的另一个目的就是可以间接控制NS总的配置大小(Release 表的 configurations )item.num
、item.key.length
、item.value.length
的影响更大item.num
、item.key.length
、item.value.length
( item.num的目的是间接控制的作用,后两者直接数据库定义就限制了)item.key.length
和 item.value.length
不能设置太小,但是就会导致意想不到的第三种没法限制)
BTW:其实还有一种情况:item.num 比较多,但是NS中少量大item.value.length
的情况,也可以包含在下面的1和2中
1. item.num 比较多,但是item.value.length 并不大【可以覆盖,业务也更灵活,可以自行控制数量和每个配置的大小】
2. item.num不多,但是item.value.length 比较大【可以覆盖,业务也更灵活,可以自行控制数量和每个配置的大小】
3. item.num比较多 + item.value.length比较大【可以覆盖,可以被限制,业务自行决定拆分NS、或者增减 数量 或 配置的大小】
存在对NS总的配置大小,可以直接解决上一条评论里面的3个场景
这个控制粒度更粗,确实可以覆盖上述几个场景,不过目前已经存在了更细粒度的配置项,在精心配置的情况下是可以达到类似的效果,所以我不建议再增加额外配置项了,会令系统的配置变得非常复杂
Yes,get it
你的特性请求和某个问题有关吗?请描述
Release
表的 configurations 是一个 LONGTEXT 字段,过大的配置,会给数据库的查询带来巨大的压力,同时也会给Apollo服务端带来潜在的隐患,可能导致网络带宽占满,CPU和线程飙升,RT上升下面分享一个案例
/notifications/v2
qps 400+/configfiles/json
qps 400+/configs
qps 2000+清晰简洁地描述一下你希望的解决方案
提供NS下所有配置总的字符数(字节数)大小的限制,避免数据库和网络带宽导致的Apollo服务端的不稳定
清晰简洁地描述一下这个特性的备选方案
其它背景
在这里添加和这个特性请求有关的背景说明、截图