鲍倩和鲍新春
码龄13年
关注
提问 私信
  • 博客:82,618
    社区:104
    82,722
    总访问量
  • 61
    原创
  • 2,274,852
    排名
  • 18
    粉丝
  • 0
    铁粉
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:四川省
  • 加入CSDN时间: 2011-10-27
博客简介:

bao2901203013的专栏

查看详细资料
  • 原力等级
    当前等级
    4
    当前总分
    508
    当月
    10
个人成就
  • 获得31次点赞
  • 内容获得11次评论
  • 获得114次收藏
  • 代码片获得176次分享
创作历程
  • 1篇
    2025年
  • 1篇
    2023年
  • 29篇
    2022年
  • 17篇
    2021年
  • 10篇
    2020年
  • 5篇
    2014年
成就勋章
TA的专栏
  • akka
    1篇
  • 消息队列
    27篇
  • 分布式任务调度
    9篇
  • RocketMQ
    9篇
  • 链路追踪
    2篇
  • sentinel
    6篇
  • 限流
    1篇
  • ElasticJob
    5篇
  • zookeeper
    3篇
  • 多线程
    1篇
  • Netty
    1篇
  • Elasticsearch
    1篇
  • Spring
    2篇
  • springCloud
    1篇
  • 数据库、mysql
    3篇
  • Linux
    2篇
  • java
    8篇
兴趣领域 设置
  • 大数据
    mysql
  • 后端
    spring
创作活动更多

超级创作者激励计划

万元现金补贴,高额收益分成,专属VIP内容创作者流量扶持,等你加入!

去参加
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

OPPO自研DataFlow架构与实践

如果采用异步发送,先将数据写入本地缓存队列,然后再启动一个线程从队列中获取数据,写入到数据库中,这样处理不会将影响对外服务的性能,但是如果数据量过大时容易造成进程OOM,重启时则数据丢失。DataFlow是由OPPO互联网自研的一款高性能的数据流采集、聚合和传输框架,它通过将日志写入问题件,同时利用文件系统的顺序写入、内存缓存和内存映射文件技术、预写日志WAL等方式来提高写入的效率。FileChanel在运行之前,需要配置两个文件夹,一个是数据文件夹,用来存放用户写入的数据和数据的索引信息;
原创
发布博客 前天 16:07 ·
260 阅读 ·
1 点赞 ·
0 评论 ·
3 收藏

Akka入门

Akka是一个异步非阻塞高并发处理框架,它是一系列框架,包括akka-actor, akka-remote, akka-cluster, akka-stream等,分别具有高并发处理模型——actor模型,远程通信,集群管理,流处理等功能。
原创
发布博客 2023.04.06 ·
1705 阅读 ·
0 点赞 ·
1 评论 ·
4 收藏

分布式任务调度Schedulerx2.0 Map模型作业执行流程

Schedulerx2.0提供了多种分布式编程模型,下面以一个Map模型的作业来说明它的执行流程。
原创
发布博客 2022.09.02 ·
1038 阅读 ·
0 点赞 ·
0 评论 ·
6 收藏

分布式任务调度Schedulerx2.0工作原理

Schedulerx2.0是阿里巴巴开发的一个基于akka的分布式任务调度框架,提供分布式执行、多种任务类型、统一日志等功能,用户只要依赖schedulerx-worker这个jar包,通过schedulerx2.0提供的编程模型,简单几行代码就能实现一套高可靠可运维的分布式执行引擎。本文主要讲解schedulerx-worker的工作原理。...
原创
发布博客 2022.09.01 ·
2771 阅读 ·
1 点赞 ·
0 评论 ·
9 收藏

RocketMQ消息消费(Consumer)源码解析

RocketMQ中消息消费以消费组的模式开展,一个消费组内可以包含多个消费者,每一个消费者组可订阅多个主题,消费组内消费者之间有集群模式和广播模式两种消费模式。集群模式,主题下的同一条消息只允许被其中一个消费者消费。广播模式,主题下的同一条消息,将被集群内的所有消费者消费一次。消息服务器与消费者之间的消息传递也有两种模式:推模式、拉模式。所谓的拉模式即PullConsumer,是消费端主动拉起拉消息请求,而推模式即PushConsumer,是消息达到消息服务器后,推送给消息消费者。......
原创
发布博客 2022.08.23 ·
2203 阅读 ·
3 点赞 ·
0 评论 ·
3 收藏

RocketMQ中Broker接收消息流程代码解析

在步骤3中,会对topic进行检查,如果topic不存在,且设置成自动创建topic,就会在Broker上自动创建topic。第3步,最终回调的Callback类将数据写入buffer中,消息的序列化也是在callback里面完成的。putMessage会做一下检查,然后调用CommitLog的putMessage方法来写入消息。Broker最后调用MessageStore来存储数据。做接收和处理producer发送过来的消息。在RocketMQ中,Broker通过。...
原创
发布博客 2022.08.07 ·
731 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

RocketMQ创建topic流程解析

RocketMQ使用topic来分隔各个业务逻辑的消息,发送消息前需要创建topic。topic的创建有两种方式,一种是broker支持在收发消息时自动创建,比如producer发过来的消息带了一个不存在的topic,如果broker设置成可自动创建的话,会自动尝试创建topic。另外一种就是通过管理接口创建,这种方式生产环境用的更多一些,因为可以由管理员来统一管理topic。...
原创
发布博客 2022.08.06 ·
10827 阅读 ·
1 点赞 ·
0 评论 ·
9 收藏

RocketMQ消息发送源码解析

在DefaultMQProducer的构造函数中,主要是创建了类DefaultMQProducerImpl的实例,通过类DefaultMQProducerImpl的实例来实现各种逻辑。Producer作为生产者是RocketMQ的重要组成部分,下面我们通过一个消息发送的例子来说明Producer的工作原理。1、首先创建一个DefaultMQProducer实例,然后设置NameSrv的地址,再启动实例。2、当需要发送消息时,创建消息实例,然后发送消息给Broker。2.选择要发送到的消息队列。...
原创
发布博客 2022.07.31 ·
682 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

RocketMQ中的消息存储文件解析

RocketMQ中写入的消息会存储再commit文件下,然后再异步的转存到consumeQueue以及indexFile
原创
发布博客 2022.05.28 ·
973 阅读 ·
1 点赞 ·
0 评论 ·
2 收藏

RocketMQ 消息存储核心流程源码解析

