V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  yangxin0  ›  全部回复第 53 页 / 共 68 页
回复总数  1345
1 ... 49  50  51  52  53  54  55  56  57  58 ... 68  
[这是我尝试解答Fenng提出问题二, 欢迎拍砖]

尝试回答一下第二问题:
这个问题其实可以拆成三个, 1、朋友圈的feeds是如何存的, 2、朋友圈的权鉴是如何做的
3、timeline怎么做的(结合1、2)

1、feeds的话我猜测和空间feeds类似在内存数据库里面存放了最近的10条feeds, 其余的全部存在内存里面。虽然目前微信这个小儿子很受老爹重视也不至于把全部内容都扔到内存里面存放。
具体是怎么存放又要分成两种情况 A、腾讯内部实现, B、外部实现

A、我猜测应该是挂在了某个”uin“下面,并且根据这个“uin”进行了分库,当然这个分库和平时数据库的还不太一样,这个分库尺度更加大一些, 这些库分布在多地, “uin”有一定的区域特征。 腾讯里面有一个组件叫做Tmem, 这个组件是改至memcache, 它比memcache好的地方就是可以做到平滑扩容并且实现了分布式, 所以某个地区应该有一个非常庞大的分布式内存系统。

B、外部的人员就有点蛋疼了,没得Tmem这么好的东西,如何设计一个分布式集群并且能够实现自动化扩容。 既然我们是外部人员,我们就可以预先假设uin是64位整数, 我们提前预估好单台机器的储存, 比如说我们单台机器64G,那么memcache可以用内存保持在60%比较合适,也就是说memcache的内存分配最好在64G*60%=38G左右, 假设单挑feeds是1k, 那么10挑feeds就是10K数据, 38G/10k = 400W用户 这样我们大致可以按照uin/400W用户来进行分库,不过最好的数值还是业务上线后观察数据,然后进行调整。

2、权鉴系统分成两种 A、我不看别人的朋友圈 B、别人不让我看她的朋友圈
A、我自己保存一个不看的uin列表、当数据从服务器拉下来以后客户端过滤掉即可
B、我自己保存一个别人不让我看的uin列表,拉完热点用户数据以后把相应的数据在服务器端过滤掉

3、timeline模块要做到 A、小红点(好友有新feeds) B、拉去到好友的最新数据 C、不能重复拉取好友最新的消息
A、这个应该是一个bitmap服务, 每当一个用户发了feeds以后,就就把他的好友列表发送到这个服务,然后这个服务置位, 手机客户端定期刷新或者在某些时机刷新(比如从锁机界面到微信界面),确定是否点亮小红点。写bitmap之前这个服务应该会做去重的工作来避免大量的写bitmap。
去重工作主要是堆机器和hash的利用没有什么难点。(把好友的uin位置位,通知好友有小红点)

B、这也应该是一个bitmap服务, 当用户发送了消息以后, 把这个用户的标志位位置(把自己uin置位)优化点1、这个可能对于热衷于刷朋友圈的用户会做缓存 2、对于好友数多得用户做缓存 来避免大量的访问bitmap, 这里还需要额外的存储记录还有多少好友需要更新朋友圈,以及feeds的seq

C、每个用户的feeds都有一个序列号(seq)微信初始化的时候每个好友的seq都为0,随着不断获取信息这个序列号逐渐变大,这也方式重复拉去或者显示feeds。 (从微信重新安装以后要拉去很多数据就可以能验证出来)
2014-12-28 22:02:17 +08:00
回复了 alexapollo 创建的主题 程序员 是认真学异步编程好,还是投身 golang?
不要企图用一门语言让自己牛逼。
2014-12-25 22:23:15 +08:00
回复了 dshbusiness 创建的主题 PHP php 有没有像 django 那样的开发时候用的简易的服务器?
phpnow
2014-12-25 22:22:02 +08:00
回复了 Osake 创建的主题 云计算 咨询一下大家建站都用的什么配置 主要是服务器 哪家好?
不是速度慢吧, 你是用了wordpress之内的博客系统里面有大量的google 等敏感连接造成加载速度慢。
你自己优化一下, 在日本VPS基本可以做到秒开。
2014-12-23 23:41:33 +08:00
回复了 Jack 创建的主题 程序员 建站一个月几乎每天都被攻击。。求解决思路
@Jack 随便python perl php写写就好了。。。反正以后你也会用
2014-12-23 23:33:09 +08:00
回复了 Jack 创建的主题 程序员 建站一个月几乎每天都被攻击。。求解决思路
@cevincheung 人家就一个单机小站, 你这是要搞集群么。
2014-12-23 23:30:07 +08:00
回复了 fullstack0xyz 创建的主题 程序员 做 app 的服务端 API,求推荐 Python/PHP 框架
可以尝试基于nginx实现的openresty
2014-12-23 23:26:25 +08:00
回复了 Jack 创建的主题 程序员 建站一个月几乎每天都被攻击。。求解决思路
IP阈值你这个要好好思考, 或者可以先上线在动态调整。
2014-12-23 23:25:28 +08:00
回复了 Jack 创建的主题 程序员 建站一个月几乎每天都被攻击。。求解决思路
写一个脚本分析nginx日志, 在crontab上定期运行, 5min or 其他, 发现请求书高的IP用iptables给封掉。基本连续跑一天, 攻击中手上的肉鸡都会被封杀完。 我想你这个小站也不会让攻击中动用几十万肉鸡吧, 如果是这样, 把服务器停了吧。
2014-12-23 23:23:26 +08:00
回复了 Jack 创建的主题 程序员 建站一个月几乎每天都被攻击。。求解决思路
把nginx的请求数量限制。 设置一个mysql不会挂的数值。内核的syn_cookie打开.
2014-12-17 20:43:55 +08:00
回复了 garychang 创建的主题 iPhone 移动的合约机 iPhone 6 plus ¥ 5880,还是去香港买划算?
香港目前还买不到, 只能买黄牛
1 ... 49  50  51  52  53  54  55  56  57  58 ... 68  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1349 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 33ms · UTC 17:34 · PVG 01:34 · LAX 10:34 · JFK 13:34
Developed with CodeLauncher
♥ Do have faith in what you're doing.