后端进阶_社区达人页

个人头像照片
后端进阶
已加入开发者社区2033

勋章 更多

个人头像照片
专家博主
专家博主
个人头像照片
星级博主
星级博主
个人头像照片
技术博主
技术博主
个人头像照片
初入江湖
初入江湖

成就

已发布105篇文章
19条评论
已回答0个问题
0条评论
已发布0个视频
github地址

技术能力

兴趣领域
  • Java
  • Go
  • 设计模式
  • 微服务
  • 消息中间件
  • Serverless
  • 中间件
擅长领域
技术认证

暂时未有相关云产品技术能力~

微信公众号「后端进阶」作者,技术博客(https://objcoding.com/)博主,Seata Committer,GitHub ID:objcoding。

暂无精选文章
暂无更多信息

2022年05月

  • 05.13 14:11:30
    发表了文章 2022-05-13 14:11:30

    Seata AT 模式启动源码分析

    从上一篇文章「分布式事务中间件Seata的设计原理」讲了下 Seata AT 模式的一些设计原理,从中也知道了 AT 模式的三个角色(RM、TM、TC),接下来我会更新 Seata 源码分析系列文章。今天就来分析 Seata AT 模式在启动的时候都做了哪些操作。
  • 05.13 14:08:38
    发表了文章 2022-05-13 14:08:38

    关于 Kafka 的一些面试题目

    上周客串了一下面试官,在这里就简单记录一下期间我问到的一些关于 Kafka 的面试题目,这些都是我平时在学习 Kafka 的一些总结要点。
  • 05.13 14:05:11
    发表了文章 2022-05-13 14:05:11

    Kafka 删除主题流程分析

    之前有个 Kafka 集群的每个节点的挂载磁盘多达 20+ 个,平均每个磁盘约 1T,每个节点的分区日志被平均分配到这些磁盘中,但由于每个分区的数据不一致,而集群节点 log.retention.bytes 这个参数的默认值是 -1,也就是没有任何限制,因此 Kafka 的日志删除日志依赖 log.retention.hours 参数来删除,因此会出现日志未过期,磁盘写满的情况。 针对该集群双十一会遇到某些挂载磁盘被写满的情况,需要手动对主题进行删除以清空磁盘的操作,现在分析删除主题对集群以及客户端会有什么影响,以及 Kafka 都做了哪些动作。
  • 05.13 14:02:26
    发表了文章 2022-05-13 14:02:26

    SpringCloud 微服务实战笔记

    这是很早以前在我的博客上写的关于 SpringCloud 的一些实战笔记,现在我把这些实战笔记集合起来贴到这里,可能会对一些刚刚接触 SpringCloud 微服务的小伙伴有帮助。
  • 05.13 13:56:35
    发表了文章 2022-05-13 13:56:35

    Kafka ISR 副本同步机制

    ISR(in-sync replica) 就是 Kafka 为某个分区维护的一组同步集合,即每个分区都有自己的一个 ISR 集合,处于 ISR 集合中的副本,意味着 follower 副本与 leader 副本保持同步状态,只有处于 ISR 集合中的副本才有资格被选举为 leader。一条 Kafka 消息,只有被 ISR 中的副本都接收到,才被视为“已同步”状态。这跟 zk 的同步机制不一样,zk 只需要超过半数节点写入,就可被视为已写入成功。
  • 05.13 13:54:46
    发表了文章 2022-05-13 13:54:46

    RocketMQ 位移提交源码分析

    RocketMQ 消息消费进度是如何提交的,并发消费的时候,一次从 一个队列拉 32 条消息,这 32 条消息会提交到线程池中处理,如果偏移量 m5 比 m4 先执行完成,消息消费后,提交的消费进度是哪个?是提交消息 m5 的偏移量?
  • 05.13 13:52:55
    发表了文章 2022-05-13 13:52:55

    搭建 RocketMQ 集群

    纯粹是为了记录搭建的过程。忘了就翻来看看
  • 05.13 13:50:47
    发表了文章 2022-05-13 13:50:47

    搭建 Redis 主从+哨兵集群

    纯粹是为了记录搭建的过程。忘了就翻来看看。
  • 05.13 13:49:30
    发表了文章 2022-05-13 13:49:30

    RocketMQ 同步复制 SLAVE_NOT_AVAILABLE 异常源码分析

    最近在 RocketMQ 钉钉官方群中看到有人反馈说 broker 主从部署,在发布消息的时候会报 SLAVE_NOT_AVAILABLE 异常,报这个异常的前提 master 的模式一定为 SYNC_MASTER(同步复制),从 异常码可以直接判断的一种原因就是因为 slave 挂掉了,导致 slave 不可用,但是他说 slave 一切正常。 于是我决定撸一波源码。
  • 05.13 13:47:24
    发表了文章 2022-05-13 13:47:24

    图解:Kafka 水印备份机制

    在选为新的 leader 副本时,会导致消息丢失或者离散吗?Kafka 是如何解决 leader 副本变更时消息不会出错?以及 leader 与 follower 副本之间的数据同步是如何进行的?带着这几个问题,我们接着往下看,一起揭开 Kafka 水印备份的神秘面纱。
  • 05.13 13:43:38
    发表了文章 2022-05-13 13:43:38

    Kafka 分区重分配源码分析

    上一篇跟大家描述了 Kafka 集群扩容的方案与过程,这次就跟大家详细描述 Kafka 分区重分配的实现细节。
  • 05.13 13:40:38
    发表了文章 2022-05-13 13:40:38

    记一次 Kafka 集群线上扩容

    前段时间收到某个 Kafka 集群的生产客户端反馈发送消息耗时很高,于是花了一段时间去排查这个问题,最后该集群进行扩容,由于某些主题的当前数据量实在太大,在对这些主题迁移过程中花费了很长一段时间,不过这个过程还算顺利,因为在迁移过程中也做足了各方面的调研,包括分区重平衡过程中对客户端的影响,以及对整个集群的性能影响等,特此将这个过程总结一下,也为双十一打了一剂强心剂。
  • 05.13 13:33:18
    发表了文章 2022-05-13 13:33:18

    关于RocketMQ消息拉取与重平衡的一些问题探讨

    其实最好的学习方式就是互相交流,最近也有跟网友讨论了一些关于 RocketMQ 消息拉取与重平衡的问题,我姑且在这里写下我的一些总结。
  • 05.13 13:25:47
    发表了文章 2022-05-13 13:25:47

    Kafka重平衡机制

    当集群中有新成员加入,或者某些主题增加了分区之后,消费者是怎么进行重新分配分区再进行消费的?这里就涉及到重平衡(Rebalance)的概念,下面我就给大家讲解一下什么是 Kafka 重平衡机制,我尽量做到图文并茂通俗易懂。
  • 05.13 13:21:51
    发表了文章 2022-05-13 13:21:51

    Kafka消息体大小设置的一些细节

    还记得前几天有个小伙伴跟我反馈发送消息时提示请求数据过大的异常吗?经过调整 max.request.size 的大小之后,又报了了如下异常
  • 05.13 13:19:51
    发表了文章 2022-05-13 13:19:51

    RocketMQ主从如何同步消息消费进度?

    前面我也跟大家讲述了 RocketMQ 读写分离的规则,但是你可能会问,主从服务器之间的消费进度是如何保持同步的?下面我来给大家解答一下。
  • 05.13 13:17:10
    发表了文章 2022-05-13 13:17:10

    RocketMQ主从读写分离机制

    一般来说,选择主从备份实现高可用的架构中,都会具备读写分离机制,比如 MySql 读写分离,客户端可以向主从服务器读取数据,但客户写数据只能通过主服务器。 RocketMQ 的读写分离机制又跟上述描写的不太一致,RocketMQ 有属于自己的一套读写分离逻辑,它会判断主服务器的消息堆积量来决定消费者是否向从服务器拉取消息消费。
  • 05.13 13:14:48
    发表了文章 2022-05-13 13:14:48

    RocketMQ主从同步源码分析

    之前写了一篇关于 RocketMQ 队列与 Kafka 分区副本的区别文章,里面提到了 RocketMQ 的消息冗余主要是通过主备同步机制实现的,这跟 Kafka 分区副本的 Leader-Follower 模型不同,HA(High Available) 指的是高可用性,而 RocketMQ 是通过主备同步(HA 机制)实现消息的高可用。
  • 05.13 13:08:15
    发表了文章 2022-05-13 13:08:15

    Kafka发送消息时提示请求数据过大是怎么回事?

    今天有个小伙伴跟我反馈,在 Kafka 客户端他明明设置了 batch.size 参数,以提高 producer 的吞吐量,但他发现报了如下错误
  • 05.13 13:05:46
    发表了文章 2022-05-13 13:05:46

    RocketMQ Broker启动流程梳理

    RocketMQ Broker启动流程梳理
  • 05.13 13:01:58
    发表了文章 2022-05-13 13:01:58

    Kafka分区副本与RocketMQ队列的区别

    最近在学习 Kafka,发现其核心概念与 RocketMQ 还是存在一定的差别,下面我来说下 Kafka 分区 与 RocketMQ 队列之间的区别。
  • 05.13 12:58:04
    发表了文章 2022-05-13 12:58:04

    Golang 内置函数 new 和 make 的区别

    Go 语言中 new 和 make 都是内置函数,用于内存的分配,本文主要简述两者使用上的异同与特性。
  • 05.13 12:54:38
    发表了文章 2022-05-13 12:54:38

    RocketMQ为什么要保证订阅关系的一致性?

    前段时间有个朋友向我提了一个问题,他说在搭建 RocketMQ 集群过程中遇到了关于消费订阅的问题
  • 05.13 12:45:57
    发表了文章 2022-05-13 12:45:57

    分布式事务中间件Seata的设计原理

    因为待过的几家公司,用的都是微服务架构,但是在解决分布式事务的问题上都不太优雅,所以我也在一直关注 Seata 的发展,今天就简要说说它的一些设计上的原理,后续我将会对它的各个模块进行深入源码分析,感兴趣的可以持续关注我的公众号或者博客,不要跟丢。
  • 05.13 12:42:39
    发表了文章 2022-05-13 12:42:39

    Go Modules踩坑总结

    随着 Go1.11 的发布,Golang 给我们带来了 module 全新特性,这是 Golang 新的一套依赖管理系统。现在 Go1.12 已经发布了,go modules 进一步稳定,但官方还是没有将其设为默认机制,所以踩坑之路是必须的,本篇文章除了详细说明 go modules 的特性以及使用之外,还总结了我在这个过程中遇到的一些“坑”。
  • 05.13 12:32:50
    发表了文章 2022-05-13 12:32:50

    日期居然用字符串保存?我笑了

    以下,我会从时区的概念来跟你们解释一下,为什么用数值保存时间戳是最好的方案,同时也为了分享出来,让更多开发小伙伴留意这些细节性的东西。 相信时区对于很多人来说的很熟悉,因为地球是圆的,在地球上不同角落看到的太阳上升的角度都是不同的,即每个人对于时间的显示都是不一样的,
  • 05.13 12:31:09
    发表了文章 2022-05-13 12:31:09

    Docker实战(三)

    我们都知道如果用 docker hub 来做仓库会很慢,因为docker hub 服务器在国外,那么现在有必要讲一下如何搭建一个 docker 私有仓库,并进行快速部署。
  • 05.13 12:24:41
    发表了文章 2022-05-13 12:24:41

    Docker实战(二)

    制作镜像一般有三种方法,第一种是 run 一个基础容器,在里面下载好我们需要的东西,然后通过 docker commit 命令生成一个新的镜像,第二种方法是基于本地模版导入,第三种就是这篇文章说的基于 Dockerfile 创建。
  • 05.13 12:19:17
    发表了文章 2022-05-13 12:19:17

    Docker实战(一)

    Docker 也是作为我的第二技能栈之一,除了 Go 语言,Docker 是我最喜欢的第二技能栈了,值得一提的是,Docker 是 Go 语言编写的。现在很多公司已经全面实现项目部署的容器化,这也是未来发展的一个方向,所以我也会在这里推一些关于 Docker 的文章。
  • 05.13 12:12:00
    发表了文章 2022-05-13 12:12:00

    SSH 连接远程终端实用教程

    SSH 可分为客户端和服务端,服务端是一个守护进程,一般是 sshd 进程,在后台运行并响应来自客户端的请求,提供了对远程请求的处理,一般包括公共密钥认证、密钥交换、对称密钥加密和非安全连接;客户端一般是 SSH 进程,另外还包含 scp、slogin、sftp 等其他进程。 这篇文章主要讲如何 SSH 连接远程终端,以此记录一下整个配置过程。
  • 05.13 12:07:40
    发表了文章 2022-05-13 12:07:40

    我对支付平台架构设计的一些思考

    我在前一家公司的第一个任务是开发统一支付平台,由于公司的业务需求,需要接入多个第三方支付,之前公司的支付都是散落在各个项目中,及其不利于支付的管理,于是聚合三方支付,统一支付平台的任务就落在我手上,可以说是完全从 0 开始设计,经过一翻实战总结,我得出了一些架构设计上的思考,之前就一直很想把自己的架构设计思路写出来,但一直没动手,前几天在技术群里有人问到相关问题,我觉得有必要把它写出来,以帮助到更多需要开发支付平台的开发人员。
  • 05.13 12:04:20
    发表了文章 2022-05-13 12:04:20

    聊聊Tomcat的架构设计

    Tomcat 里面藏着很多值得我们每个 Java WEB 开发者学习的知识,可以这么说,当你弄懂了 Tomcat 的设计原理,Java WEB 开发对你来说已经没有什么秘密可言了。本篇文章主要是跟大家聊聊 Tomcat 的内部架构体系,让大家对 Tomcat 有个整体的认知。
  • 05.13 11:59:04
    发表了文章 2022-05-13 11:59:04

    Golang 中函数作为值与类型

    在 Go 语言中,我们可以把函数作为一种变量,用 type 去定义它,那么这个函数类型就可以作为值传递,甚至可以实现方法,这一特性是在太灵活了,有时候我们甚至可以利用这一特性进行类型转换。作为值传递的条件是类型具有相同的参数以及相同的返回值。
  • 05.13 09:44:09
    发表了文章 2022-05-13 09:44:09

    Golang 环境配置与应用编译

    这篇文章主要是说一下 Go 的工作目录与编译的规则,初步体验一下 Go 的大道至简的魅力。
  • 05.13 09:36:04
    发表了文章 2022-05-13 09:36:04

    由for update引发的血案

    公司的某些业务用到了数据库的悲观锁 for update,但有些同事没有把 for update 放在 Spring 事务中执行,在并发场景下发生了严重的线程阻塞问题,为了把这个问题吃透,秉承着老司机的职业素养,我决定要给同事们一个交代。
  • 05.13 09:30:35
    发表了文章 2022-05-13 09:30:35

    实战|如何自定义SpringBoot Starter?

    SpringBoot 项目就是由一个一个 Starter 组成的,一个 Starter 代表该项目的 SpringBoot 起步依赖,除了官方已有的 Starter,如果你需要将自己的项目支持 SpringBoot,那么就需要把它制作成一个 Starter。
  • 05.12 22:59:59
    发表了文章 2022-05-12 22:59:59

    Java并发之AQS源码分析(二)

    我在 Java并发之AQS源码分析(一)这篇文章中,从源码的角度深度剖析了 AQS 独占锁模式下的获取锁与释放锁的逻辑,如果你把这部分搞明白了,再看共享锁的实现原理,思路就会清晰很多。下面我们继续从源码中窥探共享锁的实现原理。
  • 05.12 22:57:12
    发表了文章 2022-05-12 22:57:12

    Java并发之AQS源码分析(一)

    AQS 全称是 AbstractQueuedSynchronizer,顾名思义,是一个用来构建锁和同步器的框架,它底层用了 CAS 技术来保证操作的原子性,同时利用 FIFO 队列实现线程间的锁竞争,将基础的同步相关抽象细节放在 AQS,这也是 ReentrantLock、CountDownLatch 等同步工具实现同步的底层实现机制。它能够成为实现大部分同步需求的基础,也是 J.U.C 并发包同步的核心基础组件。
  • 05.12 22:50:09
    发表了文章 2022-05-12 22:50:09

    从源码的角度解析线程池运行原理

    在讲解完线程池的构造参数和一些不常用的设置之后,有些同学还是想继续深入地了解线程池的原理,所以这篇文章科代表会带大家深入源码,从底层吃透线程池的运行原理。
  • 05.12 22:43:32
    发表了文章 2022-05-12 22:43:32

    关于线程池你不得不知道的一些设置

    初始化线程池时可以预先创建线程吗?线程池的核心线程可以被回收吗?为什么?
  • 05.12 22:40:15
    发表了文章 2022-05-12 22:40:15

    你都理解创建线程池的参数吗?

    现有一个线程池,参数corePoolSize = 5,maximumPoolSize = 10,BlockingQueue阻塞队列长度为5,此时有4个任务同时进来,问:线程池会创建几条线程? 如果4个任务还没处理完,这时又同时进来2个任务,问:线程池又会创建几条线程还是不会创建? 如果前面6个任务还是没有处理完,这时又同时进来5个任务,问:线程池又会创建几条线程还是不会创建?
  • 05.12 22:35:32
    发表了文章 2022-05-12 22:35:32

    RocketMQ消息发送的高可用设计

    从rocketmq topic的创建机制可知,一个topic对应有多个消息队列,那么我们在发送消息时,是如何选择消息队列进行发送的?假如这时有broker宕机了,rocketmq是如何规避故障broker的?看完这篇文章,相信你会从文中找到答案。
  • 05.12 22:33:06
    发表了文章 2022-05-12 22:33:06

    关于RocketMQ Topic的创建机制,我还有一些细节上的思考

    在撸完RocketMQ Topic的创建机制后,我似乎还有一些意犹未尽的感觉,总觉得还缺一些什么。于是我就趁热打铁,提出以下两点我自己的一些思考。 当集群新增master节点后,如何保证队列负载?如何在集群中固定队列数量?
  • 05.12 22:31:27
    发表了文章 2022-05-12 22:31:27

    深度解析RocketMQ Topic的创建机制

    我还记得第一次使用rocketmq的时候,需要去控制台预先创建topic,我当时就想为什么要这么设计,于是我决定撸一波源码,带大家从根源上吃透rocketmq topic的创建机制。
  • 05.12 22:28:19
    发表了文章 2022-05-12 22:28:19

    Docker容器的日志处理

    我们都知道docker logs -f会将所有对应的服务日志输出到终端,无论服务的部署在哪个节点上,那么我现在提出一个问题,是否每个节点对应的容器文件,都会保存该服务的完整日志备份,还是只保存该节点服务对应容器产生的日志?
  • 05.12 22:26:03
    发表了文章 2022-05-12 22:26:03

    钟同学,this is for you!

    坐在我旁边的钟同学听说我精通Mybatis源码(我就想不通,是谁透漏了风声),就顺带问了我一个问题:在同一个方法中,Mybatis多次请求数据库,是否要创建多个SqlSession会话?
  • 05.12 22:23:11
    发表了文章 2022-05-12 22:23:11

    mybatis-plus源码分析之sql注入器

    mybatis-plus是完全基于mybatis开发的一个增强工具,它的设计理念是在mybatis的基础上只做增强不做改变,为简化开发、提高效率而生,它在mybatis的基础上增加了很多实用性的功能,比如增加了乐观锁插件、字段自动填充功能、分页插件、条件构造器、sql注入器等等,这些在开发过程中都是非常实用的功能,mybatis-plus可谓是站在巨人的肩膀上进行了一系列的创新,我个人极力推荐。下面我会详细地从源码的角度分析mybatis-plus(下文简写成mp)是如何实现sql自动注入的原理。
  • 05.12 22:20:30
    发表了文章 2022-05-12 22:20:30

    Mybatis-spring源码分析之注册Mapper Bean

    「Mybatis源码分析之Mapper注册与绑定」讲到了 Mapper 如何注册到 Configuration 类中与 MapperProxyFactory 绑定的过程,我们平时的使用场景一般都配合着 Spring,使用 Spring 意味着需要注册 Bean,也就是说需要将 Mapper 的代理实现类注册到 Spring 容器中,成为 Spring 容器中的一个 Bean。
  • 05.12 22:17:44
    发表了文章 2022-05-12 22:17:44

    RocketMQ源码分析之路由中心

    早期的rocketmq版本的路由功能是使用zookeeper实现的,后来rocketmq为了追求性能,自己实现了一个性能更高效且实现简单的路由中心NameServer,而且可以通过部署多个路由节点实现高可用,但它们之间并不能互相通信,这也就会导致在某一个时刻各个路由节点间的数据并不完全相同,但数据某个时刻不一致并不会导致消息发送不了,这也是rocketmq追求简单高效的一个做法。
  • 05.12 22:14:25
    发表了文章 2022-05-12 22:14:25

    Mybatis源码分析之Mapper注册与绑定

    Mybatis 是一个「面向 sql」的持久层框架,它可实现动态拼装 sql,极其灵活,同时避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集,其插件机制允许在已映射语句执行过程中的某一点进行拦截调用等等,让我忍不住想要撸一撸它的源码。
  • 发表了文章 2022-05-13

    深度剖析 Seata TCC 模式【图解 + 源码分析】

  • 发表了文章 2022-05-13

    详解 Seata AT 模式事务隔离级别与全局锁设计

  • 发表了文章 2022-05-13

    浅谈互联网分布式架构的演进

  • 发表了文章 2022-05-13

    图解 Raft 共识算法:如何复制日志?

  • 发表了文章 2022-05-13

    代码即格式:你用过这些高效工具吗?

  • 发表了文章 2022-05-13

    面试官问我:如何设计一个秒杀场景?

  • 发表了文章 2022-05-13

    你的 IDEA 该更新了!

  • 发表了文章 2022-05-13

    Seata 分布式事务 XA 与 AT 全面解析

  • 发表了文章 2022-05-13

    图解 Raft 共识算法:如何选举领导者?

  • 发表了文章 2022-05-13

    中通缓存服务平台基于 Kubernetes Operator 的服务化实践

  • 发表了文章 2022-05-13

    中通消息平台集群突破百万主题的技术探索

  • 发表了文章 2022-05-13

    日均千亿消息量的 Kafka 集群频繁发生 ISR 变化,原因竟是...

  • 发表了文章 2022-05-13

    Apache Calcite 框架 50 倍性能优化实践

  • 发表了文章 2022-05-13

    一文看懂 Kafka 消息格式的演进

  • 发表了文章 2022-05-13

    Kafka 消息存储与索引设计

  • 发表了文章 2022-05-13

    使用 PicGo + Gitee 搭建免费图床

  • 发表了文章 2022-05-13

    Myabtis Interceptor 线程安全引发的 Bug

  • 发表了文章 2022-05-13

    使用 Hexo + Gitee 快速搭建属于自己的博客

  • 发表了文章 2022-05-13

    Kafka 独立消费者

  • 发表了文章 2022-05-13

    记一次 Kafka Producer 性能调优实战

正在加载, 请稍后...
滑动查看更多
正在加载, 请稍后...
暂无更多信息
正在加载, 请稍后...
暂无更多信息