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

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

目录


并发的定义

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


高并发解释

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

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


现实例子 推送流程

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

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

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

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条也不会重复)

现实中高并发的解决方案

引用一下网上高手的解决方案好了 —— [高并发解决方案]


  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值