场景:html
每隔必定时间, 从其余系统(多是异构网络)获取相关数据。java
1. 消息队列方案nginx
rabbitMQweb
考虑点:api
1. 消息保证稳定可靠被处理(所以队列须要声明为可持久化的, 生产者push消息的时候delivery_mode为2)服务器
2. 消息被处理后, 确认后, 及时从内存和硬盘中删除。可能会影响写入的并发性能。网络
参考: https://groups.google.com/forum/#!topic/rabbitmq-users/MuqmsmwRyXc多线程
ps: 假设不持久化也足够稳定, 那么能够不用持久化,来提升性能, 同时存盘的数据不会被其余人经过其余手段看到(猜想不是当即删除, 知足必定条件:待删除的量达到必定程度。所以可能有时延。)。并发
3. 设定硬盘和内存使用阀值:https://www.rabbitmq.com/alarms.html。 保证程序不挂掉。负载均衡
4. 因为对外访问,所以须要权限控制:
概览:https://www.rabbitmq.com/authentication.html
如何:
https://www.rabbitmq.com/man/rabbitmqctl.1.man.html#User%20management
https://www.rabbitmq.com/man/rabbitmqctl.1.man.html#Access%20control
原理:https://www.rabbitmq.com/access-control.html
简单说, 就是(虚拟主机vhost + 用户帐户+密码?), 为了防止暴力破解, 虚拟主机和用户名的设定的时候尽量的复杂,而后不要泄露。
5. 可能须要给撸sdk或者client demo。
java: 对于jdk1.五、1.六、1.七、1.8可能依赖不一样的jar包和文档。 (不一样版本的jar--含文档: http://www.rabbitmq.com/releases/rabbitmq-java-client/)
kafka
http://www.infoq.com/cn/articles/kafka-analysis-part-1
2. web接口方案
http rest api
好比作一个http rest服务器。
考虑点:
1. 数据量,若是数据量很大, 须要分页传送。 一个页面一次http请求, 所以一个比价大的数据可能要进行不少次http请求。创建链接的成本很高。
2. 每一个请求写入一次磁盘。数据及时落入磁盘。
3. 受权验证
4. 能够开多进程服务作负载均衡,支持客户端的多线程分页传输
5. 回执(传输成功or失败),方便两边比对数据。
优势:容易实施。可控性好。
缺点:数据量大了,效率低;可能没法完成任务。
3. 文件传输方案
ftp
略
http断点续传
nginx + upload_module
转载请注明来源:http://www.cnblogs.com/Tommy-Yu/p/6387423.html