Kafka

redis 缓存锁的实现方法

醉酒当歌 提交于 2020-08-15 08:03:55
1. redis加锁分类 redis能用的的加锁命令分表是INCR、SETNX、SET 2. 第一种锁命令 INCR 这种加锁的思路是, key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作进行加一。 然后其它用户在执行 INCR 操作进行加一时,如果返回的数大于 1 ,说明这个锁正在被使用当中。 1、 客户端A请求服务器获取key的值为1表示获取了锁 2、 客户端B也去请求服务器获取key的值为2表示获取锁失败 3、 客户端A执行代码完成,删除锁 4、 客户端B在等待一段时间后在去请求的时候获取key的值为1表示获取锁成功 5、 客户端B执行代码完成,删除锁 $redis->incr($key); $redis->expire($key, $ttl); //设置生成时间为1秒 3. 第二种锁 SETNX 这种加锁的思路是,如果 key 不存在,将 key 设置为 value 如果 key 已存在,则 SETNX 不做任何动作 1、 客户端A请求服务器设置key的值,如果设置成功就表示加锁成功 2、 客户端B也去请求服务器设置key的值,如果返回失败,那么就代表加锁失败 3、 客户端A执行代码完成,删除锁 4、 客户端B在等待一段时间后在去请求设置key的值,设置成功 5、 客户端B执行代码完成,删除锁 $redis->setNX($key,

kafka多容器工厂反序列化kafkaListenerContainerFactory

