一、背景介绍
1、系统的架构是spring+mybaties+oracle。
2、系统处理的数据量在五十万到百万级之间,采用了kafka进行分布式处理,主要功能和要优化的模块在数据清算和数据导出。
二、可优化点介绍
1、kafka—分布式订阅-发布消息系统
kafka是一款可靠、可扩展、高性能的消息系统,具体介绍可以看
Kafka简介,这篇文章写的很不错。
在本系统主要是利用kafka集群,开辟多个kafka分区(Partition)来实现并行消费而提高性能。
2、阻塞队列的使用
在数据导出模块的消费端,先利用多线程并行分批处理需要导出的数据,同时用单线程去把数据写到文件里。这里面数据的传递用到了阻塞队列里,我用的是效率更高的LinkedBlockingQueue,这个可以看我的另一篇博客
Java阻塞队列的学习笔记 文章有介绍为什么LinkedBlockingQueue的效率高一些。这样这个阻塞队列就等于自己实现的一个小的消息系统,生产者生产数据和消费者取数据可以同时进行,提高系统整体的处理性能。
3、oracle的sql语句优化
下面的是我总结的oracle的sql语句常用优化原则: