All Projects → sasou → Syncclient

sasou / Syncclient

syncClient,数据实时同步中间件(同步mysql到kafka、redis、elasticsearch、httpmq)!

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to Syncclient

Operators
Collection of Kubernetes Operators built with KUDO.
Stars: ✭ 175 (-22.91%)
Mutual labels:  kafka, redis, elasticsearch
Community
一个仿照牛客网实现的讨论社区,不仅实现了基本的注册,登录,发帖,评论,点赞,回复功能,同时使用前缀树实现敏感词过滤,使用wkhtmltopdf生成长图和pdf,实现网站UV和DAU统计,并将用户头像等信息存于七牛云服务器。
Stars: ✭ 80 (-64.76%)
Mutual labels:  kafka, redis, elasticsearch
Springbootexamples
Spring Boot 学习教程
Stars: ✭ 794 (+249.78%)
Mutual labels:  kafka, redis, elasticsearch
Javakeeper
✍️ Java 工程师必备架构体系知识总结:涵盖分布式、微服务、RPC等互联网公司常用架构,以及数据存储、缓存、搜索等必备技能
Stars: ✭ 502 (+121.15%)
Mutual labels:  kafka, redis, elasticsearch
Firecamp
Serverless Platform for the stateful services
Stars: ✭ 194 (-14.54%)
Mutual labels:  kafka, redis, elasticsearch
Stream Reactor
Streaming reference architecture for ETL with Kafka and Kafka-Connect. You can find more on http://lenses.io on how we provide a unified solution to manage your connectors, most advanced SQL engine for Kafka and Kafka Streams, cluster monitoring and alerting, and more.
Stars: ✭ 753 (+231.72%)
Mutual labels:  kafka, redis, elasticsearch
Nagios Plugins
450+ AWS, Hadoop, Cloud, Kafka, Docker, Elasticsearch, RabbitMQ, Redis, HBase, Solr, Cassandra, ZooKeeper, HDFS, Yarn, Hive, Presto, Drill, Impala, Consul, Spark, Jenkins, Travis CI, Git, MySQL, Linux, DNS, Whois, SSL Certs, Yum Security Updates, Kubernetes, Cloudera etc...
Stars: ✭ 1,000 (+340.53%)
Mutual labels:  kafka, redis, elasticsearch
Springboot Learning
基于Gradle构建,使用SpringBoot在各个场景的应用,包括集成消息中间件、前后端分离、数据库、缓存、分布式锁、分布式事务等
Stars: ✭ 340 (+49.78%)
Mutual labels:  kafka, redis, elasticsearch
Whatsmars
Java生态研究(Spring Boot + Redis + Dubbo + RocketMQ + Elasticsearch)🔥🔥🔥🔥🔥
Stars: ✭ 1,389 (+511.89%)
Mutual labels:  kafka, redis, elasticsearch
Springboot Templates
springboot和dubbo、netty的集成,redis mongodb的nosql模板, kafka rocketmq rabbit的MQ模板, solr solrcloud elasticsearch查询引擎
Stars: ✭ 100 (-55.95%)
Mutual labels:  kafka, redis, elasticsearch
Cookbook
🎉🎉🎉JAVA高级架构师技术栈==任何技能通过 “刻意练习” 都可以达到融会贯通的境界,就像烹饪一样,这里有一份JAVA开发技术手册,只需要增加自己练习的次数。🏃🏃🏃
Stars: ✭ 428 (+88.55%)
Mutual labels:  kafka, redis, elasticsearch
Flink Learning
flink learning blog. http://www.54tianzhisheng.cn/ 含 Flink 入门、概念、原理、实战、性能调优、源码解析等内容。涉及 Flink Connector、Metrics、Library、DataStream API、Table API & SQL 等内容的学习案例,还有 Flink 落地应用的大型项目案例(PVUV、日志存储、百亿数据实时去重、监控告警)分享。欢迎大家支持我的专栏《大数据实时计算引擎 Flink 实战与性能优化》
Stars: ✭ 11,378 (+4912.33%)
Mutual labels:  kafka, redis, elasticsearch
Gnomock
Test your code without writing mocks with ephemeral Docker containers 📦 Setup popular services with just a couple lines of code ⏱️ No bash, no yaml, only code 💻
Stars: ✭ 398 (+75.33%)
Mutual labels:  kafka, redis, elasticsearch
Goodskill
🐂基于springcloud +dubbo构建的模拟秒杀项目,模块化设计,集成了分库分表、elasticsearch🔍、gateway、mybatis-plus、spring-session等常用开源组件
Stars: ✭ 786 (+246.26%)
Mutual labels:  kafka, redis, elasticsearch
Kafka Connect Ui
Web tool for Kafka Connect |
Stars: ✭ 388 (+70.93%)
Mutual labels:  kafka, redis, elasticsearch
Szt Bigdata
深圳地铁大数据客流分析系统🚇🚄🌟
Stars: ✭ 826 (+263.88%)
Mutual labels:  kafka, redis, elasticsearch
Dataengineeringproject
Example end to end data engineering project.
Stars: ✭ 82 (-63.88%)
Mutual labels:  kafka, redis, elasticsearch
Spring Boot 2.x Examples
Spring Boot 2.x code examples
Stars: ✭ 104 (-54.19%)
Mutual labels:  kafka, redis, elasticsearch
Echo
🦄 开源社区系统:基于 SpringBoot + MyBatis + MySQL + Redis + Kafka + Elasticsearch + Spring Security + ... 并提供详细的开发文档和配套教程。包含帖子、评论、私信、系统通知、点赞、关注、搜索、用户设置、数据统计等模块。
Stars: ✭ 129 (-43.17%)
Mutual labels:  kafka, redis, elasticsearch
Albert
这个是我个人网站的项目,欢迎贡献代码,力求能够应用到实际工作中java相关的大多数技术栈。有兴趣请Star一下,非常感谢。qq交流群:587577705 这个项目将不断地更新!生产环境:
Stars: ✭ 168 (-25.99%)
Mutual labels:  redis, elasticsearch