断了今生、忘了曾经 提交于 2020-08-15 07:44:40
原创 业务需要,批量消费,但是又想批量直接按List<ModelDTO> 模式直接拉取数据,批量处理。 private final String topic = "queue_notify" ; @KafkaListener ( topics = topic , containerFactory = "kafkaLiveListenerContainerFactory" ) public void listen (List<PushLiveDTO> pushLiveDTOS) { Long startTime = System. currentTimeMillis () ; // 批量个推 p ushService .notifyLiveGetui (pushLiveDTOS) ; Long endTime = System. currentTimeMillis () ; } private final String topic = "queue_push" ; // containerFactory 容器工厂方法 @KafkaListener ( topics = topic , containerFactory = "kafkaListenerContainerFactory" ) public void listen (List<PushTestDTO>

Spark 3.0.0正式版发布,开发近两年新增了哪些特性?

喜夏-厌秋 提交于 2020-08-15 07:34:37
原计划在2019年年底发布的 Apache Spark 3.0.0 赶在下周二举办的 Spark Summit AI 会议之前正式发布了! Apache Spark 3.0.0 自2018年10月02日开发到目前已经经历了近21个月! 这个版本的发布经历了两个预览版以及三次投票: 2019年11月06日第一次预览版,参见Preview release of Spark 3.0; 2019年12月23日第二次预览版,参见Preview release of Spark 3.0; 2020年03月21日 [VOTE] Apache Spark 3.0.0 RC1; 2020年05月18日 [VOTE] Apache Spark 3.0 RC2; 2020年06月06日 [vote] Apache Spark 3.0 RC3。 Apache Spark 3.0 增加了很多令人兴奋的新特性,包括: 动态分区修剪(Dynamic Partition Pruning); 自适应查询执行(Adaptive Query Execution); 加速器感知调度(Accelerator-aware Scheduling); 支持 Catalog 的数据源API(Data Source API with Catalog Supports); SparkR 中的向量化(Vectorization in

Filebeat收集日志的那些事儿

青春壹個敷衍的年華 提交于 2020-08-15 07:32:04
云栖号资讯:【 点击查看更多行业资讯 】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 【编者的话】最近因为云原生日志收集的需要,我们打算使用Filebeat作为容器日志收集工具,并对其进行二次开发,因此笔者将谈谈Filebeat收集日志的那些事儿。本文不涉及过具体的源码分析,希望通过阅读您可以了解Filebeat的基本使用方法和原理,姑且算是Filebeat的入门吧。 前言 开源日志收集组件众多,之所以选择Filebeat,主要基于以下几点: 功能上能满足我们的需求:收集磁盘日志文件,发送到Kafka集群;支持多行收集和自定义字段等; 性能上相比运行于JVM上的Logstash和Flume优势明显; Filebeat基于Golang 技术栈,二次开发对于我们来说有一定的技术积累; 部署方便,没有第三方依赖。 Filebeat能做什么 简单来说Filebeat就是数据的搬运工,只不过除了搬运还可以对数据作一些深加工,为业务增加一些附加值。 Filebeat可以从多种不同的上游input中接受需要收集的数据,其中我们最常用的就是log input,即从日志中收集数据; Filebeat对收集来的数据进行加工,比如:多行合并,增加业务自定义字段,json等格式的encode; Filebeat将加工好的数据发送到被称为output的下游

999页阿里P7Java学习笔记在互联网上火了,完整版开放下载

孤街醉人 提交于 2020-08-15 03:11:27
笔记作者:来自于阿里P8级架构师: Mark 笔记特点:条理清晰,含图像化表示更加易懂。 内容概要:包括 Java 集合、JVM、多线程、并发编程、设计模式、Spring全家桶、Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、MongoDB、Redis、MySQL、RabbitMQ、Kafka、Linux、Netty、Tomcat等大厂面试题等、等技术栈! 由于整个文档比较全面,内容比较多,篇幅不允许,下面以截图方式展示 。 JAVA集合 接口继承关系和实现 List ArrayList(数组) Vector(数组实现、线程同步) LinkList(链表) Set HashSet(Hash表) TreeSet(二叉树) JVM JVM就是java虚拟机,它是一个虚构出来的计算机,可在实际的计算机上模拟各种计算机的功能。JVM有自己完善的硬件结构,例如处理器、堆栈和寄存器等,还具有相应的指令系统。 线程 JVM内存区域 JVM运行时内存 垃圾回收与算法 JAVA 四种引用类型 GC分代收集算法 VS 分区收集算法 GC垃圾收集器 JAVA IO/NIO JVM 类加载机制 JAVA多线程并发 JAVA并发知识库 JAVA线程实现/创建方式 4种线程池 线程生命周期(状态) 终止线程4种方式 sleep与wait 区别

让阿里P8都为之着迷的分布式核心原理解析到底讲了啥?看完我惊了

不打扰是莪最后的温柔 提交于 2020-08-15 01:45:46
领取本文资料直接扫码免费领取 这个人人都喊着“高并发”“高可用”的时代里,分布式系统的重要性不言而喻。从整个行业的招聘趋势就能看出来,大型互联网公司在招聘后端工程师的时候,都会要求候选人有分布式相关的工作经验。与其直接用些抽象、晦涩的技术名词去给分布式下一个定义,还不如从理解分布式的发展驱动因素开始,我们一起去探寻它的本质,自然而然地也就清楚它的定义了。 在今天这篇文章中,我将带你了解分布式的起源,是如何从单台计算机发展到分布式的,进而帮助你深入理解什么是分布式。为了方便你更好地理解这个演进过程,我将不考虑多核、多处理器的情况,假定每台计算机都是单核、单处理器的。 说明:完整的《分布式核心原理解析》学习文档篇幅较长,共有330页,这里限于篇幅,故只展示一部分的文档,有需要这份学习文档的朋友麻烦帮忙转发+转发+转发一下,然后再私信我【学习】即可免费获取这份《分布式核心原理解析》学习文档。 前言 一,分布式何而起 分布式起源 单兵模式:单机模式 游击队模式:数据并行或数据分布式 集团军模式:任务并行或任务分布式 分布式是什么? 总结 二,分布式系统的指标 分布式系统的指标 性能(Per formance) 资源占用(Resource Usage) 可用性( Availability) 可扩展性(Sealabi1ity) 不同场景下分布式系统的指标 总结与思考 三,分布式协调与同步

【转】How to choose the number of topics/partitions in a Kafka cluster?

雨燕双飞 提交于 2020-08-14 20:14:20
Note: The blog post Apache Kafka Supports 200K Partitions Per Cluster contains important updates that have happened in Kafka as of version 2.0. This is a common question asked by many Kafka users. The goal of this post is to explain a few important determining factors and provide a few simple formulas. More Partitions Lead to Higher Throughput The first thing to understand is that a topic partition is the unit of parallelism in Kafka. On both the producer and the broker side, writes to different partitions can be done fully in parallel. So expensive operations such as compression can utilize

关于Java码农这10年来的艰辛路程和技术生涯成长,生发篇

℡╲_俬逩灬. 提交于 2020-08-14 14:13:15
一朝入IT,帽子头上带. 这一路走来过程多艰难心酸,多少次有过想退却的想法,还有哪些迷茫,怀疑自己的阶段 相信你,也一定有过 . 阶段1:只会增删改查: 时间:大学期间(2008年-2009年) 学习的方式:看视频、看书。(学会了使用控件的增删改查,和写SQL语句)。 自我感觉:XX管理系统已不在话下,反正网站弄来弄去也是增删改查,这大概就是无知者无畏。 如何破:(走出社会去就好了)。 阶段2:能快速实现功能,却不会思考: 时间:(2009年-20012年) 学习的方式:看博客、大量的编码(第1年,封闭式开发(1天敲15个小时代码),第二年后:每周六天,每天到夜里3点)。 感觉:大量的编码,做了大量的不同类型的系统,已练就成一个高级代码工:(CodeSmith代码生成器+批量生成增删改查)。 如何破:(让自己静下来)。 阶段3:学会了分享、安全、性能、底层原理 时间:(20012年-2016年) 学习的方式:写博客、看博客、写框架(CYQ.Data V-V4系列、QBlog)。 感觉:为某个框架代码而自我得意。 如何破:不断重复的将自己归零(把自己的认为得意的东西开源出去,如果要保留一点感觉,可阶段性开源)。 阶段4:领悟了抽象思维、面向对象、写框架、用户体验 时间:(2016年-至今) 感觉:也许我懂的很多,但是我不懂的更多。 如何破:(转行卖烧烤。。。) 总结一下: 上面的内容

mysql建立索引的原则

三世轮回 提交于 2020-08-14 13:46:53
1.选择唯一性索引 唯一性索引的值是唯一的,可以更快速的通过该索引来确定某条记录。例如,学生表中学号是具有唯一性的字段。为该字段建立唯一性索引可以很快的确定某个学生的信息。如果使用姓名的话,可能存在同名现象,从而降低查询速度。 2.为经常需要排序、分组和联合操作的字段建立索引 经常需要ORDER BY、GROUP BY、DISTINCT和UNION等操作的字段,排序操作会浪费很多时间。如果为其建立索引,可以有效地避免排序操作。 3.为常作为查询条件的字段建立索引 如果某个字段经常用来做查询条件,那么该字段的查询速度会影响整个表的查询速度。因此,为这样的字段建立索引,可以提高整个表的查询速度。 4.限制索引的数目 索引的数目不是越多越好。每个索引都需要占用磁盘空间,索引越多,需要的磁盘空间就越大。修改表时,对索引的重构和更新很麻烦。越多的索引,会使更新表变得很浪费时间。 5.尽量使用数据量少的索引 如果索引的值很长,那么查询的速度会受到影响。例如,对一个CHAR(100)类型的字段进行全文检索需要的时间肯定要比对CHAR(10)类型的字段需要的时间要多。 6.尽量使用前缀来索引 如果索引字段的值很长,最好使用值的前缀来索引。例如,TEXT和BLOG类型的字段,进行全文检索会很浪费时间。如果只检索字段的前面的若干个字符,这样可以提高检索速度。 7.删除不再使用或者很少使用的索引

Flink 1.11 SQL 十余项革新大揭秘,哪些演变在便捷你的使用体验?

不问归期 提交于 2020-08-14 12:19:30
简介: SQL 作为 Flink 中公认的核心模块之一,对推动 Flink 流批一体功能的完善至关重要。在 1.11 中,Flink SQL 也进行了大量的增强与完善,开发大功能 10 余项,不仅扩大了应用场景,还简化了流程,上手操作更简单。 作者 | 李劲松,Apache Flink Committer,阿里巴巴技术专家 7 月 6 日,Apache Flink 1.11 正式发布。从 3 月初进行功能规划到 7 月初正式发版,1.11 用将近 4 个月的时间重点优化了 Flink 的易用性问题,提升用户的生产使用体验。 SQL 作为 Flink 中公认的核心模块之一,对推动 Flink 流批一体功能的完善至关重要。在 1.11 中,Flink SQL 也进行了大量的增强与完善,开发大功能 10 余项,不仅扩大了应用场景,还简化了流程,上手操作更简单。 其中,值得注意的改动包括: 默认 Planner 已经切到 Blink planner 上。 引入了对 CDC(Change Data Capture,变动数据捕获)的支持,用户仅用几句简单的 SQL 即可对接 Debezium 和 Canal 的数据源。 离线数仓实时化,用户可方便地使用 SQL 将流式数据从 Kafka 写入 Hive 等。 Flink SQL 演变 随着流计算的发展,挑战不再仅限于数据量和计算量