data_hub

末蓝、 2022-12-18 11:54 166阅读 0赞

title: data_hub 数据同步 date: 2017-04-25 13:51:49 tags: java

data_hub 数据同步

  1. 使用技术 active_mq,jms
  2. ps : 不对外开放,个人理解

生产者发送数据:

  1. 获取需要推送的第三方应用,ref_platform_app 简述:给那个第三方应用发
  2. 获取平台推送到第三方应用的对象列表(获取平台要发送到第三方哪些表(ref_queue_obj,ref_platform_app,push_obj)) 简述:要发哪些表
  3. 获取每个表需要推送哪些字段的集合(集合包含:表名,以及每个表需要同步的字段。当然还有上面的队列名) 简述:要发的表的里面哪些字段
  4. 表名,队列名.+detail_obj.name,平台唯一标识,objinfo(表名,表哪些列) 简述:无
  5. 查询该表下的所有字段 list> —通过比对是否在需要同步的列集合里面得到—-》 list> getDatas 简述:根据表名查询所有列数据,然后再遍历列集合,筛选字段得到需要发送的最终数据 表1(字段1,字段3…..)
  6. 注意在getData时侯,需要根据路由表来判断该数据是否同步过,同步过的数据不再参与同步,对查询得到的数据进行增删改查的分类封装,保存查询到的数据列表 简述:分类需要发送的数据,增删改,还有加密参数
  7. 开始发送数据 (app的 accessKey为app_secret,队列名agent,) 简述:设置发送数据的优先级以及一些加密参数
  8. 第六步得到的数据列表ids 更新路由表,将同步标识更新,避免 5,6步得到的数据是已经同步过的

消费者接收数据:

监听消息队列获取消息,对消息进行解密验证,获取同步的数据信息,进行入数据库等操作

data_hub功能解释:

  1. 队列名:调用active_mq接口,主要是这个推送过程中产生的一些队列信息。每个队列的生产,消费情况列表。和平台无关,来源 active——mq
  2. 推送对象绑定:平台发送到应用,使用的队列名,以及每个推送关系,需要推送的表数据对象
  3. 用到的表:

    1. :ref_platform_app (关联表 open_platfrom,open_app)
    2. :ref_queue_obj (表功能如:云平台1到手环1作为一次推送,这次推送绑定的对象是学生表,教师表。这个绑定关系是此表)
    3. :push_obj 推送对象,即 数据中心支持发送的所有表数据。
    4. :detail_obj 关联 push_obj
    5. :detail_obj_column 每个对象对应的属性
    6. : route_* 路由表,判断数据是否同步过

关于爬虫

  1. /home/data_hub/node/下文件
  2. 安装 nodejsnpmforever
  3. 修改app.js YWRtaW46YWRtaW4=, jmsAdress为爬取页面地址头部
  4. 修改之后启动 node app.js
  5. 后台启动:forever start app.js
  6. ```
  7. var express = require('express');
  8. var app = express();
  9. var request = require('request');
  10. var parseString = require('xml2js').parseString;
  11. var jmsAdress = 'http://119.23.62.150:8161/admin/xml/queues.jsp';
  12. // var initAdress = 'http://114.215.29.139:10090/gkopen/rpc/init?tocken=2012335444456871128213845&&id='
  13. // var options = {
  14. // hostname:'114.215.29.139',
  15. // port:'8161',
  16. // path:'/admin/xml/queues.sjp',
  17. // method:'GET',
  18. // // headers:{
  19. // // 'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
  20. // // 'Accept-Encoding':'gzip, deflate',
  21. // // 'Accept-Language':'zh-CN,zh;q=0.8',
  22. // // 'Connection':'keep-alive',
  23. // // 'Authorization':'Basic YWRtaW46bHh0ZXN0',
  24. // // 'Cache-Control':'max-age=0',
  25. // // 'Upgrade-Insecure-Requests':'1',
  26. // // 'Host':'114.215.29.139:8161',
  27. // // 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.75 Safari/537.36'
  28. // // }
  29. // };
  30. app.get('/queue/json', function(req,res){
  31. request.get(jmsAdress,{headers:{'Authorization':'Basic YWRtaW46YWRtaW4='}},function(error,response,body){
  32. if (error) {
  33. return console.error('upload failed:', error);
  34. }
  35. console.log('Upload successful! Server responded with:', body);
  36. parseString(body,function(error,data){
  37. if (!error){
  38. var _data = JSON.stringify(data)
  39. var __data = _data.replace(/\[/g,'');
  40. var ___data = __data.replace(/\]/g,'');
  41. var ____data = ___data.replace('{"queues":{"queue":','[');
  42. var _____data = ____data.replace('}}}}','}}]');
  43. var data = JSON.parse(_____data);
  44. res.jsonp(data);
  45. }
  46. })
  47. })
  48. });
  49. // app.get('/sync/init',function(req,res){
  50. // var id = req.query.id;
  51. // request.get(initAdress+id,function(error,response,body){
  52. // if (error){
  53. // return console.error('error');
  54. // }
  55. // console.log('adress:',initAdress+id);
  56. // console.log('id:',id);
  57. // console.log('body:',body);
  58. // res.redirect('http://127.0.0.1:11070/datahub/admin/sync');
  59. // })
  60. // });
  61. var server = app.listen(11060, function () {
  62. console.log("启动成功 11060");
  63. })

发表评论

表情:
评论列表 (有 0 条评论,166人围观)

还没有评论,来说两句吧...

相关阅读