2016-05-22 07:11
俩个槽点:adc的暴击似乎感觉和高并发不是很像,结果是很像。另外,造成重复提交等问题,和高并发没关系,代码设计不健全,在非高并发的情况下,也会有一定概率的极端情况会出现异常。
2016-05-19 11:12
请问大神如何提高redis缓存命中率?如何才能防止缓存雪崩呢?我遇到了好多缓存所带来的问题,求指教。0
2016-05-19 10:38
看来楼主是一个有故事的人,遇到主并发的情况,上面这些技术都会用到
2016-05-19 08:28
用事务来处理高并发,死路一条啊……
至少我有过这样的经验,高并发的时候,数据表老锁死,后来就是因为事务引起……
2016-05-18 13:15
mark
2016-05-17 23:55

引用来自“alex”的评论

几个场景的例子举得都不错,有几个用例提提自己的看法;
举例1 里面的例子,我的建议是采用redis做一个缓存,只是签到啥的,完全可以,先将签到记录写到redis 的队列(Map 或者 Set 的数据对象,用于处理重复的问题),可以一天一个; 而后,后台业务,再定期获取缓存处理;或者,就是两个队列之间的转移;通过redis提供的 exists之类的方法来判断重复;(或者是redis 的 发布/监听 方式处理);
原文使用数据库的唯一索引,实际上,那个请求已经到后端了,高并发的情况下,请求已经撑爆了服务器了;而且,在大数据量的时候,数据采用分库分表存储,依赖数据库提供的唯一索引,在分表做的不好的情况下,可能是单表唯一,但不是业务唯一;

举例2,那个不推荐用锁的,可以直接用:
update cnt = cnt - 5 set goods where cnt > 5 and id=111;
表示对111编号的商品扣减5个数量,这个时候,只有更新的是1条还是0条的数据问题;如果是0条,就表示库存不足,抛异常;
你说得很对,索引唯一在分库分表没有作用,用redis 带事务的处理一些并发问题,商品扣库存还是要乐观锁,update number=10-5 from item where number=10 and id =111;因为在多事务中还是不能消除脏读更新,别人同时更新了,你又更新,详见高性能sql。
2016-05-17 20:06
异步处理,用队列,
2016-05-17 17:56
有点意思
2016-05-17 14:38

引用来自“巴林的狗尾草”的评论

把处理并发的需求延迟到服务端进行处理不是一个很好的方案,这种方案的并发能力比较低,好一些的做法是进行数据hash或者预分配,或者进行异步处理。

引用来自“haitaosoft”的评论

的确,数据库是 高并发的第一瓶颈。。。而且很难解决,除非换更高配置的机器,加机器基本没有用
嘿嘿,我最近在解决一个高并发问题的时候用了一个signal的方案,因为这个并发存在大量的请求是查询中间状态的,所以通过部署一个静态服务器,来通过404跟200标识挡掉用户大量的无效查询,从而增加系统的可靠性,我琢磨着这个东西可以考虑搞成类似于开源软件的内容,再加个分布式锁的概念进去,兄台,可有兴趣一起搞搞啊。
2016-05-17 14:34

引用来自“巴林的狗尾草”的评论

把处理并发的需求延迟到服务端进行处理不是一个很好的方案,这种方案的并发能力比较低,好一些的做法是进行数据hash或者预分配,或者进行异步处理。

引用来自“haitaosoft”的评论

的确,数据库是 高并发的第一瓶颈。。。而且很难解决,除非换更高配置的机器,加机器基本没有用
是的,而且用数据库来解决并发很容易把数据库堆出问题来,最好是业务模型进行分解变形,尽可能往前推
2016-05-17 11:16

引用来自“巴林的狗尾草”的评论

把处理并发的需求延迟到服务端进行处理不是一个很好的方案,这种方案的并发能力比较低,好一些的做法是进行数据hash或者预分配,或者进行异步处理。
的确,数据库是 高并发的第一瓶颈。。。而且很难解决,除非换更高配置的机器,加机器基本没有用
2016-05-17 11:01
几个场景的例子举得都不错,有几个用例提提自己的看法;
举例1 里面的例子,我的建议是采用redis做一个缓存,只是签到啥的,完全可以,先将签到记录写到redis 的队列(Map 或者 Set 的数据对象,用于处理重复的问题),可以一天一个; 而后,后台业务,再定期获取缓存处理;或者,就是两个队列之间的转移;通过redis提供的 exists之类的方法来判断重复;(或者是redis 的 发布/监听 方式处理);
原文使用数据库的唯一索引,实际上,那个请求已经到后端了,高并发的情况下,请求已经撑爆了服务器了;而且,在大数据量的时候,数据采用分库分表存储,依赖数据库提供的唯一索引,在分表做的不好的情况下,可能是单表唯一,但不是业务唯一;

举例2,那个不推荐用锁的,可以直接用:
update cnt = cnt - 5 set goods where cnt > 5 and id=111;
表示对111编号的商品扣减5个数量,这个时候,只有更新的是1条还是0条的数据问题;如果是0条,就表示库存不足,抛异常;
2016-05-17 10:27
xuexixia
2016-05-17 10:20
非常好学习了,现在做的项目用的就是乐观锁
2016-05-17 09:59
顶一下
2016-05-17 09:55
一直在用
2016-05-17 09:46
1. 负载均衡
2. 消息队列
3. 数据缓存
4. 锁机制
5. 唯一索引
6. 事务
7. 高性能语言

基本上web开发的法宝全用上了。点赞!
2016-05-17 09:25
高大上
2016-05-17 09:22
马克
2016-05-17 09:05
好文,学习了
2016-05-17 09:02
很好的学习机会,了解了一些新的东东
2016-05-17 08:50
以前搞抽奖的时候是通过文件或redis实现锁功能
回复 @
{{emojiItem.symbol}}
返回顶部
顶部