扫码关注官方订阅号
PHP处理大数据,如何保证处理完整性; 如:同时给1W个用户转账,如何保证一次触发,让所有用户的转账都到账。 请详细说明!
业精于勤,荒于嬉;行成于思,毁于随。
我觉得你希望的是 1 保证单个用户的操作准确,如果其中一个步骤出现问题,立刻回滚,之后从新开始转账步骤 2 对单个用户的操作不管是否成功 都不会对其他用户的操作产生影响
我举一个例子, 比如转账需要10个步骤,你写十个接口, 每个接口都有一个返回值(表示这个操作是否成功),这十个接口放到队列里面(这是保证 转账10个步骤处理是有序的),
用户当转账的时候, 使用 转账的步骤队列,
上面是转账的操作,下面再说说对用户的处理
我们将 用户看作对象,用户的信息就是 对象的属性,将所有的对象放到 队列里面, 遍历这个队列,对每一个用户都进行如下操作 1 先记录这个用户的状态(留着出现意外恢复用的), 2 转账的步骤队列 2-error 出现问题,恢复用户的初始信息,将这个用户重新添加到队列的尾部
上面说的都是保证处理的完整性,下面说说速度问题 为了提升读写速度(我是说内容很多的话),你可以使用redis这样的nosql数据库,redis里面有队列这个数据结构,你百度一下看看。
再其次,可以考虑使用多线程,创建10个线程,1w个用户分分,一个线程处理1千个用户
希望能帮到你
使用memcacheq等队列,慢慢处理
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
我觉得你希望的是
1 保证单个用户的操作准确,如果其中一个步骤出现问题,立刻回滚,之后从新开始转账步骤
2 对单个用户的操作不管是否成功 都不会对其他用户的操作产生影响
我举一个例子,
比如转账需要10个步骤,你写十个接口,
每个接口都有一个返回值(表示这个操作是否成功),这十个接口放到队列里面(这是保证 转账10个步骤处理是有序的),
用户当转账的时候, 使用 转账的步骤队列,
上面是转账的操作,下面再说说对用户的处理
我们将 用户看作对象,用户的信息就是 对象的属性,将所有的对象放到 队列里面, 遍历这个队列,对每一个用户都进行如下操作
1 先记录这个用户的状态(留着出现意外恢复用的),
2 转账的步骤队列
2-error 出现问题,恢复用户的初始信息,将这个用户重新添加到队列的尾部
上面说的都是保证处理的完整性,下面说说速度问题
为了提升读写速度(我是说内容很多的话),你可以使用redis这样的nosql数据库,redis里面有队列这个数据结构,你百度一下看看。
再其次,可以考虑使用多线程,创建10个线程,1w个用户分分,一个线程处理1千个用户
希望能帮到你
使用memcacheq等队列,慢慢处理