syncClient

  syncClient,数据实时同步中间件(同步mysql到kafka、redis、elasticsearch、httpmq)!

本项目使用canal,将mysql的表数据实时同步到kafka、redis、elasticsearch、httpmq;  

基本原理:
canal解析binlog的数据,由syncClient订阅,然后实时推送到kafka或者redis、elasticsearch、httpmq、ssdb;如果kafka、redis、es、httpmq服务异常,syncClient会回滚操作;canal、kafka、redis、es、httpmq的异常退出,都不会影响数据的传输;


目录:
bin:已编译二进制项目,可以直接使用;
src:源代码;


配置说明:

#common
system.debug=1 # 是否开始调试:1未开启,0为关闭(线上运行请关闭)

#canal server
canal.ip=127.0.0.1 # canal 服务端 ip;
canal.port=11111 # canal 服务端 端口:默认11111;
canal.destination=one # canal 服务端项目(destinations),多个用逗号分隔,如:redis,kafka;
canal.username= # canal 用户名:默认为空;
canal.password= # canal 密码:默认为空;

#redis plugin
redis.target_type=redis # 同步插件类型 kafka or redis、elasticsearch、httpmq;
redis.target_ip= # redis服务端 ip;
redis.target_port= # redis端口:默认6379;
redis.target_deep= # 同步到redis的队列名称规则;
redis.target_filter_api= # rest api地址,配置后会根据api返回的数据过滤同步数据;

#kafka plugin
kafka.target_type=kafka # 同步插件类型 kafka;
kafka.target_ip= # kafka服务端 ip;
kafka.target_port= # kafka端口:默认9092;
kafka.target_deep= # 同步到kafka的集合名称规则;
kafka.target_filter_api= # rest api地址,配置后会根据api返回的数据过滤同步数据;

#elasticsearch plugin
es.target_type=elasticsearch # 同步插件类型elasticsearch;
es.target_ip=10.5.3.66 # es服务端 ip; es.target_port= # es端口:默认9200; es.target_deep= # 同步到es的index名称规则;
es.target_filter_api= # rest api地址,配置后会根据api返回的数据过滤同步数据;

