大数据时代的高并发问题理解
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条也不会重复)现实中高并发的解决方案
引用一下网上高手的解决方案好了 —— [高并发解决方案]相关文章推荐
- 大数据时代-学生处理问题的应具备的能力的思考
- 大数据时代引发安全问题,应增强身份管理
- 大数据时代的来临及对大数据时代的理解
- 根据java内存模型理解并发出现的问题
- 深入理解线程 以及线程并发的线程安全问题及处理方法
- 大数据时代带来的伦理问题
- 多服务分布式并发问题的理解
- 理解高并发(3).多线程开发常见问题示例
- 高并发处理系统的理解---数据一致性(还有一点问题)
- 理解B/S结构中服务端同步与异步机制的区别,通过使用ASP.Net异步处理节约队列时间成本,解决大并发量问题
- [MySQL]对于事务并发处理带来的问题,脏读、不可重复读、幻读的理解
- J2EE初学者需要理解的问题
- 用junitperf做并发测试带来的问题
- 在计算机的立场上讨论汉语理解问题
- (原创)使用TimeStamp控制并发问题[示例]-.cs脚本
- 从头说“并发问题及控制手段”
- J2EE初学者需要理解的问题
- (原创)使用TimeStamp控制并发问题[示例]-简要描述
- 数据库并发问题详述
- J2EE初学者需要理解的问题