自定义博客皮肤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)
  • 资源 (10)
  • 收藏
  • 关注

原创 高并发高性能的定时器实现

前言我们经常都会碰到延迟任务,定时任务这种需求。在网络连接的场景中,常常会出现一些超时控制。随着连接数量的增加,这些超时任务的数量往往也是很庞大的。实现对大量任务的超时管理并不是一个容易的事情。几种定时任务的实现java.util.TimerJDK 在 1.3 的时候引入了Timer数据结构用于实现定时任务。Timer的实现思路比较简单,其内部有两个主要属性:TaskQueue:定时任务抽象类TimeTask的列表。TimerThread:用于执行定时任务的线程。   &nbs

2021-08-19 10:06:10 305

原创 换一种存储方式,居然能节约这么多内存?

前言提到缓存,就会想到redis,提到 Redis,我们的脑子里马上就会出现一个词:快。那么我们也知道,redis 之所以这么快,因为数据是放在内存中的,但是内存是非常昂贵的,怎么来设计我们的应用的存储结构,让应用满足正常的业务的前提下来节约内存呢?首先我们从Redis的数据类型开始看起。Redis...

2021-08-09 10:52:18 313

原创 高可用的升级-RocketMQ知识体系7

一直以来,在多地多中心的消息发送场景下,如何保障数据的完整性和一致性是一个技术难点。在 RocketMQ 4.5 版本之前,RocketMQ 只有 Master/Slave 一种部署方式,一组 broker 中有一个 Master ,有零到多个Slave,Slave 通过同步复制或异步复制的方式去同步 Master 数据。Master/Slave 部署模式,提供了一定的高可用性。但这样的部署模式,有一定缺陷。比如故障转移方面,如果主节点挂了,还需要人为手动进行重启或者切换,无法自动将一个从节点转换为主节点。

2021-08-02 22:22:24 206

原创 事物消息的实现-RocketMQ知识体系6

分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。例如在大型电商系统中,下单接口通常会扣减库存、减去优惠、生成订单 id, 而订单服务与库存、优惠、订单 id 都是不同的服务,下单接口的成功与否,不仅取决于本地的 db 操作,而且依赖第三方系统的结果,这时候分布式事务就保证这些操作要么全部成功,要么全部失败。本质上来说,分布式事务就是为了保证不同数据库的数据一致性。目前解决分布式事物的解决方案有seata,lcn 等。RocketMQ 分布式事物实

2021-07-27 15:20:50 97

原创 顺序消息的实现-RocketMQ知识体系5

我们知道,kafka 如果要保证顺序消费,必须保证消息保存到同一个patition上,而且为了有序性,只能有一个消费者进行消费。这种情况下,Kafka 就退化成了单一队列,毫无并发性可言,极大降低系统性能。那么对于对业务比较友好的RocketMQ 是如何实现的呢?首先,我们循序渐进的来了解下顺序消息的实现。顺序消息业务使用场景—1、电商场景中传递订单状态。2、同步mysql 的binlong 日志,数据库的操作是有顺序的。3、其他消息之间有先后的依赖关系,后一条消息需要依赖于前一条消息的处理结果的情况。等等

2021-07-23 09:28:31 160

原创 消费者原理分析-RocketMQ知识体系4

前文了解了 RocketMQ消息存储的相关原理,本文将讲讲消息消费的过程及相关概念。关于消息消费,消费者组这些概念,基本和kafka 是类似的,比如:一个消费组内可以包含多个消费者,1个消费组可订阅多个主题。消费组之间有集群模式与广播模式两种。集群模式下,主题下的同一消息只允许被消费组内的一个消费者...

2021-07-19 16:53:37 480

原创 消息的存储-RocketMQ知识体系3

上一篇了解了RocketMQ消息发送,本文开始聊聊消息发送到Broker端后,消息存储相关的逻辑。RocketMQ存储概要设计—RocketMQ主要存储的文件包括commitlog文件、consumeQueue文件、IndexFile文件。CommitLog是消息存储文件,所有消息主题的消息都存储在CommitLog文件中;该文件默认最大为1GB,超过1GB后会轮到下一个CommitLog文件。通过CommitLog,RocketMQ将所有消息存储在一起,以顺序IO的方式写入磁盘,充分利用了磁盘顺序写减少了

2021-07-15 19:23:26 103

原创 消息的发送-RocketMQ知识体系2

上一篇认识了一下RocketMQ,本文讲讲讲RocketMQ生产端的那些事儿,消息的发送相关的原理。消息发送的流程—RocketMQ 客户端的消息发送可以分为以下三层:业务层:直接调用 MQ Client 发送 API 的业务代码;消息处理层:RocketMQ Client 获取业务发送的消息对象后,一系列的参数检查、消息发送准备、参数包装等操作;通信层:RocketMQ 基于 Netty 封装的一个 RPC 通信服务,RocketMQ 的各个组件之间的通信全部使用这个模块;大概的流程:Broker启动时,

2021-07-12 15:12:48 252

原创 讲讲mysql Innodb ACID 的实现原理

