- 博客(187)
- 收藏
- 关注
原创 2022-1-8-21. Merge Two Sorted Lists
合并2个有序链表 /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val = val; this.next = ne
2022-01-08 22:54:01
346
原创 2022-1-8-3. Longest Substring Without Repeating Characters
最长无重复字符串 class Solution { public int lengthOfLongestSubstring(String s) { if(s==null || s.length()==0) return 0 ; Map<Character,Integer> map = new HashMap<>(); int longest = 0; int tempStart =
2022-01-08 22:32:01
215
原创 2022-1-8-2. Add Two Numbers
链表相加 /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val = val; this.next = next;
2022-01-08 21:58:37
519
原创 2022-1-8-200. Number of Islands
力扣https://leetcode-cn.com/problems/number-of-islands/深度优先搜索 class Solution { public int numIslands(char[][] grid) { int result = 0; for(int i = 0;i< grid.length;i++){ for(int j = 0;j<grid[0].length;j++){
2022-01-08 19:35:35
97
原创 DDD的理解
DDD 领域驱动设计:是一种设计思想,应用到IT技术领域,主要是指导微服务设计和划分的思想. 微服务的划分和设计是根据业务和技术两个方面来划分的,DDD之前的微服务划分是偏向于根据技术来划分,DDD更强调根据业务属性来划分微服务.从而达到微服务的高内聚,低耦合,扩展性强的设计目的. 微服务划分存在过粗或过细两个极端,过粗的微服务需要进一步划分,过细的微服务划分需要聚敛. ...
2021-08-01 10:03:46
3666
1
原创 kafka消费组管理模块(四)-GroupCoordinator分析
GroupCoordinator负责对接上层KafkaApis的各种handle请求,对下封装了GroupMetadataManager的各个方法 重点分析rebalance的两个阶段JoinRequest和SyncRequest 一.JoinRequest 1.最上层由KafkaApis的handleJoinGroupRequest方法发起 case ApiKeys.JOIN_GROUP => handleJoinGroupRequest(request) def handleJoin.
2021-03-17 18:12:23
445
原创 kafka消费组管理模块(三)-__consumer_offsets分析
__consumer_offsets成为位移主题,有以下知识点 1.由kafka自己创建,默认50个分区,每个分区3个副本 2.例如partition-1的leader为broker 4. isr为 4,6,8 ar为4,6,8 3.一个group,计算group的hash值,对50取余得出0-49的值,如果是1则这个group的group coordinator在partition-1的leader所在的broker上 4.__consumer_offsets保存了组元数据和offset元数.
2021-03-17 16:24:31
1162
原创 kafka消费组管理模块(二)-元数据管理器GroupMetadataManager
组管理器是管理多个GroupMetadata 一.核心字段 其中最核心的就是groupMetadataCache ,底层就是一个ConcurrentHashMap,消费组名,对应GroupMetadata class GroupMetadataManager(brokerId: Int, interBrokerProtocolVersion: ApiVersion, config: Offse
2021-03-16 17:44:19
895
原创 kafka消费组管理模块(一)-元数据
kafka服务端消费组管理器的源码位于kafka.coordinator.group包下 分为四个部分分析 1.元数据 MemberMetadata.scala & GroupMetadata.scala 2.元数据管理 GroupMetadataManager.scala 3.__consumer_offsets分析 4.组管理器 GroupCoordinator 第一部分:MemberMetadata.scala & GroupMetadata.scala 一.Member
2021-03-16 16:54:34
771
原创 kafka重要配置-影响可用性,性能
一.topic级别的配置 配置项 可选项 默认值 broker参数 说明 cleanup.policy delete,compact delete log.cleanup.policy 日志策略,delete或者compact delete.retention.ms 数字 86400000 (1 day) log.cleaner.delete.retention.ms 日志策略为compact.
2020-12-22 19:38:59
294
原创 kafka核心配置-consumer
fetch.min.bytes--1 fetch.max.bytes--52428800 (50 mebibytes) heartbeat.interval.ms--3000 (3 seconds) 和consumer coordinator之间的预跳时间(The value must be set lower thansession.timeout.ms, but typically should be set no higher than 1/3 of that value) max.parti.
2020-12-21 20:42:54
169
原创 kafka核心配置-producer
一.producer buffer.memory--33554432=32m retries--2147483647:可能导致顺序不对 batch.size--16384 字节=16k connections.max.idle.ms--540000 (9 minutes) delivery.timeout.ms--120000 (2 minutes) 此值应该大于request.timeout.ms+linger.ms,一个消息的最大投递时间 request.timeout.ms--30...
2020-12-21 20:23:27
283
原创 kafka核心配置-broker
基础配置 listeners default.replication.factor--1 advertised.listeners auto.create.topics.enable message.max.bytes broker.rack broker.id.generation.enable num.partitions--1 reserved.broker.max.id security.inter.broker.protocol--PLAINTEXT create.topic
2020-12-21 18:40:30
452
原创 kafka-副本机制
kafka通过副本机制保证数据的可靠性 一.副本机制的概念如下: 1.一个partition有多个副本replication,一般是3个或5个 2.每个副本位于不通的broker 3.每个副本集合里有一个leader副本,其余的为follower副本,只有leader副本才接受读写请求,follower副本只做同步数据 4.所有的副本组成的集合称为AR,所有同步副本成为ISR(In-Sync Replication),所有非同步副本成为OSR,OSR+ISR=AR 5.如果leader副本不可用
2020-11-08 19:25:23
224
原创 kafka-client-分区分配
分区再均衡 分区再均衡在服务端由GroupCoordinator负责,在客户端由ConsumerCoordinator负责 有以下集中情况会触发再均衡 1.新消费者加入 2.消费者被动下线 3.消费者主动下线 4.消费组对应的GroupCoordinator节点发生变更 5.消费组订阅的主题分区数量发生变化 当发生分区再均衡时有以下几个阶段 第一阶段 FIND_COORDINATOR 第二阶段JOIN_GROUP 第三阶段SYNC_GROUP 第四阶段HEARTBE...
2020-11-07 20:23:52
403
原创 kafka-client-分区策略
分区分配策略 一个消费组内有多个消费者,一个topic有多个patition,所以消费者和partition是多对多的关系,kafka默认有以下三种分区分配策略 1.RangeAssignor 按照消费者总数和分区总数整除得到一个跨度,然后将分区按照跨度进行平均分配,当订阅多个topic时,每个topic分别计算 例如消费者c0,c1 topic有2个,分区分别为: t0p0,t0p1,t0p2 t1p0,t1p1,t1p2 分配过程: (1)分配topic:t0 c0: t0p0,t0
2020-11-07 20:22:55
292
原创 kafka-controller
1.kafka中有多个broker,其中一个broker会被选举为controller 2.选举的方式是所有broker在zookeeper创建/controller临时节点,创建成功的broker成为controller controller的数据如下 {"version":1,"brokerid":2,"timestamp":"1604740076796"} 同时会创建controller_epoch节点,节点数据是一个整数,记录选举轮次 3.controller的职责 监听分区相关的变化
2020-11-07 19:03:14
150
原创 kafka-日志格式
kafka的topic-partition文件夹下有多个文件包括 .log .idex .timeindex 这三个核心文件 还包括 .deleted .cleaned .swap 等临时文件 还可能有 .snapshot .txnindex leader-epoch-checkpoint 等文件 .log文件是kafka的数据文件
2020-11-06 12:34:44
1232
原创 kafka-分区管理
1.分区优先副本选举 当分区的leader分配不均衡时,例如3个broker,0,1,2,有一个topic有3个分区p0,p1,p2,当所有的分区leader都在一个broker上时,就是分区分配不均衡 ./kafka-preferred-replica-election.sh --zookeeper 127.0.0.1:2181/kafka-plaintext-poc 结果太多,不展示 可以通过指定topic和分区的方式,对特定topic和分区进行优先副本选举 2.分区重分配 当有broker
2020-11-06 11:19:43
186
原创 kafka-topic管理
一.概念 kafka的topic是一个逻辑概念,一个topic对应多个分区,一个分区对应多个副本,一个副本对应一台broker上的一个文件夹,例如topic为test的第0个分区的一个副本的文件夹名为test-1,每个分区在一个broker上只能有一个副本,所以所有副本的文件夹名是相同的,只是在不同的broker上 每个副本的文件夹内有以下文件: 00000000000000000974.index //索引文件 00000000000000000974.snapshot //快照文件 0000..
2020-11-05 20:10:22
2545
原创 消费者代码实例
一.创建配置,最小化配置如下 var props = new Properties(); props.setProperty(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "127.0.0.1:9092");//broker地址 props.setProperty(ConsumerConfig.GROUP_ID_CONFIG, "group_id_1");//group id props.setProperty(ConsumerConfig.KEY_DESERIALI
2020-11-05 14:53:33
302
原创 生产者代码示例
一.必须按配置 Properties props = new Properties(); props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "127.0.0.19092");//kafka broker地址 props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer");//key序列...
2020-11-05 14:53:01
224
原创 kafka副本同步机制
kafka的复制机制不是完全的同步或异步,完全的同步需要所有的副本成功写入才能返回,会极大地影响性能,完全的异步,只要写入leader副本即可,这样如果leader宕机,会丢消息,kafka采取了独特的ISR机制权衡数据的可靠性和性能. 1.日志文件逻辑格式 0是日志起始offset,HW是消费者可以拉取到的最大的offset,leo是新写入的下一条offset 2.所有的副本组成的集合是AR(Assigned Replicas) 3.与Leader保持一定程度同步的副本集合是ISR(In-Sy
2020-11-02 17:39:38
453
原创 kafka-Consumer Group 不消费问题
一.问题现象: go 客户端简单consumer 模式可以消费 go客户端consumer group模式不可消费,客户端运行到一下代码卡住 <-consumer.ready // consumer一直没有ready fmt.Println("Sarama consumer up and running!...") java客户端不可消费 客户端每次poll不到数据,没有日志输出 ConsumerRecords<String, String> records = consu
2020-10-22 11:56:55
2423
原创 Redis Cluster on K8s性能测试
本测试用于了解Redis Cluster在Kubernetes环境下的性能表现,以及对比Kubernetes环境相比虚机环境的性能差异
2020-08-04 20:10:59
1280
原创 网络相关概念
网络概念 LAN 局域网 local area network LAN 通过hub和switch联通,属于一个广播域 LAN 中所有成员都会收到任意成员发出的广播包 MAN 城域网 metropolitan area network WAN 广域网 wide area network 广域网不等于互联网 Ethernet 以太网 是LAN的一种组网技术,取代了其他LAN的组网技术:令牌环,FDDI和ARCNET IEEE 制定了以太网标准 IEEE 802.3,规定了物理层的连线,电子信号和...
2020-07-16 11:13:44
299
原创 SpringCloud源码解读--Eureka注册中心核心源码解读(1)-核心流程
核心类 1.InstanceRegistry:注册表 2.DiscoverClient:客户端 3.Application:注册得应用,InstanceInfo:注册的应用实例 4.PeerEurekaNode:每一个注册中心节点 5.EurekaBootStrap:服务端启动类 ...
2020-02-16 20:18:39
476
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人