腾讯支持修改微信号引发的问题——腾讯能否抗住几亿人同时修改?

·  阅读 318

如果发起一个问题“有多少人想要改掉自己的微信号?”想必不少用户都会加入回答,且理由多种多样。

毕竟,谁还没有个年轻不懂事的时候,在刚刚注册微信号之后设置了一个当时自认为极好的账号组合。接着,在随后的日子里一次又一次的问自己,为什么要设置这样的微信号?

对于不少人来说,微信号中包含了不少的信息。而随着时间的流逝,这些写进微信号的信息也变得令人不愿提起。以至于不少用户在添加好友时都会说一句“我加你吧”或者“扫码加吧”。

你改微信号了吗?6 月 5 日,微信官方微博和公众号,同时发消息称,最新的微信安卓版,支持修改微信号。

如一位网友所预测,消息很快登上热搜,看来这一功能是很多人的痛。

腾讯支持修改微信号引发的问题——腾讯能否抗住几亿人同时修改?

微信号就是微信 ID,即便有人跟你的微信昵称一样,但是微信 ID 仅此一份。就好比,世界上会有和你重名的人,但绝对不会有和你身份证号码一模一样的人。

不同于身份证号码,是按照地域和出生年月设置的,微信号是可以随心设置的,于是微信号就成了生日墙、表白墙以及代表着各种含义的自留地:有人用前任名字缩写作为微信号,有人用生日作为微信号。假如现女友问他微信号的字母是啥意思,场面估计会很尴尬。

腾讯支持修改微信号引发的问题——腾讯能否抗住几亿人同时修改?

在这样的趋势下,想要更改微信号的呼声也变得越来越大,微信方面也给出了相应的反应。上个月末有报道称,微信疑似上线灰度功能,允许每年修改一次微信号。

今天,腾讯微信团队官方也终于正式宣布,安卓最新版微信已支持改微信号。

根据微信官方的介绍,用户可通过“我>个人信息>微信号”路径进入修改页面,可以一年修改一次微信号,如果用户最近一年有自定义过微信号,期满一年后也可以更改。

腾讯支持修改微信号引发的问题——腾讯能否抗住几亿人同时修改?

外界比较关注的微信号修改相关问题,官方也给出了解答:

微信号必须以字母开头,可以使用6-20位数字、字母、下划线、减号或它们的组合;设置微信号需要满足,最近一年没有修改过微信号以及当前帐号无安全风险两个条件。

修改微信号后,不会影响通过微信授权登录的第三方业务、好友不会收到提醒且好友也只能通过你当前的微信号搜索到你。

对于用户来说,修改微信号就是动动手指的事,但对于上线该功能的微信工程师,可就没有这么简单。

修改微信号,本质就是增删

用户在修改 App ID 时,从最通俗的角度来讲,后台需要执行一次删除操作,一次增加操作。

对微信号最经常的操作,不是修改、而是查询。而为了优化查询,后台肯定有一套索引机制(B 树或者是 Hash 表)。

在增删操作时,为了保证那些同时进行的查询操作的正确性,要将数据锁住(让某些查询操作暂停),这一步骤也叫加锁,这一步骤通常会用到 Java 语言,通常还得借用一些中间件、数据库和第三方组件。

应对高并发三大法门

原理已经搞清楚,那么在目前,就算不是所有安卓用户都要改微信号,但以微信的体量,百万级用户同时修改微信号,并非没有可能。

这时就涉及到高并发,高并发很好理解,比如鹿晗当初公布恋情,导致微博瘫痪,这就是没有处理好高并发的后果。当时是“十一”,处理该瘫痪的微博程序员小哥,愣是婚礼进行到一半,不得已抱着电脑修 Bug。

腾讯支持修改微信号引发的问题——腾讯能否抗住几亿人同时修改?

图 | 新浪程序员婚礼上修 Bug

所以,高并发指的是:大量用户在同一时间点、同时访问同一 API 接口或者 URL 地址。严格意义上来说,大量用户同时修改微信号,也存在高并发风险。

但是,解决起来也并不难。应对高并发写入的第一种办法通常是分片。比如将微信号散列并杂凑之后(即 Hash、哈希),根据开头数字的不同,把微信号存放于几个不同的数据库服务器里,就能有效缓解压力。

当然这么做的时候,要考虑到查询操作的逻辑,即根据散列和杂凑之后的开头数字,去不同的服务器里查询。

此外,分片做法还有个好处,就是可以动态上下服务器,从而最大程度降低宕机可能性。

第二种办法是限流,好比地铁早高峰时,工作人员会举出小牌牌、让乘客分批走一样。对于海量用户同时修改微信号,可以用一个消息队列、去抹平波峰。这一般也需要和运营同事来配合,比如声称修改 ID 需要 1-2 个工作日的审核。

第三种办法,对用户体验比较好的方式,就是多准备几台服务器。现在服务器的价格,也比较低廉,微信完全可以在发布改名公告之前,提前准备好上百台服务器。

值得关注的是,微信的多数功能,以往一般是先对 iOS 用户开放,因为只有 iPhone 用 iOS,适配上比较简单。这现在有些新功能,微信也会先对安卓用户开放。看来微信也是有意端平一碗水。

最后问问你,你改微信号了吗?


分类:
阅读
标签:
分类:
阅读
标签:
收藏成功!
已添加到「」, 点击更改