锁定老帖子 主题:淘宝下单高并发解决方案
该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2012-04-25
通过买家id最后两位来定位, 那要是遇到相同的怎么办?
|
|
返回顶楼 | |
发表时间:2012-04-26
codeone 写道 请教楼主一个问题,你说的表拆分是把一个很多字段的表拆分到多个包含少量列的表里?还是将表放到多个数据库里,表结构保持不变?
这是水平分表,水平分表schema不变,分拆成多张schema一样的表 |
|
返回顶楼 | |
发表时间:2012-04-26
lofei117 写道 通过买家id最后两位来定位, 那要是遇到相同的怎么办?
只是通过这个来定位数据库,没有说通过这个来确定订单。 定位了数据库后,再通过订单查询 |
|
返回顶楼 | |
发表时间:2012-04-26
很受用,谢谢了
|
|
返回顶楼 | |
发表时间:2012-04-26
yukaizhao 写道 订单号介绍勘误:
文中对于订单号的表述有点问题,对于16台服务器,每台服务器64张表只需要2位买家或卖家id的后两位数字就可以准确定位到具体的库和表。订单号中同时存在买家id的最后两位和卖家id的最后两位。分别在订单号的倒数第3,4位数和最后两位数。 假定买家id为123456789,那么在订单号中的最后两位就是89,通过89对16取模就可以定位到具体的库上,通过对64取模就可以定位到具体的表上。 简单靠取模来判断数据和表,不太好吧。 如果后期有新表和服务器。加入呢。 用类似memcache 中一致性hash。不知道怎么样。 |
|
返回顶楼 | |
发表时间:2012-04-26
手滑,点收藏竟然点到了隐藏贴上。。。
请各位拍砖轻点~~~ |
|
返回顶楼 | |
发表时间:2012-04-26
lofei117 写道 通过买家id最后两位来定位, 那要是遇到相同的怎么办?
这只是分库的路由策略,肯定是有n多重复 再取模定位到数据库 |
|
返回顶楼 | |
发表时间:2012-04-26
montya 写道 yukaizhao 写道 订单号介绍勘误:
文中对于订单号的表述有点问题,对于16台服务器,每台服务器64张表只需要2位买家或卖家id的后两位数字就可以准确定位到具体的库和表。订单号中同时存在买家id的最后两位和卖家id的最后两位。分别在订单号的倒数第3,4位数和最后两位数。 假定买家id为123456789,那么在订单号中的最后两位就是89,通过89对16取模就可以定位到具体的库上,通过对64取模就可以定位到具体的表上。 简单靠取模来判断数据和表,不太好吧。 如果后期有新表和服务器。加入呢。 用类似memcache 中一致性hash。不知道怎么样。 一致性hash,也不见得能解决这个问题,添加节点,新节点没有数据,这样也会导致负载不均衡 |
|
返回顶楼 | |
发表时间:2012-04-26
分析的挺不错的!受用了!
|
|
返回顶楼 | |
发表时间:2012-04-26
而把附加功能剔除出去。比如说下单要考虑库存量,考虑发短信,要给卖家发旺旺消息通知,要对订单做统计,要做销售额统计等等
---- 这东西怎么也不会做到一个 TPS 里,拆分个屁。 |
|
返回顶楼 | |