RocketMQ作为一个消息队列需要一个高效的机制来存储消息,store模块就是RocketMQ的消息存储模块,下面介绍一下store中消息存储的核心流程。一、消息存储核心类DefaultMessageStore是消息存储的核心模块和入口,它的定义如下:public class DefaultMessageStore implements MessageStore { /** * 消息过滤器 */ private final MessageFilter
原创
发布博客 2022.05.22 ·
384 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

RocketMQ Broker启动流程解析

RocketMQ中Broker模块主要负责消息的存储、投递和查询以及服务高可用保证,它是RocketMQ中最为核心的模块,下面介绍一下它的启动流程。启动入口Broker是通过BrokerStartup的主函数启动的,代码如下:public static void main(String[] args) { start(createBrokerController(args));}先通过函数createBrokerController创建BrokerController对象,然后用st
原创
发布博客 2022.05.08 ·
1030 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

RocketMQ的底层通信模块remoting 源码解析

remoting是RocketMQ的底层通信模块,RocketMQ底层通讯是使用Netty来实现的。
原创
发布博客 2022.05.04 ·
1387 阅读 ·
1 点赞 ·
0 评论 ·
2 收藏

RocketMQ的元数据管理模块NameServer启动流程分析

NameServer是RocketMQ的元数据管理模块,它负责整个RocketMQ集群的Broker和元数据管理。下面以NameServer的启动流程来说明NameServer的工作原理。一、启动入口NamesrvStartup 是的NameServer服务的启动类。 其入口是 main0( ) 方法。代码如下:public static NamesrvController main0(String[] args) { try { //创建NameSe
原创
发布博客 2022.05.01 ·
670 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

RocketMQ的部署架构与代码模块组成

RocketMQ是阿里巴巴开源的一款高性能、高吞吐量、低延迟、高可用的分布式消息队列,通过对RocketMQ源码的学习可以知道一个出色的消息队列如何设计、如何运行。nameServerNameServer 是专为 RocketMQ 设计的轻量级元数据管理模块,相当与Kafka中的zookeeper,管理集群中的Broker和元数据,整个Rocketmq集群的工作原理如下图所示:可以看到,RocketMQ架构上主要分为四部分, Broker、Producer、Consumer、NameServ
原创
发布博客 2022.04.24 ·
354 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Elastic-job支持基于有向无环图(DAG)的作业依赖技术方案

Elastic-job是当当网架构师基于Zookepper、Quartz开发并开源的一个Java分布式定时任务,解决了Quartz不支持分布式的弊端。Elastic-job除了支持单个作业按照规定的时间触发外,还可以将多个作业通过有向无环图(DAG)的方式生成依赖关系,然后按照DAG中的依赖关系依次调度执行这些作业。下面说一下实现这个功能的技术方案。作业的定义假设在一个Elastic-job集群中,有三个作业A,B,C。它们的依赖关系依次是A-->B-->C。每个作业都有...
原创
发布博客 2022.04.10 ·
1537 阅读 ·
1 点赞 ·
0 评论 ·
2 收藏

Kafka中消费者Consumer消息读取流程源码解析

Kafka的消费者consumer是通过遍历KafkaStream的迭代器ConsumerIterator来消费消息的,其数据来源是分配给给KafkaStream的阻塞消息队列BlockingQueue,而BlockingQueue中的消息数据来自于针对每个Broker Server的FetchThread线程。FetchThread线程会将Broker Server上的部分partition数据发送给对应的阻塞消息队列BlockingQueue。其具体流程如下:其中类kafka.consumer.
原创
发布博客 2022.04.05 ·
3487 阅读 ·
4 点赞 ·
0 评论 ·
3 收藏

Kafka中生产者Producer消息发送流程源码解析

Kafka的Java客户端通过封封类kafka.producer.Producer来提供消息发送服务,所以消息发送的逻辑主要是在kafka.producer.Producer中完成。Producer的代码如下:class Producer[K,V](val config: ProducerConfig, private val eventHandler: EventHandler[K,V]) // only for unit testing extends
原创
发布博客 2022.04.03 ·
3208 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

KafkaController创建topic流程解析

一、kafka-topic.sh为了便于操作Kafka集群,Kafka源码包中提供了多个shell脚本,其中kafka-topic.sh提供了Topic的创建、修改、列举、描述、删除功能,内部通过TopicCommand来实现。其脚本内容如下://kafka-run-class.sh加载kafka的classpath,执行其中kafka.admin.TopicCommand的main函数exec $(dirname $0)/kafka-run-class.sh kafka.admin.Topic
原创
发布博客 2022.03.19 ·
2900 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

KafkaController内部的监听器

作为Kafka的重要模块,KafkaController主要通过监听zookeeper节点的变化来感知集群中元数据的变化,KafkaController内置多个zookeeper监听函数,监听的对象包括:在线的Broker Server列表,Topic列表,Partition对应的AR列表,Partition对应的ISR列表等等
原创
发布博客 2022.03.06 ·
2022 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Kafka中Topic的分区状态管理模块PartitionStateMachine源码解析

Kafka集群中,Topic的分区状态有PartitionStateMachine模块负责,通过在zookeeper上的目录/brokers/topics和/admin/delete_topics注册不同的监听函数,监听Topic的创建和删除事件,从而触发Topic的分区状态转换。
原创
发布博客 2022.02.27 ·
1106 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏
加载更多