A 系统要将 一些数据传给 B系统
2个系统 数据库 是隔离的现在的方法 是 A 系统 在一定的状态下 调用 系统B 的webservice,传给 B系统插入 B数据库中,但是 每次传输的数据有点多,速度 很慢,需要10多分钟才能传完一个批次的数据,你可能 想到 能不能一次 少传输点 数据 ,这个办法 先不考虑,因为必须一次 传1个批次,1个批次的数据不能减少了因为必须 一次 传输很多数据 请各位有什么好的想法能告诉我,交流交流!!!
2个系统 数据库 是隔离的现在的方法 是 A 系统 在一定的状态下 调用 系统B 的webservice,传给 B系统插入 B数据库中,但是 每次传输的数据有点多,速度 很慢,需要10多分钟才能传完一个批次的数据,你可能 想到 能不能一次 少传输点 数据 ,这个办法 先不考虑,因为必须一次 传1个批次,1个批次的数据不能减少了因为必须 一次 传输很多数据 请各位有什么好的想法能告诉我,交流交流!!!
只是传输用另一个协议而已了。
况且socket这东西 有 经验的 还没有
1. 数据写文件,
2。你还需要ftp上传
3 b去读取还需要解析文件
实现起来都不困难,但是总感觉 不是 最好的方案,不过还是谢谢 火龙果啊
所以你最好说清楚你的数据的情况
开销太大,LZ最好把你webservice的具体实现告诉大家。
我up一下这位仁兄。
用FTP修改不会很大吧!
数据放在excle中!
public final class ZipUtils {
private static final int BUFFER = 2048; private ZipUtils() {
}; public static InputStream compress(InputStream inputStream, String name) throws IOException {
ByteArrayOutputStream result = new ByteArrayOutputStream();
ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(result));
byte data[] = new byte[BUFFER]; BufferedInputStream origin = new BufferedInputStream(inputStream, BUFFER);
ZipEntry entry = new ZipEntry(name);
out.putNextEntry(entry);
int count = 0;
while ((count = origin.read(data, 0, BUFFER)) != -1) {
out.write(data, 0, count);
}
origin.close();
out.close();
result.close(); return new ByteArrayInputStream(result.toByteArray());
} public static InputStream inflate(InputStream orginal) throws IOException {
ByteArrayOutputStream fos = new ByteArrayOutputStream();
ZipInputStream zis = new ZipInputStream(new BufferedInputStream(orginal));
ZipEntry entry = null;
while ((entry = zis.getNextEntry()) != null) {
int count;
byte data[] = new byte[BUFFER];
BufferedOutputStream dest = new BufferedOutputStream(fos, BUFFER);
while ((count = zis.read(data, 0, BUFFER)) != -1) {
dest.write(data, 0, count);
}
dest.flush();
dest.close();
}
zis.close();
return new ByteArrayInputStream(fos.toByteArray());
} public static DataHandler getHandlerFromBytes(byte[] content, String zipName) throws IOException {
ByteArrayInputStream prepared = new ByteArrayInputStream(content);
InputStream compressed = ZipUtils.compress(prepared, zipName); return MtomUtils.newDataHandler(compressed);
}
}
1)如果压缩/解压对A,B双方都对等,数据格式、实现难度不大;
2)如果压缩/解压缩操作耗时不大(至少相比传输时间少得多),压缩体积客观那么可以考虑46楼的方案
1)如果压缩/解压对A,B双方都对等,数据格式、实现难度不大;
2)如果压缩/解压缩操作耗时不大(至少相比传输时间少得多),压缩体积客观那么可以考虑46楼的方案
1)如果压缩/解压对A,B双方都对等,数据格式、实现难度不大;
2)如果压缩/解压缩操作耗时不大(至少相比传输时间少得多),压缩体积客观那么可以考虑46楼的方案
或者用json,听说效率上是否会高些,这个楼主可以自己测试下
公司是trs 北京拓尔思信息技术股份科技有限公司
由于每次传输的数据比较多,把文件流压缩下,比如zip或者gzip格式。当时我们也试过WebServices方式,结果数据大了就不行,没搞定,可能有对WebServices不熟悉有关。
其实楼上说的ETL不错,这个看你们项目上有没有时间和风险让你们新研究这个了。
你的意思是在保证事物的基础上加快传输速度吗?火龙果的方法其实就不错了,只需再做个压缩而已。
不想放弃webservice方法可以,但必须改写webservice(其实和放弃也差不多了,因为webservice的本意就是想以面向对象的方式处理数据)
那就是在A端将要传的数据以某种字符串格式表现,然后通过某个算法压缩之(如果觉得难可先将这个字符串写入文件将文件用某个压缩命令压缩后再将压缩文件读取成字节流数组),再传递就会快了。
当然接受方的webservice得到这个字符串后要解压并解析出数据,再通过业务方法实现事物。提高速度和webservice没有任何关系,它只负责业务逻辑。想快只能压缩传输的数据,这个和业务无关!