数据同步方案求教

南老頭 2012-04-28 03:11:50
在开发一大型应用系统,系统为省、市、县三级架构,各级单位单独部署一套系统,通过网络互联和系统通讯功能实现系统间互联互访,形成一个三级架构的分布式资源平台。
现有某一资源(数据)准备统一放在省级管理,然后各下级分别往自己上级同步各自相关的资源,形如:省级<--市级<--县级, 考虑数据量大,可能同步需要分批同步,中间考虑用个表记录。
以上问题目前鄙人在考虑webservic,MQ,可总觉得不是很好,可能是我对这两技术掌握的不是很好,也可能真有比这两个更好的方案,请高人请指点一下有没有别的可行方案,或就我说的两个技术指点下具体可行方案,感谢不尽!
本人结帐率100%,尽可放心,当然高手也是不在乎这个,哈哈。
...全文
181 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
MiceRice 2012-04-28
  • 打赏
  • 举报
回复
从项目实施经验而言,并不建议直接纯粹依靠应用来做这种数据同步,因为很容易就会陷入分布式事务控制问题。

建议:
1、用数据复制工具,如GoldenGate、Datastage、SharePlex等;
2、数据库之间建立DBLink,对所需同步的表建同义词,这样程序就不必操心跨库访问的问题,跨库操作下推给数据库来负责了;
3、如果你确实因为某些愿意必须用纯应用手段做数据复制,那么对于增量复制的控制要做好处理,也就是确认清楚每次成功复制到什么位置了。

模型一般是:
复制源,部署Client端;复制目标,部署Server端;
Client负责将数据打包,比如50~100条,然后通过EJB或其它服务接口调用Server端,将打包的数据传送给Server端;
然后Server端对打包数据进行校验,然后拆包批量写入(检查重复),完成后返回成功提示给Client端;
Client端更新复制进度(下次复制就不会重复复制已经复制的内容了)。

如果想将上述模型修改为基于消息的,比如JMS或MQ,道理也差不多。主要难度是处理增量问题。比如记录复制时间戳、流水号、复制标志位等。
南老頭 2012-04-28
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

我们用的是webservice,没用过MQ,JMS.不知道那个好不好,感觉webservice挺好用的
[/Quote]

我个人感觉小量数据,发发消息什么webservice挺好, 但大量数据的同步不怎么靠谱。
不知道兄台在并发流量大的时候怎么考虑的,比如在系统用户访问量大的时候有没有一些相关的措施
南老頭 2012-04-28
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]

使用webservice+数据文件

调用webservice后将数据导出为数据文件。
另一方通过webservice返回的文件名进行导入。
[/Quote]

这样的话就又涉及到一个文件传输的问题了
a312983516 2012-04-28
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]
引用 5 楼 的回复:
什么资源? 数据库文件? 还是什么?

数据库文件的话 可以做个下载 下载到本地之后执行个命令导入数据库

几万的数据 下载的话没什么问题

不是文件,就是上级数据库中的数据
[/Quote]


那不就对了 在服务端对相应的数据进行导出一个数据库文件 下载到本地之后 再进行导入数据库
quhuafeng521 2012-04-28
  • 打赏
  • 举报
回复
使用webservice+数据文件

调用webservice后将数据导出为数据文件。
另一方通过webservice返回的文件名进行导入。
liguangwen86 2012-04-28
  • 打赏
  • 举报
回复
我们用的是webservice,没用过MQ,JMS.不知道那个好不好,感觉webservice挺好用的
qybao 2012-04-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

引用 1 楼 的回复:
数据库需要实时同步吗?非实时的话可以考虑夜间做批处理
实时的话(不知道数据量多大),MQ,JMS等都可以,也可以考虑用个中间服务器做数据缓存


其实数据说大也不大,几十万的数据,分到下级各部的话,也就几万的数据吧。
目前中间服务器就没得考虑了,做不起来,资源有限。
MQ,JMS 和 单用webservice,那个更好?
[/Quote]

LZ可以参考以下链接的文章
http://blog.csdn.net/uestcong/article/details/6626180
南老頭 2012-04-28
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
什么资源? 数据库文件? 还是什么?

数据库文件的话 可以做个下载 下载到本地之后执行个命令导入数据库

几万的数据 下载的话没什么问题
[/Quote]
不是文件,就是上级数据库中的数据
dracularking 2012-04-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

引用 1 楼 的回复:
数据库需要实时同步吗?非实时的话可以考虑夜间做批处理
实时的话(不知道数据量多大),MQ,JMS等都可以,也可以考虑用个中间服务器做数据缓存


其实数据说大也不大,几十万的数据,分到下级各部的话,也就几万的数据吧。
目前中间服务器就没得考虑了,做不起来,资源有限。
MQ,JMS 和 单用webservice,那个更好?
[/Quote]
看哪个用起来更简便就用哪个
a312983516 2012-04-28
  • 打赏
  • 举报
回复
什么资源? 数据库文件? 还是什么?

数据库文件的话 可以做个下载 下载到本地之后执行个命令导入数据库

几万的数据 下载的话没什么问题
南老頭 2012-04-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
数据库需要实时同步吗?非实时的话可以考虑夜间做批处理
实时的话(不知道数据量多大),MQ,JMS等都可以,也可以考虑用个中间服务器做数据缓存
[/Quote]

其实数据说大也不大,几十万的数据,分到下级各部的话,也就几万的数据吧。
目前中间服务器就没得考虑了,做不起来,资源有限。
MQ,JMS 和 单用webservice,那个更好?
南老頭 2012-04-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
既然都是你们自己做的系统,直接做数据库联接不行吗?
[/Quote]

目前上面要求通过APP实现,客户也喜欢这种方式,说是看着有个东西在那里。
gukuitian 2012-04-28
  • 打赏
  • 举报
回复
既然都是你们自己做的系统,直接做数据库联接不行吗?
qybao 2012-04-28
  • 打赏
  • 举报
回复
数据库需要实时同步吗?非实时的话可以考虑夜间做批处理
实时的话(不知道数据量多大),MQ,JMS等都可以,也可以考虑用个中间服务器做数据缓存

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