今天这个起因是我的群里大家早上一个意外的聊天。这位朋友准备换工作,不小心被领导看到(话说怎么这么没有对敌斗争经验呢?)不过今年地狱求职年,好多人都找不到工作,推荐大家别着急换。
这位朋友没有防领导经验,倒是个技术细心人。发现大家都引用他的话,但是昵称不一样。想想不科学啊。激起了大家好奇。结果。。。。。。
大家实测,并不是好友修改昵称的问题。
不过大家都是高手,马上把怀疑去进行了一下验证。大胆猜想,小心求证。很快就有了结果。
大家通过自己的实测马上能推断出为什么会出现这个现象。
可见腾讯在设计上做了很多优化点。
这正是我一直推崇的非必要不读写的。即使这个是缓存,也没必要去不停的访问,而且也减少了网络的交互。
我想起我平时遇到不少场景,不少开发从开发角度来设计,数据库不行就加缓存(其实数据库自己也有缓存,不管Oracle还是MySQL 动用自己的几十个CPU,在点查场景不会弱于redis的)。然后到了缓存就使劲压榨。
其实这样不对,我一直说非必要不读取。不能是因为有了缓存,就使劲用。好像不用就对不起它。
比如规则类数据,今天的防疫规则是48小时核算。明天改成72或者24那么明天早上生效。我们的应用在明天0凌晨核对一次规则(或者说应用重启的时候核对一次),这个规则就伴随着这一天或者下次重启的时候再次去刷新。而不是我们每次扫码的时候比较一次规则。
有时候可能还有人纠结这个规则不在数据库或者缓存里面,那么存在哪里?我想到的是用户登录的userid存在哪里,这个也可以存在哪里。就以这个案例来说,昵称都是存在大家的微信客户端,甚至头像不去点击可能就一直是过去的。这不是也是一个很好的想法吗?
架构的一个原则就是能简单不复杂,以对系统冲击最小为首要原则。