全球旧事资料 分类
消息时会按照上面讲的标签设置相关的权限,服务器就会给每个有权限接收这条消息的用户的timeli
e中写入这条消息。也就是在用户发布的这一刻,就做好了权限安排,而不是等到读取的时候。这样就自然减少了读取的时候的计算量,提高了效率。
发布时进行权限控制示意图,实际比这复杂
至于分库分表这些就不展开了,知道有这么回事就行。有时候这种技术上的设计也是会限制产品的设计。
那怎么证明上面说的合理呢
感兴趣的同学可以去测试下:先发一条带阅读权限的消息,比如允许某个标签的人看。然后再给这个标签添加一个新人。结果是这个新人是看不到这条消息的,因为权限划分是在发布的时候就划分好了,新人加入标签的时间是在发布之后,所以没法获得这条消息的权限分配机会,虽然他后来在标签组中,但是仍然没有办法看到这条消息。
这就是上面问题的答案,其实主要考察的是在产品设计时是否能够考虑到技术方案的限制。我把上面的答案贴在知乎上,有人就问了:微信产品团队是在一开始设计就考虑到了这个问题,还是经过
f不断的迭代成现在这样的这是个好问题,好的产品经理应该在设计的时候就考虑到这种情况,或者至少应该有相应的预案,而不至于在出现问题或者被研发发难时束手无策。在这个案例中,微信是一开始考虑到了还是迭代过来的并不重要,对于微信“朋友圈”来说,本来就是一个迭代产品,最早的权限管理是单独于通讯录的,那个时候是纯插件的模式,现在才与通讯录共用了分组模式进行权限管理。
如果对于上面的技术对产品设计的影响还不是很清晰的话,那么就再跟两个问题好的产品经理除了能回答问题外,还要能提出问题_:
1、朋友圈的消息为啥不能编辑,只能删除
我理解这是产品设计和技术实现平衡的结果。编辑功能对于主要以发布照片和即时消息的朋友圈来说,并不是刚性的需求。但是在上面的技术框架下,编辑功能在技术上,就不好实现。具体来说就是:前面我们讲了,权限的控制是在发布的时候确定了,如果增加编辑功能的话,意味着一旦用户在编辑的时候调整了阅读权限的话,就需要将之前写入到有权限的用户timeli
e的数据删除掉,重新写入一遍,这对于技术实现来说,也是一个很大的成本,需要更新的数据很多该条消息所有涉及到的用户的timeli
e数据都要更新。所以,平衡的结果是宁愿让用户删除了重新发布,也不提供编辑的功能。你可能又要问了,删除时就不用更新相关人的timeli
e吗首先删除比写入简单多了,第二个是用户timeli
er
好听全球资料 返回顶部