本文主要探讨MySQL InnoDB 引擎下ACID的实现原理,对于诸如什么是事务,隔离级别的含义等知识请看我前面mysql 系列的文章。ACIDMySQL 作为一个关系型数据库,以最常见的 InnoDB 引擎来说,是如何保证 ACID 的。(Atomicity)原子性:事务是最小的执行单位,不允许分割。原子性确保动作要么全部完成,要么完全不起作用;(Consistency)一致性:执行事务前后,数据保持一致;(Isolation)隔离性:并发访问数据库时,一个事务不被其他事务所干扰。(Durability

2021-07-08 10:40:53 79

原创 消费者实现逻辑-kafka知识体系4

上篇文章分享kafka broker 的实现原理、数据的存储结构和消息持久化相关的东西,那消息存储完了之后,怎么被消费端消费呢,本文来聊一聊Kafka 消费端的那些事儿。1)拉取机制Kafka生产端是推的机制即Push,消费端是拉的机制即Pull。2)Pull的优缺点优点是消费端可以自己控制消息的读...

2021-07-01 13:56:51 131

原创 Broker的实现逻辑-kafka知识体系3

上篇文章分享了kafka 生产端的逻辑,以及消息发送到缓存后由sender线程发送到Broker,那么Broker 是怎么进行数据接收和持久化的呢?下面我们从Broker 的网络设计聊起。Broker 网络设计—kafka的网络设计和Kafka的调优有关,这也是为什么它能支持高并发的原因。Kafka的网络三层架构首先客户端发送请求全部会先发送给一个Acceptor,broker里面会存在3个线程(默认是3个),这3个线程都是叫做processor,Acceptor不会对客户端的请求做任何的处理,直接封装成一

2021-06-28 16:50:15 85

原创 生产者的实现逻辑-kafka知识体系2

kafka 是单条发送还是批量发送消息?kafka 怎么做到单条发送?kafka 发送消息是顺序的吗?生产者什么情况下可能会频繁FullGC?消息发送的逻辑—上帝视角来看消息发送的流程。生产者的设计消费发送机制:1)序列化器:序列化消息对象转成字节数组,然后通过网络传输。2)分区器:计算消息发往的具体分区;如果显示指定了partition,便不会走分区器。3)消息缓冲池:客户端的消息缓冲池,默认大小32M,见参数buffer.memory。4)批量发送:缓冲池中消息会按batch分批次发送,默认批次大小16

2021-06-24 14:17:09 221

原创 基础概念、架构和新版的升级-Kafka知识体系1

概念—Kafka 是一种高吞吐量、分布式、基于发布/订阅的消息系统,最初由 LinkedIn 公司开发,使用 Scala (JAVA)语言编写,目前是Apache 的开源项目。主要解决应用解耦、异步消息、流量削峰等问题。Kafka实际上也是一个主从架构,有一个Controller角色即控制器,协调管理整个集群。关键术语—brokerKafka 服务器,负责消息存储和转发。topic消息类别,Kafka 按照topic 来分类消息;似于关系型数据库的表。partitiontopic 的分区,一个 topic

2021-06-22 10:37:00 89

原创 图-从入门到会用

什么是图—一些理论在线性结构中,数据元素之间满足唯一的线性关系,每个数据元素(除第一个和最后一个外)只有一个直接前趋和一个直接后继;在树形结构中,数据元素之间有着明显的层次关系,并且每个数据元素只与上一层中的一个元素(parent node)及下一层的多个元素(孩子节点)相关;在图形结构中,节点之间的关系是任意的,图中任意两个数据元素之间都有可能相关。图G由两个集合V(顶点)和E(边)组成,定义为G=(V,E)。图的分类—无向图有向图无权图    连接线上没有数值的图

2021-06-20 15:38:50 79

原创 mysql单表亿级数据分页怎么优化?

把简单的事情放大了,它就不简单了前言有人说单表超千万数据就应该分库分表了,这么玩不合理啊。但是对于创新业务来讲,业务系统的设计不可能一上来就预估这么大的容量,成本和工期都不足矣完成系统的开发工作。我觉得对于创新型业务系统的设计,首先满足需求,其次考虑到万一业务井喷发展所要考虑到的临时解决方案,为系统升级预留时间。谁都希望业务井喷,那么它来了!01具体时间点就不说了,开始做了一个新业务,见了一个表,该表累计数据条不超过100万,提供查询功能。后来业务量持续上涨,mysql 磁盘开始报警,查询超时报警

2021-06-18 20:56:11 343

安卓应用开发范例一网打尽

安卓应用开发范例一网打尽

2012-03-16

Jquery统计图表

Jquery统计图表\基于jQuery的统计图表JS代码(flot)

2012-03-16

CSS3.0参考手册(中文版)

CSS3.0参考手册(中文版)

2012-03-16

Android_开发指南中文版

Android_开发指南中文版Android_开发指南中文版

2012-03-13

Android应用程序源代码

Android应用程序源代码Android应用程序源代码

2012-03-13

jQuery EasyUI 1.2 API文档

jQuery EasyUI 1.2 API文档j

2012-02-15

js 进度条汇总

js 进度条

2012-02-12

jQuery 进度条

jQuery 进度条

2012-02-12

treeview选中父节点自动选中子节点

treeview选中父节点自动选中子节点

2012-01-16

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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