Random的子类 SecureRandom 在k8s系统下的pod生成随机数特别慢问题

问题描述:我们使用一个SecureRandom.getInstanceStrong() 获取random对象,来生成16位的随机数,然而在生成过程中每次生成pod里面日志看需要将近两分钟生成一个数,这个问题在我本地、预生产、线上都没有问题,只有测试有这个问题。一些是在关键位置打印日志发现的问题

针对整个问题,我们只需要一个唯一标识的字符串,我使用雪花算法代替--临时解决

----------------------------------------------------------------------------------------------------------------------

问题还是要分析具体原因,具体如下:

SecureRandom.getInstanceStrong() 在linux环境下适用/dev/random生成种子,但是它下面的random是一个阻塞数字生成器,如果没有足够的随机数据提供就是一直等待,这就导致了线程的等待。这个随机数据来来自键盘、鼠标、以及磁盘活动产生的随机性生成的数据,如果这个服务缺乏磁盘的活动(linux系统下只有这个,很少会有键盘和鼠标活动)就会导致线程阻塞。

那么 Linux 中随机数是如何产生的呢 PRNG(Pseudo-Random Number Generator)

Linux 内核采用熵来描述数据的随机性,熵(entropy)是描述系统混乱无序程度的物理量,一个系统的熵越大则说明该系统的有序性越差,即不确定性越大。内核维护了一个熵池用来收集来自设备驱动程序和其它来源的环境噪音。理论上,熵池中的数据是完全随机的,可以实现产生真随机数序列。为跟踪熵池中数据的随机性,内核在将数据加入池的时候将估算数据的随机性,这个过程称作熵估算。熵估算值描述池中包含的随机数位数,其值越大表示池中数据的随机性越好。内核中随机数发生器 PR

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值