并发关键问题思考
2017-12-21 10:01
127 查看
异常处理
异常顾名思义在正常运行的程序因为各种原因导致的非正常处理。异常的关键要素包括错误信息、异常堆栈、错误代码、错误参数、发生时间等。另外,由于异常报错的地方可能较多,因此需要集中处理,对于不同的业务需要建立不同的异常日志。
监控流水
监控流水是为了解决程序的健康情况和程序报错后的处理参考。监控包括程序的操作业务流水和业务操作链条流水。前者用于监控程序的健康状况,后者用于解决逻辑性错误的监控流水。监控势必影响一定的程序性能,因此监控程序必须采用异步方式写。监控数据的存储需要以日期和业务主体作为分类保存,方便随时查找。
并发处理
事务,事务是保证处理流程一致操作的利器,例如对于资金的更改记录,包括总账更改和流水更改,如果流水更改发生错误,则总账也发生回滚,可以导致不必要的程序错误。事务发生于数据库层。事务能够保证操作的序列要么执行、要么不执行,也就是保持事务状态的一致性。
锁解决多线程访问统一资源时的竞争问题。锁分为数据锁和数据库锁,数据锁通过iis解决,数据库锁通过数据库层面解决。为了保证程序的协调一致,尽可能的通过程序锁解决,防止数据库锁不释放导致的程序瘫痪问题。程序锁里面必须要有锁释放机制。
并发中实际会存在三个核心问题:1)重复操作问题 ,即由于重复快速提交导致数据重复问题 2)由于操作同一资源,导致资源访问不一致问题 3)大量重复操作,导致的负载压力大问题 。第一个问题,需要采用缓存问题解决,将数据判断的数量级降为亚秒级别。第二个问题,需要采用并发和事务处理,保证修改数据的一致性问题。 第三个问题,需要采用负载均衡和队列,以便增大数据吞吐和请求削峰处理。
异常顾名思义在正常运行的程序因为各种原因导致的非正常处理。异常的关键要素包括错误信息、异常堆栈、错误代码、错误参数、发生时间等。另外,由于异常报错的地方可能较多,因此需要集中处理,对于不同的业务需要建立不同的异常日志。
监控流水
监控流水是为了解决程序的健康情况和程序报错后的处理参考。监控包括程序的操作业务流水和业务操作链条流水。前者用于监控程序的健康状况,后者用于解决逻辑性错误的监控流水。监控势必影响一定的程序性能,因此监控程序必须采用异步方式写。监控数据的存储需要以日期和业务主体作为分类保存,方便随时查找。
并发处理
事务,事务是保证处理流程一致操作的利器,例如对于资金的更改记录,包括总账更改和流水更改,如果流水更改发生错误,则总账也发生回滚,可以导致不必要的程序错误。事务发生于数据库层。事务能够保证操作的序列要么执行、要么不执行,也就是保持事务状态的一致性。
锁解决多线程访问统一资源时的竞争问题。锁分为数据锁和数据库锁,数据锁通过iis解决,数据库锁通过数据库层面解决。为了保证程序的协调一致,尽可能的通过程序锁解决,防止数据库锁不释放导致的程序瘫痪问题。程序锁里面必须要有锁释放机制。
并发中实际会存在三个核心问题:1)重复操作问题 ,即由于重复快速提交导致数据重复问题 2)由于操作同一资源,导致资源访问不一致问题 3)大量重复操作,导致的负载压力大问题 。第一个问题,需要采用缓存问题解决,将数据判断的数量级降为亚秒级别。第二个问题,需要采用并发和事务处理,保证修改数据的一致性问题。 第三个问题,需要采用负载均衡和队列,以便增大数据吞吐和请求削峰处理。
相关文章推荐
- 【Java】关于Java8 parallelStream并发安全的思考
- 关于Java并发编程的总结和思考
- 对.Net状态保持机制和并发问题的思考
- 关于Java并发编程的总结和思考
- 2017-08-09 DBA日记,并发高频执行SQL带来的思考
- 对现阶段存在并发场景的OD项目相关编码的一些思考
- 关于Java并发编程的总结和思考
- 对mysql的高并发优化配置的一些思考
- 对于大并发的思考
- 10010---关于Java并发编程的总结和思考
- 关于Java并发编程的总结和思考
- 关于Java并发编程的总结和思考
- 关于并发下内存及CPU使用情况的思考
- 并发思考-actor和thread那个好点?
- 并发与并行(concurrency and parallelism)的思考理解
- 关于Java并发编程的总结和思考
- 并发用户数、吞吐量、思考时间的计算公式
- java 并发安全的思考
- 高并发场景下oracle触发器+序列产生序号的一些现象与思考