iteye_17284 2013-08-19 10:34
浏览 239
已采纳

这样的系统 该如何去重新架构

应用服务器:

一台服务器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月份的时候 考虑分布式集群。

  1. 对于生产系统,将几项生产数据,昨天以前的历史数据归档,只保留当天的数据,加快查询速度。

3,对于现有数据库,先做读写分离,最后做集群。

但是现在的问题是,一个用的是oracle ,一个用的是mysql,oracle服务器面临的是大量的高并发的写。主要过程2 3抽数据在数据量大后效率很低。

所以 有这么几个方案:

1.生产系统从oracle 一步步转到mysql,然后做mysql的读写分离。

2.还是继续使用oracle+mysql,但是每天定时抽取数据的方式得做更改,比如,每隔一小时从oracle 吐到mysql,而且oracle转mysql 写一个简单的中间件(或者有什么成熟的工具),直接进行表与表之间的数据同步。

因为见识所限,所以请各位帮忙,看下,这样的系统该怎么去优化。

当然,钱是主要问题,如果跟 阿狸或者企鹅一样有钱,直接各种砸服务器堆硬件(有点 单反里的器材党的感觉),因为是小公司,所以考虑到新服务器不能一步到位的情况下,分阶段的该怎么走。。。

  • 写回答

6条回答 默认 最新

  • yunzhu666 2013-08-20 11:07
    关注

    1、Oracle迁移到MySQL
    建议Oracle一步步迁移到MySQL,否则后期数据量更大需要进一步优化架构的时候会更加痛苦,统一地使用MySQL以后架构优化起来就方便多了,比如生产库如果数据量很大,可以考虑分库分表。

    2、库与库的数据同步
    生产库和运营库之间的数据同步是最大的问题,如果生产库迁移到MySQL不管使用何种方案都会方便得多。
    现在是每天晚上同步,如果白天没有太大性能瓶颈的话可以考虑下实时同步,这时可以考虑使用淘宝的TimeTunnel,当然也可以自己实现实时同步。
    如果不考虑迁移到MySQL,那么也可以使用DataX实现异构数据源之间的同步。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog