Kafka

Canal+Camus快速采集MySQL Binlog到数据仓库

独自空忆成欢 提交于 2020-11-11 00:44:06
点击上方 蓝色字体 ,选择“ 设为星标 ” 回复”资源“获取更多资源 大数据技术与架构 点击右侧关注,大数据开发领域最强公众号! 大数据 真好玩 点击右侧关注,大数据真好玩! 数据仓库的同步方法 我们的数据仓库长久以来一直使用天级别的离线同步方法:采用Sqoop或DataX按天定时获取各个MySQL表的全量或增量数据,然后载入到Hive里对应的各个表中。这种方法门槛低,容易操作,在数仓建设阶段能够快速启动。但是随着时间的推移,它暴露出了一些缺点: 从MySQL获取数据只能靠select,如果一次select数据量过大,会造成慢查询,甚至影响线上业务; 随着业务量的增长和新业务的加入,数据量会相应增加,离线同步一次的耗时会越来越长; 增量同步方式无法检测到MySQL中被delete掉的记录,如果没有时间戳字段的话,也较难检测到被update的记录。 所以,我们最近致力于按照变动数据获取(Change Data Capture,CDC)的方式改造我们的数仓,分三步走: 首先订阅MySQL库的Binlog,将其存储到临时表中; 然后对需要入库的表一次性制作快照,并将存量数据导入Hive; 最后基于存量数据和Binlog记录的变动进行合并,还原出与业务库相同的数据。 本文要说的就是第一步的实现方案。我们采用阿里的开源组件Canal来接入MySQL Binlog,并投递到Kafka

京东大佬,传统三年,2个月终拿到0ffer 中间经历了什么?

此生再无相见时 提交于 2020-11-10 13:20:52
点赞关注,不会迷路! 前言 今天为大家分享一位来自京东大佬的面试历程,从传统企业工作三年,历时2个月的时间,终于跳槽到了京东,拿到大厂offer的故事。 学习笔记放文章末尾 ! 京东一面 1.线程池用过哪些,线程池有哪些参数,然后问我几个常用线程池的用法和实际场景问 题。 2.集合框架的知识,hashmap,ArrayList,LinkedList源码相关知识,基本整个介绍了 一遍,与hastable,concurrenthashmap相互的关联和区别 3.说几个垃圾回收器,cms回收器有哪几个过程,停顿几次,会不会产生内存碎片。老 年代产生内存碎片会有什么问题。 4.讲讲快速排序,分析一下时间复杂度? 5.双亲委派模型介绍一下 6.java中同步、volatile关键字 7.jvm内存分区,为什么要有新生代和老年代 8.有做个VM内存优化吗? 9.数据库索引主键和唯一索引有什么区别 10.聚集索引和非聚集索引的区别? 11.MySQL存储引擎innoDB和MylSAM的区别? 12. innoDB的B+树索引叶子节点的Data域存储的是什么?MylSAM的B+树索引叶子节 点的Data域存储的是主键还是物理地址? 京东二面 1.MySQL innodb的b+树索引,主键索引,聚簇索引有什么区别。 2.数据库四大特性 3.事务的四大隔离级别 4.jvm场景问题

阿里高级面试题 2019

馋奶兔 提交于 2020-11-10 05:35:20
阿里内推Java一面题目 数据库 1. 使用mysql索引都有哪些原则??索引什么数据结构??B+tree 和 B tree 什么区别?? 1、 对于查询频率高的字段创建索引; 2、 对排序、分组、联合查询频率高的字段创建索引; 3、 索引的数目不宜太多 原因:a、每创建一个索引都会占用相应的物理控件;    b、过多的索引会导致insert、update、delete语句的执行效率降低; 4、若在实际中,需要将多个列设置索引时,可以采用多列索引 如:某个表(假设表名为Student),存在多个字段(StudentNo, StudentName, Sex, Address, Phone, BirthDate),其中需要对StudentNo,StudentName字段进行查询,对Sex字段进行分组,对BirthDate字段进行排序,此时可以创建多列索引 index index_name (StudentNo, StudentName, Sex, BirthDate); #index_name为索引名 在上面的语句中只创建了一个索引,但是对4个字段都赋予了索引的功能。 创建多列索引,需要遵循BTree类型, 即第一列使用时,才启用索引。 在上面的创建语句中,只有mysql语句在使用到StudentNo字段时,索引才会被启用。 如: select * from Student where

2020版中间件面试题总结(RabbitMQ+Kafka+ZooKeeper)

