第十五周

Algorithm

两类查找问题(Set 和 Map)
Set用于查找有无 (检查是否存在、去重问题)
Map用户查找对应关系(设置频次)

349.Intersection of Two Arrays

350.Intersection of Two Arrays II

242.Valid Anagram

75.Sort Colors

202.Happy Number

1.Two Sum

219.Contains Duplicate II (set + 滑动窗口)

Review

一、《Flink Table API编程》

讲解了TableApi 比SQl 新增的易用性和功能性操作。

例如:

  • Columns Operation :AddColumns,AddOrReplaceColumns,DropColumns,RenameColumns

  • Columns Function :withColumns(...),withoutColumns(...)

  • Map operation :def map(scalarFunction: Expression): Table

  • FlatMap operation :def flatMap(tableFunction: Expression): Table

  • Aggregate operation

  • TableAggregate operation

链接

二、《Flink Runtime核心机制剖析》

  • Per-Job 和Sesson运行模式区别:PerJob独享Dispather和ResouceManager,按照需要申请资源,适合执行时间长的大作业。Session则是共享Dispater、RM和资源的适合小作业。
image.png

链接

Tips/Technology

一、Kafka的重要参数设置

  • Broker端
  1. log.dirs:指定Broker若干文件目录,无默认值。指定多块盘的好处是提高读写性能,在1.1版本后又故障转移能力。
  2. zookeeper.connect: 指定元数据zk路径 CSV格式。
  3. listeners:多个Brokers相互通信的参数,告诉外部连接着是通过什么协议访问主机名和端口访问Kafka服务。(建议全部使用主机名,否则可能发生无法连接的问题)
  • Topic级别
  1. auto.create.topics.enable:是否允许自动创建Topic。建议为false
  2. unclean.leader.election.enable:是否允许Unclean Leader选举。建议为false,否则可能会丢数据。
  3. auto.leader.rebalance.enable:是否允许定期进行Leader选举。生产建议为false,换leader代价很高。
  • 数据留存
  1. log.retention.{hour|minutes|ms}:这是个“三兄弟”,都是控制一条消息数据被保存多长时
    间。从优先级上来说ms设置最高、minutes次之、hour最低。
  2. log.retention.bytes:这是指定Broker为消息保存的总磁盘容量大小。默认是-1就是不做限制,但防止云上恶意使用磁盘,可以设置。
  3. message.max.bytes:控制Broker能够接收的最大消息大小。默认不到1k,生产环境基本不够用要调大。
  • JVM端
  1. 指定堆大小 建议6G 使用方法: export KAFKA_HEAP_OPTS=--Xms6g --Xmx6g
  2. 指定GC参数:jvm1.8建议G1回收器。使用方法:export KAFKA_JVM_PERFORMANCE_OPTS= -server -XX:+UseG1GC
  • 操作系统
  1. 文件描述符限制: ulimit -n 1000000 否则动不动就来Too many open files错误。
  2. 文件系统类型:ext3,ext4,XFS,ZFS
  3. Swappiness:0或者1,防止kafka使用swap空间,使用1可以看到kafka性能急剧下降便于诊断问题。
  4. 提交时间。

二、Kafka中的分区

  • 分布式系统中的叫法

Kafka中叫分区,在MongoDB和
Elasticsearch中就叫分片Shard,而在HBase中则叫Region,在Cassandra中又被称作vnode。叫法不同但原理一样。

  • 分区策略
  1. 轮询策略
  2. 随机策略
  3. 按消息key保序策略
  4. 自定义策略 实现 org.apache.kafka.clients.producer.Partitioner

kafka中如果指定了Key,那么默认实现按消息键保序
策略;如果没有指定Key,则使用轮询策略。

三、Kafka中的压缩算法

  • 指定方式: props.put("compression.type", "gzip");在生产端指定会卸载消息中如何Producer端压缩、Broker端保持、Consumer端解压缩。
  • 算法对比


    Facebook Zstandard提供

四、Kafka数据零丢失

  • 丢失场景
  1. 生产者程序丢失:程序已经发送,kafka没有保存。原因是kafka发消息都是异步的,如果消息太大,或者网络抖动就没发上去。
  2. 消费者程序丢数据:消费者自动提交,kafka就认为已经被消费了。
  • 最佳实践
  1. 生产者Api不要用producer.send(msg),而要使用producer.send(msg, callback)。并设置retries使其自动重试。
  2. 设置acks=all ,保证所有副本Borker都接受到消息,该消息才算提交。
  3. 设置replication.factor >= 3,保证有充足的副本数
  4. 设置unclean.leader.election.enable = false。防止Broker落后Leader太多,然后被选上Leader导致数据丢失。
  5. 确保消息消费完成再提交。Consumer端有个参数enable.auto.commit,最好把它设置成false,并采用手
    动提交位移的方式。
  6. 设置min.insync.replicas > 1。这依然是Broker端参数,控制的是消息至少要被写入到多少个副本才算
    是“已提交”。设置成大于1可以提升消息持久性。在实际环境中千万不要使用默认值1。
  7. 确保replication.factor > min.insync.replicas。如果两者相等,那么只要有一个副本挂机,整个分区就无
    法正常工作了。我们不仅要改善消息的持久性,防止数据丢失,还要在不降低可用性的基础上完成。推
    荐设置成replication.factor = min.insync.replicas + 1。

五、Mysql整体架构

mysql架构

六、事务隔离机制

  • 读未提交 (read uncommitted):一个事务还没提交时,它做的变更就能被别的事务看到。
  • 读提交 (read committed):一个事务提交之后,它做的变更才会被其他事务看到。
  • 可重复读 (repeatable read):一个事务执行过程中看到的数据,总是跟这个事务在启动时看到的数据是一致的。当然在可重复读隔离级别下,未提交变更对其他事务也是不可见的。
  • 串行化(serializable ),顾名思义是对于同一行记录,“写”会加“写锁”,“读”会加“读锁”。当出现读写锁冲突的时候,后访问的事务必须等前一个事务执行完成,才能继续执行。

Oracle默认隔离级别是 READ-COMMITTED

MySQL默认隔离级别是 REPEATABLE-READ

实现原理:每条记录在更新的时候都会记录一条回滚操作,这个数据记录在回滚日志中。当在查询的时候不同事务会有不同的read-view。

Share

《薄世宁:医学通识》

  • 生命是具有自我修复能力的,一切的医疗本质都是支持自我修复,包括给自我修复争取时间,等他自我修复发挥作用。
  • 我们为什么会生病?答案就是科学发达了,我们活得寿命超过了细胞分裂的次数,疾病是人类进化的遗产。
  • 要坚信任何病都有病理基础,不是凭空产生的,那么找到治病的办法只是时间问题。
  • 疾病不是突然发生的,而是突然发现的。
  • 真正的健康是暴露于细菌的危险之下,还依然健康。

Research

Flink 双流join,Kafka分区及参数,Mysql知识巩固

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,884评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,347评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,435评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,509评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,611评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,837评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,987评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,730评论 0 267
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,194评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,525评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,664评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,334评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,944评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,764评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,997评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,389评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,554评论 2 349

推荐阅读更多精彩内容