- 博客(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
337
原创 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
204
原创 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
507
原创 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
86
原创 DDD的理解
DDD 领域驱动设计:是一种设计思想,应用到IT技术领域,主要是指导微服务设计和划分的思想.微服务的划分和设计是根据业务和技术两个方面来划分的,DDD之前的微服务划分是偏向于根据技术来划分,DDD更强调根据业务属性来划分微服务.从而达到微服务的高内聚,低耦合,扩展性强的设计目的.微服务划分存在过粗或过细两个极端,过粗的微服务需要进一步划分,过细的微服务划分需要聚敛....
2021-08-01 10:03:46
3650
1
原创 kafka消费组管理模块(四)-GroupCoordinator分析
GroupCoordinator负责对接上层KafkaApis的各种handle请求,对下封装了GroupMetadataManager的各个方法重点分析rebalance的两个阶段JoinRequest和SyncRequest一.JoinRequest1.最上层由KafkaApis的handleJoinGroupRequest方法发起case ApiKeys.JOIN_GROUP => handleJoinGroupRequest(request)def handleJoin.
2021-03-17 18:12:23
431
原创 kafka消费组管理模块(三)-__consumer_offsets分析
__consumer_offsets成为位移主题,有以下知识点1.由kafka自己创建,默认50个分区,每个分区3个副本2.例如partition-1的leader为broker 4. isr为 4,6,8 ar为4,6,83.一个group,计算group的hash值,对50取余得出0-49的值,如果是1则这个group的group coordinator在partition-1的leader所在的broker上4.__consumer_offsets保存了组元数据和offset元数.
2021-03-17 16:24:31
1148
原创 kafka消费组管理模块(二)-元数据管理器GroupMetadataManager
组管理器是管理多个GroupMetadata一.核心字段其中最核心的就是groupMetadataCache ,底层就是一个ConcurrentHashMap,消费组名,对应GroupMetadataclass GroupMetadataManager(brokerId: Int, interBrokerProtocolVersion: ApiVersion, config: Offse
2021-03-16 17:44:19
865
原创 kafka消费组管理模块(一)-元数据
kafka服务端消费组管理器的源码位于kafka.coordinator.group包下分为四个部分分析1.元数据 MemberMetadata.scala & GroupMetadata.scala2.元数据管理 GroupMetadataManager.scala3.__consumer_offsets分析4.组管理器 GroupCoordinator第一部分:MemberMetadata.scala & GroupMetadata.scala一.Member
2021-03-16 16:54:34
758
原创 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
283
原创 kafka核心配置-consumer
fetch.min.bytes--1fetch.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
161
原创 kafka核心配置-producer
一.producerbuffer.memory--33554432=32mretries--2147483647:可能导致顺序不对batch.size--16384 字节=16kconnections.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
271
原创 kafka核心配置-broker
基础配置listenersdefault.replication.factor--1advertised.listenersauto.create.topics.enablemessage.max.bytesbroker.rackbroker.id.generation.enablenum.partitions--1reserved.broker.max.idsecurity.inter.broker.protocol--PLAINTEXTcreate.topic
2020-12-21 18:40:30
438
原创 kafka-副本机制
kafka通过副本机制保证数据的可靠性一.副本机制的概念如下:1.一个partition有多个副本replication,一般是3个或5个2.每个副本位于不通的broker3.每个副本集合里有一个leader副本,其余的为follower副本,只有leader副本才接受读写请求,follower副本只做同步数据4.所有的副本组成的集合称为AR,所有同步副本成为ISR(In-Sync Replication),所有非同步副本成为OSR,OSR+ISR=AR5.如果leader副本不可用
2020-11-08 19:25:23
212
原创 kafka-client-分区分配
分区再均衡分区再均衡在服务端由GroupCoordinator负责,在客户端由ConsumerCoordinator负责有以下集中情况会触发再均衡1.新消费者加入2.消费者被动下线3.消费者主动下线4.消费组对应的GroupCoordinator节点发生变更5.消费组订阅的主题分区数量发生变化当发生分区再均衡时有以下几个阶段第一阶段 FIND_COORDINATOR第二阶段JOIN_GROUP第三阶段SYNC_GROUP第四阶段HEARTBE...
2020-11-07 20:23:52
392
原创 kafka-client-分区策略
分区分配策略一个消费组内有多个消费者,一个topic有多个patition,所以消费者和partition是多对多的关系,kafka默认有以下三种分区分配策略1.RangeAssignor按照消费者总数和分区总数整除得到一个跨度,然后将分区按照跨度进行平均分配,当订阅多个topic时,每个topic分别计算例如消费者c0,c1topic有2个,分区分别为:t0p0,t0p1,t0p2t1p0,t1p1,t1p2分配过程:(1)分配topic:t0c0: t0p0,t0
2020-11-07 20:22:55
283
原创 kafka-controller
1.kafka中有多个broker,其中一个broker会被选举为controller2.选举的方式是所有broker在zookeeper创建/controller临时节点,创建成功的broker成为controllercontroller的数据如下{"version":1,"brokerid":2,"timestamp":"1604740076796"}同时会创建controller_epoch节点,节点数据是一个整数,记录选举轮次3.controller的职责监听分区相关的变化
2020-11-07 19:03:14
139
原创 kafka-日志格式
kafka的topic-partition文件夹下有多个文件包括 .log .idex .timeindex 这三个核心文件 还包括 .deleted .cleaned .swap 等临时文件 还可能有 .snapshot .txnindex leader-epoch-checkpoint 等文件.log文件是kafka的数据文件
2020-11-06 12:34:44
1218
原创 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
180
原创 kafka-topic管理
一.概念kafka的topic是一个逻辑概念,一个topic对应多个分区,一个分区对应多个副本,一个副本对应一台broker上的一个文件夹,例如topic为test的第0个分区的一个副本的文件夹名为test-1,每个分区在一个broker上只能有一个副本,所以所有副本的文件夹名是相同的,只是在不同的broker上每个副本的文件夹内有以下文件:00000000000000000974.index //索引文件00000000000000000974.snapshot //快照文件0000..
2020-11-05 20:10:22
2530
原创 消费者代码实例
一.创建配置,最小化配置如下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 idprops.setProperty(ConsumerConfig.KEY_DESERIALI
2020-11-05 14:53:33
289
原创 生产者代码示例
一.必须按配置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
218
原创 kafka副本同步机制
kafka的复制机制不是完全的同步或异步,完全的同步需要所有的副本成功写入才能返回,会极大地影响性能,完全的异步,只要写入leader副本即可,这样如果leader宕机,会丢消息,kafka采取了独特的ISR机制权衡数据的可靠性和性能.1.日志文件逻辑格式0是日志起始offset,HW是消费者可以拉取到的最大的offset,leo是新写入的下一条offset2.所有的副本组成的集合是AR(Assigned Replicas)3.与Leader保持一定程度同步的副本集合是ISR(In-Sy
2020-11-02 17:39:38
441
原创 kafka-Consumer Group 不消费问题
一.问题现象:go 客户端简单consumer 模式可以消费go客户端consumer group模式不可消费,客户端运行到一下代码卡住<-consumer.ready // consumer一直没有readyfmt.Println("Sarama consumer up and running!...")java客户端不可消费客户端每次poll不到数据,没有日志输出ConsumerRecords<String, String> records = consu
2020-10-22 11:56:55
2398
原创 Redis Cluster on K8s性能测试
本测试用于了解Redis Cluster在Kubernetes环境下的性能表现,以及对比Kubernetes环境相比虚机环境的性能差异
2020-08-04 20:10:59
1248
原创 网络相关概念
网络概念LAN 局域网 local area networkLAN 通过hub和switch联通,属于一个广播域LAN 中所有成员都会收到任意成员发出的广播包MAN 城域网 metropolitan area networkWAN 广域网 wide area network 广域网不等于互联网Ethernet 以太网 是LAN的一种组网技术,取代了其他LAN的组网技术:令牌环,FDDI和ARCNETIEEE 制定了以太网标准 IEEE 802.3,规定了物理层的连线,电子信号和...
2020-07-16 11:13:44
293
原创 SpringCloud源码解读--Eureka注册中心核心源码解读(1)-核心流程
核心类1.InstanceRegistry:注册表2.DiscoverClient:客户端3.Application:注册得应用,InstanceInfo:注册的应用实例4.PeerEurekaNode:每一个注册中心节点5.EurekaBootStrap:服务端启动类...
2020-02-16 20:18:39
469
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人