- 博客(15)
- 收藏
- 关注
原创 tars客户端源码解析
实际上,这篇tars基金会的文章,代表了很高的水平,个人认为很难写出更好的说明了。如果想了解tars客户端逻辑,建议先读一下这篇。
2024-09-26 09:29:15
254
原创 ios抓包程序Stream安装后,无法抓取https的问题
一定要用safari浏览器下载ca证书,才能在下载证书后,在设置中展示出来。2 安装后操作界面点击开始抓包,会提示安装vpn配置。然后会提示安装证书。安装证书时,操作了多次,始终无法抓https的包。描述文件button会出现,然后点击安装就可以了。1 首先安装这个app。免费的,功能也很聚焦。
2024-03-25 10:42:10
3746
原创 librdkafka svr总体逻辑
2 每个层之间不是直接调用,而是通过内部队列的入队列和callback。不得不说,这样的确给代码阅读带来困难。在没有阅读librdkafka的源码之前并不知道,这个库简直就是一个服务svr,而不是一个sdk。1 服务分层做的不错。svr层,broker层,transport层,三层结构清晰。很少有见到一个sdk,内部包含如此多的状态机(尤其是消费者组的状态维护)。
2023-07-20 19:44:22
78
原创 librdkafka的队列rd_kafka_q_t(rd_kafka_q_s)
2 每个队列有一个rd_kafka_q_serve_cb_t结构的回调处理器,即处理callback。其核心是一个rd_kafka_op_tailq结构的rkq_q变量。1 读写分离:有一个rd_kafka_q_s类型的内部队列,用于专门用于读。当然还少不了锁相关的mtx和condition。rdkafka的内部消息都是通过这个结构传递。
2023-07-04 15:00:40
147
原创 librdkafka cgrp层源码
rdkafka_cgrp仅仅处理【消费者组】相关操作,比如join group, sync group,不处理消息的拉取和offset commit等消息相关的操作。
2023-06-29 15:12:14
113
1
原创 librdkafka transport层源码解读:
rd_kafka_transport层算是库的最底层了,主要处理网络事件。rd_kafka_transport_io_serve是其中的主要逻辑。
2023-06-29 11:45:27
112
1
原创 librdkafka的broker源码阅读
>>rd_kafka_broker_producer_serve为例(rd_kafka_broker_consumer_serve另说)>>>>>rd_kafka_toppar_producer_serve:直接推送到kafka。>>>>>>rd_kafka_broker_op_serve:处理单个op类型。>>>>rd_kafka_broker_ops_io_serve处理应答。
2023-06-28 17:46:16
107
1
原创 rd_kafka_background_thread_main都main了些啥
日志消息:当 Kafka 客户端产生日志消息时,可以通过 background_event_cb 回调函数获取这些日志消息。统计信息:当 Kafka 客户端产生统计信息时,可以通过 background_event_cb 回调函数获取这些统计信息。错误消息:当 Kafka 客户端发生错误时,可以通过 background_event_cb 回调函数获取这些错误消息。rd_kafka_background_thread_main乍一看名称,似乎也有。
2023-06-27 19:20:44
103
1
原创 rd_kafka_thread_main都main了些什么
2 如果是消费者,启动 rd_kafka_cgrp_serve.主要完成消费者的状态维护。比如JoinGroup, SyncGroup, Fetch, CommitOffset等。1 启动rd_kafka_q_serve. 主要完成op队列的消费和callback触发。不管producer还是consumer,都要调用该方法。注意:并不会处理poll消息的操作。核心代码其实就如下部分。
2023-06-27 18:51:21
125
1
原创 librdkafka源码阅读:rd_kafka_q_serve和rd_kafka_q_pop_serve
--->如果是RD_KAFKA_OP_CB 类型,则调用rd_kafka_op_call callback。-->如果有fwd_q(使用rd_kafka_q_fwd_get获取), 那么处理fwd_q的消息并返回。1 这是一个阻塞方法。--->rd_kafka_op_handle_std标准op处理。-->否则 rd_kafka_q_deq0弹出op,--->callback特殊约定的callback。-->rd_kafka_op_handle处理。----->使用rko->rko_op_cb方法。
2023-06-21 15:14:19
422
原创 cpp kafka源码阅读:buffered_producer之同步flush
>rko->rko_op_cb() 完成回调。->.....剩余步骤都一样。上图分析可见是同一个线程。
2023-06-15 11:18:01
163
1
原创 cpp kafka源码阅读:buffered_producer之AckMonitor
此时检查tid1的get_current_thread_pending_acks_impl会返回true。2:之后某个时刻sent_acks=101, last_acks_[tid2]=101, 此时last_acks_[tid1] = 100不变。AckMonitor的该方法判断某线程的消息是否都有ACK,只是简单比较了已发送消息计数sent_acks_的最大值。1:某个线程的last_acks_[tid1] = 100, 但是received_acks_=99。这样的实现是很精巧。
2023-06-14 15:05:31
71
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人