随声附和 提交于 2020-11-08 22:25:59
RabbitMQ 1. RabbitMQ的使用场景有哪些? 抢购活动,削峰填谷,防止系统崩塌。 延迟信息处理,比如10分钟之后给下单未付款的用户发送邮件提醒。解耦系统,对于新增的功能可以单独写模块扩展,比如用户确认评价之后,新增了给用户返积分的功能,这个时候不用在业务代码里添加新增积分的功能,只需要把新增积分的接口订阅确认评价的消息队列即可,后面再添加任何功能只需要订阅对应的消息队列即可。 2. RabbitMQ有哪些重要的角色? RabbitMQ中重要的角色有:生产者、消费者和代理: [图片上传失败...(image-40f1e0-1604821335945)] 生产者:消息的创建者,负责创建和推送数据到消息服务器; 消费者:消息的接收方,用于处理数据和确认消息; 代理:就是RabbitMQ本身,用于扮演“快递”的角色,本身不生产消息,只是扮演“快递”的角色。 3. RabbitMQ有哪些重要的组件? ConnectionFactory(连接管理器):应用程序与Rabbit之间建立连接的管理器,程序代码中使用。 Channel(信道):消息推送使用的通道。 Exchange(交换器):用于接受、分配消息。 Queue(队列):用于存储生产者的消息。 RoutingKey(路由键):用于把生成者的数据分配到交换器上。 BindingKey(绑定键):用于把交换器的消息绑定到队列上。

阿里云技术负责人首推:kafka从源码到实战一手掌握

房东的猫 提交于 2020-11-08 20:56:20
2011年年初,美国领英公司(LinkedIn)开源了一款基础架构软件,以奥地利作家弗兰兹·卡夫卡(Franz Kafka)的名字命名,之后LinkedIn将其贡献给Apache基金会,随后该软件于2012年10月成功完成孵化并顺利晋升为Apache顶级项目——这便是大名鼎鼎的ApacheKafka。历经7年发展,2017年11月,Apache Kafka正式演进到1.0时代,本书就是基于1.0.0版本来展开介绍Kafka的设计原理与实战的。 在大数据时代飞速发展的当下,Kafka凭借着 其高吞吐低延迟、高压缩性、持久性、可靠性、容错性以及高并发 的优势,解决了“在巨大数据下进行准确收集并分析”的难题,也受到了不少大厂以及工程师的青睐, 但是有大部分的人,在学习以及面试的过程中才发现自己并没有完全掌握其奥义,对于常见问题仍旧一知半解,这 主要是源码阅读的过程中存在问题 (1)源文件太多,不知道重点; (2)源码量太大,无数次从开始到放弃; (3)方法不对,遇到“技巧性”编码就蒙圈; (4)不够体系化,不会将源文件归类阅读。 下面给大家介绍一份kafka的源码解析笔记。 源码解析 由于本书的篇幅限制,本书并没有详细介绍Kafka源码中涉及的所有基础知识,例如Java NIO、JUC包中工具类的使用、命令行参数解析器的使用等,为方便读者阅读,笔者仅介绍了一些必须且重要的基础知识

最中肯的Redis规范全在这了

被刻印的时光 ゝ 提交于 2020-11-08 13:35:56
Redis功能强大,数据类型丰富,再快的系统,也经不住疯狂的滥用。通过禁用部分高风险功能,并挂上开发的枷锁,业务更能够以简洁、通用的思想去考虑问题,而不是绑定在某种实现上。 Redis 根据不同的用途,会有不同的持久化策略和逐出策略,所以,在使用和申请 Redis 集群前,请明确是用来做缓存还是存储。redis 的集群有主从和 cluster 两种模式,各有优缺点。以下规范不区分集群模式,我们分别从使用场景和操作限制两方面说明。 使用规范 冷热数据区分 虽然 Redis支持持久化,但将所有数据存储在 Redis 中,成本非常昂贵。建议将热数据 (如 QPS超过 5k) 的数据加载到 Redis 中。低频数据可存储在 Mysql、 ElasticSearch中。 业务数据分离 不要将不相关的数据业务都放到一个 Redis中。一方面避免业务相互影响,另一方面避免单实例膨胀,并能在故障时降低影响面,快速恢复。 消息大小限制 由于 Redis 是单线程服务,消息过大会阻塞并拖慢其他操作。保持消息内容在 1KB 以下是个好的习惯。严禁超过 50KB 的单条记录。消息过大还会引起网络带宽的高占用,持久化到磁盘时的 IO 问题。 连接数限制 连接的频繁创建和销毁,会浪费大量的系统资源,极限情况会造成宿主机宕机。请确保使用了正确的 Redis 客户端连接池配置。 缓存 Key 设置失效时间

Flink 最锋利的武器:Flink SQL 入门和实战

馋奶兔 提交于 2020-11-08 12:27:11
一、Flink SQL 背景 Flink SQL 是 Flink 实时计算为简化计算模型,降低用户使用实时计算门槛而设计的一套符合标准 SQL 语义的开发语言。 自 2015 年开始,阿里巴巴开始调研开源流计算引擎,最终决定基于 Flink 打造新一代计算引擎,针对 Flink 存在的不足进行优化和改进,并且在 2019 年初将最终代码开源,也就是我们熟知的 Blink。Blink 在原来的 Flink 基础上最显著的一个贡献就是 Flink SQL 的实现。 Flink SQL 是面向用户的 API 层,在我们传统的流式计算领域,比如 Storm、Spark Streaming 都会提供一些 Function 或者 Datastream API,用户通过 Java 或 Scala 写业务逻辑,这种方式虽然灵活,但有一些不足,比如具备一定门槛且调优较难,随着版本的不断更新,API 也出现了很多不兼容的地方。 在这个背景下,毫无疑问,SQL 就成了我们最佳选择,之所以选择将 SQL 作为核心 API,是因为其具有几个非常重要的特点: SQL 属于设定式语言,用户只要表达清楚需求即可,不需要了解具体做法; SQL 可优化,内置多种查询优化器,这些查询优化器可为 SQL 翻译出最优执行计划; SQL 易于理解,不同行业和领域的人都懂,学习成本较低; SQL 非常稳定,在数据库 30

