Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

fishered/sync

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Biz组件设计

拓展

在biz中定义了AbstractProcessData和BizSyncLoad,如果需要实现其他类型业务数据同步至es 
*自定义业务实现实现BizSyncLoad
*自定义BizType 对应的业务类型
*实现BizSyncLoad方法, loadData, count等...
*调用时指定对应的BizType,其他的事情交给sync去做
*需要你指定你要同步的数据,同步多少...

同步的数据会不会丢失

同步分为全量同步和增量同步,主要是由具体业务实现获取上一次操作记录决定的。
目前是第一次全量后,后续都为增量,增量根据update决定。
想强制同步全量?删除对应你指定的标记就好 参考@See isWhole()

同步收集的数据按理说是不会丢失的,因为引用了基于rocket的防消息丢失机制:
开一个新的线程,去监听一个blockQueue 如果同步线程失败了就往fail里扔,但是这里
有个隐患,如果大量失败 还要考虑你的消费能力 
当然,我认为有必要将failContext保存起来,做后续的操作,这是后面优化的地方

为什么同步成功后数据没有全部进来

*第一,再同步程序中,可能会有超时崩溃等异常,会交给补偿的线程池处理 它们的动作都是异步的,
只是在主要同步的方法中做了 all 阻塞等待,所以有异常的情况可能需要等待补偿执行完成
*第二,在elastic中,异步写入的方式 会先在缓冲池中不会立刻刷新到index doc下,所以尝试加载重新刷新index

在业务中要手动同步数据

在业务中要手动同步数据,需要调用sync的同步方法,参考@See manualThrowEx

组件结构树

├─src
│  ├─main
│  │  ├─java
│  │  │  └─com
│  │  │      └─asset
│  │  │          └─sync
│  │  │              ├─biz ##同步biz的包 也sync的核心
│  │  │              │  ├─asset ##对应asset的实现包
│  │  │              │  ├─compensate ##任务补偿处理
│  │  │              │  ├─config ##配置文件
│  │  │              │  ├─context ##biz thread处理的上下文
│  │  │              │  ├─core ##核心处理
│  │  │              │  ├─exec ##定时任务的入口
│  │  │              │  ├─format ##格式化处理
│  │  │              │  ├─type ##封装的biz的类型 用于spring ioc注册实现类
│  │  │              │  └─util ##工具类
│  │  │              ├─config ##各种公共配置 elastic redis pg...
│  │  │              ├─controller ##对应控制层
│  │  │              ├─domain
│  │  │              ├─factory
│  │  │              ├─param
│  │  │              │  └─req
│  │  │              └─service ##对应业务数据的方法,一般为业务crud
│  │  │                  └─asset
│  │  │                      ├─mapper
│  │  │                      └─service
│  │  │                          └─impl
│  │  └─resources
│  └─test
│      └─java
│          └─com
│              └─asset
└─              └─sync ##测试脚本

配置说明

打开application.yml 设置如下
pg:(变更自行替换)
    driver-class-name: org.postgresql.Driver
    url: jdbc:postgresql://10.35.30.105:5433/asset218
    type: com.zaxxer.hikari.HikariDataSource
    password: idss@1234
    username: postgres

es:
    cluster-hosts: 10.66.11.57:9200
    userName: elastic
    password: X1@dataorihost: 10.35.30.105:9200

redis:
    host: 10.66.11.57
    port: 6379
    password: dat@ori123
    database: 0

port:8080
自行替换为实际配置

使用

默认已经集成了asset_info 自动同步 
同步时间为每天0点同步 全量/增量
如需手动调用参考接口manual_data

About

ealsticsearch的同步工具 支持定时处理

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.