自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(71)
  • 收藏
  • 关注

原创 Kafka Broker端设计原理

1.消息详解消息详解请参考我的另一篇文章 kafka日志详解2.副本机制2.1 副本机制的好处1.提供数据冗余副本的第一个好处就是提供数据冗余。2.提供高伸缩性支持横向扩展,并发读,通过提升机器的数量,来增加系统的吞吐量。3.改善局部数据将不同的副本数据放到不同的地点,可以优化每个地点的系统延时2.2 Kafka副本机制Kafka副本的专有名词是Replica,Replica 定义,同一个分区的所有副本保存着相同的数据,分散在不同的Broker上,所以首先要知道R

2020-07-17 18:43:52 1314

原创 重置Kafka消费者组位移

1.重置Kafka消费者组位移的好处重设消费者组的位移,是Kafka区别与其他的消息队列的一个重要的区别,也是Kafka的一个特色。也叫做消息重演(replayable)。传统的消息队列比如RabbitMq和ActiveMq 消息一旦被消费,就会被删除,Kafka因为它的两个特性 1.日志存储并且是持久化的方式 2.coordinator管理消费者组的位移。让我们可以对消费者组的位移操作的管理更加灵活。在说怎样重设位移之前,需要先介绍consumer的一个参数概念auto.offset.reset:指

2020-07-15 19:45:21 3202 1

原创 Kafka日志详解

首先我们要知道Kafka本质上使用Java NIO的ByteBuffer来保存消息。好处:ByteBuffer是紧凑的二进制字节结构,不浪费空间。1.消息版本变迁1.1V0版本Kafka在0.10.0版本之前都是采用V0版本的消息格式如下表格所示为V0版本的一条Record的组成及其含义:Record-字段--含义-Record headCRC校验码4个字节CRC校验码,校验范围为magic到value之间,用于确保消息再传输过程中不会被恶意篡改Record he

2020-07-11 22:35:06 7184

原创 如何打造一套线上kafka集群安全环境

1.kafka安全简介kafka社区在0.9.0.0版本正式添加了安全特性,并且在0.10.0.0版本中进一步完善。Kafka的安全特性有如下几个方面:1.连接认证。服务端与客户端、服务端之间、等等。支持两种认证机制SSL(等价于我们经常使用的TLS)和SASL2.Zookeeper 与服务端的认证。3.基于SSL的连接通道数据传输加密4.客户端读写权限5.支持可插拔的授权服务和与外部授权服务的集成。认证(authentication)和授权(authorization)认证:证明自

2020-07-09 19:23:55 2174

原创 Kafka如何实现高吞吐量 低延迟