Flink 之 Data Sink

泪湿孤枕 提交于 2020-11-08 12:26:42
首先 Sink 的中文释义为: 下沉; 下陷; 沉没; 使下沉; 使沉没; 倒下; 坐下; 所以,对应 Data sink 意思有点把数据存储下来(落库)的意思; Source 数据源 ---- > Compute 计算 -----> sink 落库 如上图,Source 就是数据的来源,中间的 Compute 其实就是 Flink 干的事情,可以做一系列的操作,操作完后就把计算后的数据结果 Sink 到某个地方。(可以是 MySQL、ElasticSearch、Kafka、Cassandra 等)。 这里我说下自己目前做告警这块就是把 Compute 计算后的结果 Sink 直接告警出来了(发送告警消息到钉钉群、邮件、短信等),这个 sink 的意思也不一定非得说成要把数据存储到某个地方去。 其实官网用的 Connector 来形容要去的地方更合适,这个 Connector 可以有 MySQL、ElasticSearch、Kafka、Cassandra RabbitMQ 等。 Data Source 介绍了 Flink Data Source 有哪些,这里也看看 Flink Data Sink 支持的有哪些: 看下源码有哪些呢? 可以看到有 Kafka、ElasticSearch、Socket、RabbitMQ、JDBC、Cassandra POJO、File、Print 等

为了面上阿里,花费2个月终于整理出这份大厂Java面试资料

China☆狼群 提交于 2020-11-08 09:50:07
前言 先做个自我介绍,本人之前一直在外包公司做增删改查,做了两年,实在太累了!就想趁着金九银十这个好机会看能不能实现自己的阿里梦,没想到被虐了个干干净净! 不过没关系,通过这次面试,我也认识到自己确实有很多不足的地方,通过这篇文章,和大家分享一下,最后也把我整理的面试资料分享给大家,希望有人替我圆了阿里梦 阿里一面 1.自我介绍 2.说一下BIO 和NIO 3.你说到多路复用,多路复用什么意思,为什么可以做到多路复用 4.这个select函数你说一下,底层怎么保证效率的,如果请求很多怎么办 5.我看你用到了Zookeeper ,说一下他可以干什么 6.只有一个Zookeeper 行不行?怎么保证他的可用性 7.服务器和客户端连接,多个连接会不会出问题? 8.Zookeeper 如果每次消费都连接,会不会效率太低? 怎么解决? 9.说一下它的底层算法吧,说你知道的 10.我看你实现了这几种序列化机制,都说一下吧 11.为什么hessian,和kyro速度更快呢? 12.了解spring吗? 说一下ioc和aop 13.aop底层怎么实现的 14.说一下spring ioc创建和销毁? (我有点懵,问是不是要回答bean的生命周期,面试官说 不是,然后我就随便说了 ) 15.Java的类加载过程 16.了解mysql吗,说一下innodb底层 17.有没有搭过服务器? 18

如何选择消息队列

僤鯓⒐⒋嵵緔 提交于 2020-11-08 07:38:18
一、选择消息队列产品的基本标准 在消息队列的技术选型上,并不存在说哪个消息队列就是“最好的”。常用的几个消息队列,每个产品都有自己的优势和劣势,需要根据现有系统的情况,选择最适合的那款产品。 技术产品的及格标准: 必须是 开源产品 :如果遇到Bug至少有机会通过修改源代码迅速修复或规避,解决燃眉之急。 必须是近年来 比较流行 并且有一定 社区活跃度 的产品:流行的好处是,只要使用的场景不太冷门,遇到的Bug都可以找到解决办法。 流行的产品与 周边生态系统 会有一个比较好的集成和兼容:比如kafka和Flink就有比较好的兼容性,Flink内置了kafka的Data Sourse,使得你不用自己开发一个Flink的Data Source。 消息队列产品的及格标准: 消息的可靠传递:确保 不丢消息 。 Cluster:支持 集群 ,确保不会因为某个节点宕机导致服务不可用,当然也不能丢消息。 性能:具备足够好的性能,能 满足绝大多数场景 的性能要求。 二、可供选择的消息队列产品 1、RabbitMQ 介绍: 使用 Erlang语言编写 ,最早是为电信行业系统之间的可靠通讯性设计的,也是少数几个 支持AMQP 协议的消息队列。 轻量级 、迅速,开箱即用,非常容易部署和使用。 有一个特色的功能是支持非常 灵活的路由配置 。它在生产者和队列之间增加了一个 Exchange模块