应用服务器:
一台服务器A tomcat6.35 部署生产系统D
一台服务器B tomcat6.35 部署运营系统Y
数据库服务器
一台服务器C 部署了oracle实体和mysql实体分别对应 生产系统和运营系统
以上服务器均在一个局域网内。
主要过程:
1.生产系统D 白天因为要收集生产数据,会有很高的写,具体并发数没测试过
2.现在每天18点 ,生产系统会抽一批数据利用shell脚本传递给B,然后系统B解析入库,然后经过mysql简单的存储过程处理
3.每天凌晨1点,生产系统D会将全部的生产数据从oracle中抽成txt文件,上传FTP,运营系统会从FTP上获取txt,然后解析入库,最后mysql 会经过好几个复杂的存储过程经行预处理。 整个过程到早晨8点 会完成。
面临的问题:
1。 在现有业务环境下(一天数据量是15W),这些都满足,没有问题。唯一出问题,是当初因为生产工具出错,一天系统D收到160W的数据,造成数据库服务器cpu80%的负载,导致凌晨1点的抽数据一直抽到8点。
2.最近两个月业务大发展,现有的系统无法满足,但是分阶段,8月底--->9月底--->10月初,估计8月底 现有的这个架构(姑且称之为架构)在稍微处理下好可以满足,然后在9月底,会有一个100W左右的量,然后到10月初估计会到200W
(这里都是指一天)
所以3个主要过程都会崩溃。
暂时的想法:
1.在1过程中,在8月底考虑nginx加 tomcat负载均衡,然后数据进队列,提高并发,然后多线程的入库oracle。最后在9月份的时候 考虑分布式集群。
- 对于生产系统,将几项生产数据,昨天以前的历史数据归档,只保留当天的数据,加快查询速度。
3,对于现有数据库,先做读写分离,最后做集群。
但是现在的问题是,一个用的是oracle ,一个用的是mysql,oracle服务器面临的是大量的高并发的写。主要过程2 3抽数据在数据量大后效率很低。
所以 有这么几个方案:
1.生产系统从oracle 一步步转到mysql,然后做mysql的读写分离。
2.还是继续使用oracle+mysql,但是每天定时抽取数据的方式得做更改,比如,每隔一小时从oracle 吐到mysql,而且oracle转mysql 写一个简单的中间件(或者有什么成熟的工具),直接进行表与表之间的数据同步。
因为见识所限,所以请各位帮忙,看下,这样的系统该怎么去优化。
当然,钱是主要问题,如果跟 阿狸或者企鹅一样有钱,直接各种砸服务器堆硬件(有点 单反里的器材党的感觉),因为是小公司,所以考虑到新服务器不能一步到位的情况下,分阶段的该怎么走。。。