高并发业务接口开发思路(实战) (查看原文)

高并发业务除了需要有支撑高并发的服务器架构,还需要根据业务需求和架构体系,设计出合理的开发方案,这里根据一个实践过业务场景分析开发思路,罗列出高并发接口需要注意的点,以及设计上的巧...

blog.thankbabe.com   
评论 (13)
Thumb

u366492 2017-05-22 18:37

有降级方案和例子会更好
Thumb

FX_SKY 2017-05-22 21:51

为什么不用es做为搜索引擎而是MySQL?
Thumb

草根老仙 2017-05-22 22:28

如何保证生成缓存时,页面不空白
Thumb

SFLYQ 2017-05-22 23:48

@Nathan:感谢建议 @草根:简单方式,一个缓存存最新数据版本号,在刷新缓存的时候不要去删除原来的缓存,而是重新缓存一份版本数据,数据写入缓存成功后去替换最新版本号缓存,把上版本对应的缓存数据设置过期时间,前台每次都取最新版本号数据
Thumb

niunan 2017-05-23 00:18

支持支持
Thumb

阿加啊阿加 2017-05-23 09:59

也就是说用户要看到最新更新数据必须触发首页刷新
Thumb

SFLYQ 2017-05-23 10:11

@阿加啊阿加:是的,对外提供数据刷新API,这个触发操作可以是人工后台操作,也可以程序自动调度,看你的业务需求,如:每5分钟刷新一次排序,这个就要程序去调度,
Thumb

陪你度过漫长岁月丶 2017-05-23 10:45

我看了redis结构图,也就是每个时间戳版本号都存对应时间的一组redis集合的商品数据。也就会有n组redis集合的商品数据,那么怎么实现分页的呢。
Thumb

u359958 2017-05-23 11:03

如何实现商品数据修改后将修改数据更新到所有的分组中去呢?
Thumb

SFLYQ 2017-05-23 12:50

@陪你度过漫长岁月丶:每个版本号对应的商品数据都是完整的数据,SortedSet可以分页取数据,我这里的例子是简化版,实际商品是需要分类,不同分类就独立一组版本号,以及对应的版本数据,另外注意商品缓存数据需要设置过期时间
Thumb

SFLYQ 2017-05-23 13:05

@Jackey:不需要更新到所有版本数据里,每次刷新都生产一个新的版本号,数据缓存到版本号对应的SortedSet, 你可能会疑问,商品A在最新版本已经更新了,但是当前版本数据还是旧的,我们做的处理是当你点击商品进入商品详情,请求商品详情的API返回数据是时时最新的商品数据
Thumb

u321839 2017-05-24 09:55

每次更新都生成一个新的版本号,每个版本里会保存当前所有的商品数据?那数据量大的话,或频繁更新该怎么处理?
Thumb

SFLYQ 2017-05-24 22:05

@GJ :数据量大可以考虑拆分,具体拆分根据业务情景设计。更新频繁问题不大,只要记得把上版本缓存设置过期时间,切记缓存服务器的内存一定要控制,不要滥用,缓存只放热数据,不要后面出现问题再来补救就麻烦了
Post wxa image%2f94aa5145ff304921b94b4a3627f1f6d6 用微信扫描
小程序码阅读原文

开发者头条

程序员分享平台