Kakfa为什么这么快?(一)1.为什么这么快?kafka为什么这么快,就是kafka再各个层面做了各种各样的优化,尽可能的把资源最大化的利用kafka做的优化主要有以下几个方面:1.Producer批处理2.PageCache(读写缓存的使用)3.ZeroCopy4.Kafka服务端处理请求的方式5.顺序读写6.分区机制,以及消费者组的使用7.消息格式的演变,以及压缩消息最主要的就是v2版本提取消息公共属性,使用可变长参数的优化8.摒弃消息的SRC校验(但是损失了安全性,

2020-07-07 10:46:03 16594 3

原创 Kafka简介

Kafka简介1.kafka是什么1.1 Messaging Systemkafka作为一个消息引擎具备哪些优势?1.集成两种传统消息引擎的优点。传统的消息引擎有两种模式:queuingpublish-subscribequeuing的缺点是消息不能重复消费,一个cosumer消费完后其他的consumer就不能再进行消费。publish-subscribe 的缺点是,所有的consumer需要都去订阅主题(或者队列)这样就失去了扩展性,所有的consumer都要去订阅消费消息。ka

2020-07-04 10:55:58 645

原创 天池MQ比赛总结

1. 比赛题目分析https://tianchi.aliyun.com/competition/entrance/531922/information主要分为两阶段 性能测评 和 正确性测评。消息必须落盘 会做断电重新测试topic之间不存在并发操作问题队列特别多傲腾【读写效率和内存差距不大】如何更有效率的存储数据缓存设计2.存储方案RokcetMq 和 Kafka 都是利用文件系统存储消息的消息中间件。因此本次比赛的设计方式也是借鉴了Kafka 和RocketMq 的方式去存储数据

2021-11-10 15:01:07 3372

原创 RocketMQ消息存储

RocketMQ消息存储

2021-09-24 18:44:09 165

原创 快速排序及其优化

3.快速排序及其优化**并没有最好的排序算法,只有最适合的排序算法。**在面对不同规模的数据和不同排列的数据的时候,都有着适合当前数据的排序算法,一个好的排序算法就是面对合适的场景去选取最适合它的排序算法。3.1 普通快速排序**快排的思想找到一个值使得数组左边的值都是小于等于它的数,数组的右边都是大于它的数。**然后继续去操作左右区间。可以看到,分成左右区间后,分别对不同的区间继续当前操作,非常适合递归。如上图所示,需要两个指针。j 数组遍历的位置,i 第一个大于等于 选取的基准值的位置。遍

2021-09-13 14:55:13 3129

原创 二叉树刷题

二叉树刷题二叉树相关的问题基本都可以用递归来解答,是我们拿来练习递归的好方法。递归的阶梯关键两个步骤:1.递归结束条件。(程序什么时候退出)2.递推公式。只要找到这两个 结果,递归相关的代码就可以写出来了。切忌不要平铺直叙的去想问题,因为递归相关的问题,人的大脑基本是想不明白的,我们只需要总结出来规律其他的交给计算机即可,这本身就是计算机喜欢做的事情。例子:就比如我们非常熟悉的 斐波那切数列。就是后边的值是前边两个数的和。可以非常容易的写出公式 f(n) = f(n-1) + f(n-2);

2021-09-03 11:00:46 7435

原创 LogStash 导入 oracle(mysql)数据

LogStash 导入 oracle(mysql)数据版本:ES 7.13.3LogStash 7.13.41. 背景因为一些原因需要将oracle的数据导入到Es中,A、B两个表的数据构成商品信息,组成products索引。分词器采用ik_max_word 对name相关的字段采用搜索自动补全功能。2. 数据导入首先默认我们已经按转好了 ES和Logstash环境。下载 oracle驱动2.1 编写sql文件#ROWNUM 是oracle自带的 可以查出当前数据是第多少条数据,用于

2021-08-26 16:25:14 1588

原创 排序算法总结

排序1冒泡排序 /** * 冒泡排序 * 每次比较计算出最大的值 放在数组的末尾 * 优化: 当一次循环没有 数据的交换的时候 就说明当前数组已经是有序的了 */ public void bubbleSort(int[] arr) { for (int i = 0; i < arr.length - 1; i++) { boolean flag = true; for (int j =

2021-08-20 19:11:56 544

原创 Kafka 2.8 移除Zookeeper 集群搭建

Kafka 2.8 移除Zookeeper 集群搭建下载解压tar xzf kafka_2.12-2.8.0.tgzcd kafka_2.12-2.8.0单机环境模拟集群cd config/kraftcp server.properties server1.propertiescp server.properties server2.propertiescp server.properties server3.propertiesserver1node.id=1process

2021-06-28 20:19:04 2613 2

原创 Kafka生产者原理剖析

Kafka 生产者剖析”生存还是毁灭,这是一个问题。“ 是的对Kafka来说这个曾经受万人追捧的分布式消息引擎,现在倒还真有点跌入神坛的趋势。因为Pulsar(消息系统的新贵)仿佛正在全面替代Kafka。Kafka真的不行了吗?答案个人觉得是否定的 固然Pulsar有着Kafka没有的存储和计算分离的设计,Pulsar在大数据大集群的租户管理上确实也要比Kafka更好。但是Kafka2.8版本推出了社区呼吁已久的操作移除了Zookeeper,使用Kraft来进行代替,虽然只是测试版本,但是官方实测

2021-06-28 09:28:35 5893 2

原创 第一个MapReduce程序

第一个MapReduce程序Hadoop1.0版本MapReduce身兼两个角色,既是一个分布式运算程序的编程框架又是一个资源调度框架(2.0被YARN(Yet Another Resource Nagotator 后边会单独介绍)。核心思想就是分治思想。分而治之(需要注意可以分开的程序必须是不相互影响的,仅仅是数据集合的大小不同而已,仅此而已),最后再合并结果。编程的思路一般也就是map和reduce。1.第一个mapreduce 程序 WordCount1.1maven依赖**(版本自己选择,作

2021-04-27 15:20:49 236

原创 Hadoop(二)原理

Hadoop(二)原理4.HDFS存储方式数据存储到服务器的过程1.数据分块(会把数据按照128m一块进行分块)可配置<property> <name>dfs.blocksize</name> <value>块大小 以字节为单位</value><!-- 只写数值就可以 --></property>如果是1k的数据 存储数据的大小就是1k,但是不仅仅需要存储数据,还需要存储元数据的信息()

2021-04-15 20:09:16 822

原创 HDFS(一)架构与基本操作

HDFS(一)架构与基本操作1.从垂直伸缩到水平伸缩的发展​ 作为Hadoop生态圈中重要的一份子,HDFS起到了分布式存储的功能。在计算机发展的早期,因为有着摩尔定律(每 18 个月计算机的处理能力提升一倍)的支撑,不管是程序的效率、还是我们的的存储的数据,都可以通过它来解决。存储数据也是可以通过RAID来解决数据暂时的解决 容量、效率以及可靠性的问题。 这种方式更像是一种垂直伸缩的方式,但是垂直伸缩一定是有尽头的,随着互联网时代的到来,摩尔定律也失效了。​ 互联网发展的浪潮使得所有的公司都开始

2021-04-15 17:10:13 1122

原创 Kafka2.8最新情报

Kafka2.8最新情报1.1 Kafka2.8取代zookeeper的原因ZooKeeper是一个文件一致性系统基础上的特殊 filesystem/trigger API 。Kafka是 一致性文件系统上的pub / sub API, 这导致系统的人员去调优、配置、监视、保护和判断 通信和新能 在两个日志实现、两个网络层和两个安全实现(并且每个都有不同的 distinct tools and monitoring hooks),这都是一些不必要复杂度。这些固有的并且不必要的负责度,加速了kafka的改

2021-04-10 09:28:48 16108 11

原创 Hadoop集群环境搭建

Hadoop集群环境搭建1环境需求本文是用过Vmware搭建的三台linux虚拟机。Vmware安装包自取Mac:链接:https://pan.baidu.com/s/1unYcc_hc9SA5O5-QvZFe-A 密码:h20jWindows:链接:https://pan.baidu.com/s/1Z5y1DsnT-CmWcGHADd6WwQ 密码:5v0w2.hadoop集群搭建2.1linux环境配置(需要三台linux虚拟机都执行)2.1.1 关闭防火墙 (本地环境访问更加方便,

2021-04-07 14:18:57 4551 2

原创 Kafka 管理工具 Eagle

下载以及安装下载地址 http://download.kafka-eagle.org/解压安装包kafka.eagle.zk.cluster.alias=cluster1,cluster2cluster1.zk.list=tdn1:2181,tdn2:2181,tdn3:2181cluster2.zk.list=xdn1:2181,xdn2:2181,xdn3:2181# Add zookeeper aclcluster1.zk.acl.enable=falsecluster1.zk.ac

2021-02-08 09:13:01 229

原创 Kafka 消费者组重平衡(Rebalance)

1.什么是重平衡2.什么场景会造成重平衡3.Rebalance 的优势与劣势

2021-01-27 09:59:54 2279

原创 Kafka如何实现高吞吐量 低延迟(二)

高性能网络处理框架Kafka服务端处理请求的方式 采用了Reactor 模型,并对其进行了扩展。

2021-01-25 10:07:36 277

原创 Kafka 源码

kafka 日志段加载Kafka 日志段存储Kafka 日志段切分

2021-01-18 09:53:41 129 1

原创 英语学习计划

但行善事、莫问前程学习方法1.背景知识的重要性了解标题的背景知识,结合背景再去看知识 就会有更多层次、更深刻的理解。宋朝诗人陆游晚年时曾在对其子谈及写诗经验时专门强调,“汝果欲学诗,工夫在诗外”(《剑南诗稿》),说的就是这个道理。这和任正非经常要求华为高层要有“宽文化背景”,要“大杂烩”,要善于“用一杯咖啡吸收宇宙能量”,其实都是一样的意思。因此,我们学英语绝非学习语言本身,在兴趣和好奇心的驱使下,广泛涉猎五花八门的百科知识,然后通过相同话题的外语“平行文本(parallel text)”的

2021-01-11 14:20:53 242 4

原创 并发编程之实践

Reactor模型Golang携程高性能队列

2021-01-04 11:18:43 154

原创 并发编程设计模式

1.不变2.Copy on Write3.Thread Peer Message4.Worker Thread5.本地存储6.生产者消费者7.多线程if Guarded Suspension Balking

2020-12-28 09:29:14 144

原创 并发编程工具类

1.线程不安全2.线程安全3.无锁

2020-12-21 10:43:01 125

原创 多线程基础

多线程基础1.为什么有多线程摩尔定律的失效:软件工程师们所用的“面向摩尔定律编程”的套路越来越用不下去了。“写程序不考虑性能,等明年 CPU 性能提升一倍,到时候性能自然就不成问题了”,这种想法已经不可行了。阿姆达尔定律: 通过并行增加性能并行优化:出现多核cpu、分布式等等。2.java线程的创建过程如下所示,java线程的创建其实是和OS线程进行绑定的,所以java线程的创建和销毁的开销其实是很大的。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-29tUi

2020-12-14 09:56:02 137

原创 netty简单应用

Netty 简单使用本文分别使用了 bio、nio 和netty简单实现了一个SAY HELLO 的程序。通过代码的演进也可以看到从 bio、nio、到netty 的演进路线,更加清晰地认识到netty是如何利用nio来实现的。BIOHelloServer启动一个server服务器,绑定到固定的端口 public static void main(String[] args) { int port = 8080; if (args == null &&amp

2020-12-07 10:17:53 160

原创 Netty

netty 如何实心高性能

2020-11-30 09:57:52 88

原创 IO模型

IO模型1.同步、异步、阻塞、非阻塞先说下概念:阻塞(非阻塞):数据没准备好是否要一直(不)等待同步(异步):是否当前线程处理咖啡店 -> 服务器咖啡 -> 数据咖啡做好 -> 数据就绪取/送 咖啡 -> 传输数据排队模式等待叫号模式点外卖模式BIO(同步阻塞)NIO(同步非阻塞)AIO(异步非阻塞)阻塞非阻塞咖啡没好是排队死等还是其他的阻塞:没有

2020-11-25 19:10:50 302

原创 Kafka运维

Kafka运维Topic主题管理创建主题#2.2版本 社区推荐使用bootstrap-server 代替 zookeeper #好处 #1.使用zk会绕过 kafka的安全体系验证#2.使用 --bootstrap-server 与集群进行交互,越来越成为使用 Kafka 的标准姿势bin/kafka-topics.sh --bootstrap-server broker_host:port --create --topic my_topic_name --partitions 1 --

2020-11-23 09:30:17 640

原创 垃圾收集器对比分析

垃圾收集器对比分析1.各种GC日志分析SerialGC新生代和老年代都是串行的并且STW 可以看到新生代GC仅仅回收老年代FullGC的时候会触发 老年代和M区垃圾的回收 到了后来也去掉了新生代的垃圾回收。java -XX:+UseSerialGC -Xms128m -Xmx128m -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:gc.log GCLogAnalysis2020-11-10T16:29:50.747-0800: 0.188

2020-11-16 16:15:20 260

原创 jvm字节码详解

2.获取字节码齐清单java代码:public class HelloByteCode { public static void main(String[] args) { HelloByteCode helloByteCode = new HelloByteCode(); }}2.1编译反编译(助记符)javac HelloByteCode.javajavap -c HelloByteCode警告: 二进制文件HelloByteCode包含com.zhan

2020-11-09 10:48:35 417

原创 JVM字节码技术

JVM字节码技术不积细流无以成江河1.什么是字节码为什么要学习字节码Java 字节码:bytecode,是Java代码编译后的中间代码格式。JVM需要读取并解析字节码才能执行相应的任务。JVM字节码是JVM的指令集。JVM加载字节码格式的class文 件,校验之后通过编译器转换为本地机器代码执行。java bytecode 由单个字节组成(所以java的操作码又叫做字节码),所以最多有256个操作吗。实际上Java只使用了200左右的操作码, 还有一些操作码则保留给调试操作。分类(指令性质):

2020-11-02 09:58:07 491

原创 JVM诊断

JVM诊断

2020-10-26 14:14:51 270

原创 JVM 类加载

1.类加载过程2.类加载器3.自定义类加载器4.打印各个类加载器加载的类

2020-10-19 09:44:24 148

原创 redis 跳表应用

跳表底层数据结构应用

2020-10-12 09:39:34 319

原创 k8s部署Redis-Cluster

1.Redis-Cluster 是一个有状态的集群2.Redis-Cluster在K8s集群重的持久化方式

2020-09-28 09:16:42 390

原创 Redis数据结构之压缩列表

Redis数据结构之压缩列表

2020-09-21 10:40:57 115

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除