自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 tars客户端源码解析

实际上,这篇tars基金会的文章,代表了很高的水平,个人认为很难写出更好的说明了。如果想了解tars客户端逻辑,建议先读一下这篇。

2024-09-26 09:29:15 254

原创 nginx源码:ngx_array_s,ngx_pool_s赏析

nginx源码

2024-08-16 12:55:30 216

原创 ios抓包程序Stream安装后,无法抓取https的问题

一定要用safari浏览器下载ca证书,才能在下载证书后,在设置中展示出来。2 安装后操作界面点击开始抓包,会提示安装vpn配置。然后会提示安装证书。安装证书时,操作了多次,始终无法抓https的包。描述文件button会出现,然后点击安装就可以了。1 首先安装这个app。免费的,功能也很聚焦。

2024-03-25 10:42:10 3746

原创 微信授权登录流程图

网上大量的微信授权登录流程,但没有找到完全对的。当然我相信可能作者是理解正确,但是作图没有注意区分,导致容易误导新手。

2024-03-15 10:56:49 1320 1

原创 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源码阅读总路线

2 op_serve:处理接收到的消息。1 serve:发送到下一层。

2023-06-29 14:50:33 130 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关注的人

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