在使用mysql数据库时,如果是商城那就要考虑到秒杀、抢购、发消息等同一时间访问数据库所带来的堵塞从而压垮数据库。 如何有效的在程序和mysql是做些处理来应对呢。
答案就是:把http请求放入内存的高速队列,然后对队列里的数据按一定的规则进行分流处理。 当一个用户发送一个请求时,我们可以给他延迟2s,依次类推。
如果是发送通知类消息,用户量大,不可能同时发送,那么就是需要列队发送;把发送的消息操作延迟,同时针对活跃用户 优先发送(即异步操作),合理分摊服务器负担。
异步操作优点:部署简单,使用mysql内置存储过程和定时器即可完成大部分调度,服务器部署简单,容易迁移。
缺点:对于大数据量、上千万的消息处理效果不佳。不能应对实时性要求很高的场所。 关于htpp队列,金山有个内部开源HTTPSQL,把队列从mysql移到内存数据库中,并有一个专门的进程负责队列的操作,客户端则通过socket请求进行读写。 另外还有一个轻量级的基于内存的消息队列ZeroMQ,此队列是通过API来实现消息的传输。
本文作者:
艾瑞可erik
本文链接: https://erik.xyz/2016/03/01/mysql-ru-he-ying-dui-xiao-xi/
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!
本文链接: https://erik.xyz/2016/03/01/mysql-ru-he-ying-dui-xiao-xi/
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!