#httpmq plugin
httpmq.target_type=httpmq # 同步插件类型 httpmq;
httpmq.target_ip=10.5.3.66 # httpmq服务端 ip; httpmq.target_port=1218 # httpmq端口:默认 1218
httpmq.target_deep= # 同步到httpmq的队列名称规则;
httpmq.target_filter_api= # rest api地址,配置后会根据api返回的数据过滤同步数据;

#cache plugin
cache.target_type=cache # 缓存同步插件 cache.target_plugin=memcached # 缓存同步类型:暂支持redis、memcached缓存服务器;
cache.target_ip=127.0.0.1 # 缓存服务器ip;
cache.target_port=11211 # 缓存服务器端口;
cache.target_filter_api= # rest api地址,配置后会根据api返回的数据过滤同步数据;
cache.target_version_sign= # 缓存key前缀

#target_deep参数影响topic规则,默认值1: 1、sync_{项目名}{db}{table}; 2、sync_{项目名}{db}; 3、sync{项目名}; 4、sync_{db}_{table};


使用场景(基于日志增量订阅&消费支持的业务):

数据库镜像
数据库实时备份
多级索引 (分库索引)
search build
业务cache刷新
数据变化等重要业务消息

Kafka:

Topic规则:对应配置项目target_deep指定的规则,比如:target_deep=4,数据库的每个表有单独的topic,如数据库admin的user表,对应的kafka主题名为:sync_admin_user   Topic数据字段:

插入数据同步格式:
{
    "head": {
        "binlog_pos": 53036,
        "type": "INSERT",
        "binlog_file": "mysql-bin.000173",
        "db": "sdsw",
        "table": "sys_log"
    },
    "after": [
        {
            "log_id": "1",
        },
        {
            "log_ip": "27.17.47.100",
        },
        {
            "log_addtime": "1494204717",
        }
    ]
}

修改数据同步格式:
{
    "head": {
        "binlog_pos": 53036,
        "type": "UPDATE",
        "binlog_file": "mysql-bin.000173",
        "db": "sdsw",
        "table": "sys_log"
    },
    "before": [
        {
            "log_id": "1",
        },
        {
            "log_ip": "27.17.47.100",
        },
        {
            "log_addtime": "1494204717",
        }
    ],
    "after": [
        {
            "log_id": "1",
        },
        {
            "log_ip": "27.17.47.1",
        },
        {
            "log_addtime": "1494204717",
        }
    ]
}

删除数据同步格式:
{
    "head": {
        "binlog_pos": 53036,
        "type": "DELETE",
        "binlog_file": "mysql-bin.000173",
        "db": "sdsw",
        "table": "sys_log"
    },
    "before": [
        {
            "log_id": "1",
        },
        {
            "log_ip": "27.17.47.1",
        },
        {
            "log_addtime": "1494204717",
        }
    ]
}

head.type 类型:INSERT(插入)、UPDATE(修改)、DELETE(删除);

head.db 数据库;

head.table 数据库表;

head.binlog_pos 日志位置;

head.binlog_file 日志文件;  

before: UPDATE(修改前)、DELETE(删除前)的数据;  

after: INSERT(插入后)、UPDATE(修改后)的数据;

Redis:

List规则:对应配置项目target_deep指定的规则,比如:target_deep=4,数据库的每个表有单独的list,如数据库admin的user表,对应的redis list名为:sync_admin_user  

Elasticsearch

规则:数据库的每个表有单独的Elasticsearch index,如数据库admin的user表,对应的es index名为:sync_admin_user, index type 为default;

Elasticsearch同步数据的head中有id字段;

Mysql 同步到 Elasticsearch注意事项:

1、表需要有一个唯一id主键;
2、表时间字段datetime会转为es的时间字段,其他字段对应es的文本类型;
3、主键、时间字段禁止修改,其他字段尽量提前规划好;

Httpmq:

List规则:对应配置项目target_deep指定的规则,比如:target_deep=4,数据库的每个表有单独的list,如数据库admin的user表,对应的redis list名为:sync_admin_user  

Cache:

缓存同步插件:原理是根据数据库变更同步更新表及字段的版本号,业务sdk根据版本号变化判断是否需要更新数据。同步开发了缓存配置管理中心、缓存版本调用sdk(未开源);

Flag Counter

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].