您的位置:首页 > 大数据

大数据时代的高并发问题理解

2016-09-27 10:04 253 查看

大数据时代的高并发问题理解

目录

大数据时代的高并发问题理解
目录

并发的定义

高并发解释

现实例子 推送流程
UML 图
推送数据生成UML图

客户端服务端推送处理流程UML

高并发引起问题解析

该例子解决方式

现实中高并发的解决方案

并发的定义

并发,在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。 —— [ “科普中国”百科科学词条编写与应用工作项目 ]

高并发解释

高并发就是可以使用多个线程或者多个进程,同时处理(就是并发)不同的操作。(本人认为高并发就是并发的复杂体现)

假设数据库有一个字段,程序中多个方法都对这个字段有操作(修改,查询),当用户同时调用几个含有修改该字段的方法时,就实现了并发情况。

现实例子 推送流程

为了达到逻辑与数据分离的效果,我们的推送逻辑往往是在数据库中设置一张中间表来存储要推送的内容。

后台需要一个总体推送方法–每次取推送表中数条数据推送到一个文件或文件夹中以用来标记该用户是否有需要推送的内容。

客户端循环请求查询推送标记文件或文件夹中受否有本该用户推送内容,如果有则通过请求接口查询获取该用户的推送内容。

UML 图:

推送数据生成UML图:

Created with Raphaël 2.1.0客户端客户端服务端服务端数据库数据库标记区标记区用户操作服务端写推送表推送数据写表推送数据标记(并发较高区)服务端自主操作写表推送数据写表推送数据标记(并发较高区)

客户端服务端推送处理流程UML:

Created with Raphaël 2.1.0客户端客户端服务端服务端标记区标记区数据库数据库通过循环(轮询)接口查看标记区是否有推送需求1通过循环(轮询)接口查看标记区是否有推送需求2查询结果没有推送需求有推送需求,获取该用户推送数据然后删除已完成的推送数据向客户端返回推送数据

高并发引起问题解析:

该例子中的高并发推送数据标记方法区域。

推送数据标记 方法介绍:

该方法主要是通过推送表中的自动生成id倒序方式查询rownm小于10的数据(即在oracle数据库中查询结果中取前九条数据)。然后将数据中用户标识存储到标识区中。

在高并发的情况下,会出现的多用户同时调用的情况,结果解释导致该推送数据标记方法每次获取的数据几乎一样(差别不大),这是就会导致有些用户明明有操作推送并有推送需求却收不到推送的情况(即推送数据堵塞)。

该例子解决方式:

在高并发情况下已堵塞的方法中加入用户标记,每次取数据时,多取一条即可解决(因为每次多取的一条都是独有的,故即使前9条都重复第10条也不会重复)

现实中高并发的解决方案

引用一下网上高手的解决方案好了 —— [高并发解决方案]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  大数据 高并发