自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MySql 分库分表问题

1、分库分表:主要是当前库的承载能力满足不了日益增加的业务需求,每天都会产生大量的数据,导致对数据操作出现瓶颈。分库策略:常用的是根据业务需求进行分库:比如按照用户的维度对数据进行分库等分表策略:一般常用的是按照日期的维度进行分表,尤其是在数据中台对ads表或者ods表进行处理的时候,大部分都是按照日期的维度分表。

2022-08-24 10:18:25 998 1

原创 MySql 中sql执行流程

查询缓存:把查询结果存储在缓存中,下次再次查询的时候,先检查数据是否在缓存中,如果存在,则直接返回,否则走下面流程。分析器:针对查询SQL进行语法、语义分析。如果验证不通过,则直接报错,返回。服务层: 包含 连接器、查询缓存、分析器、优化器、执行器。优化器:针对查询SQL进行优化分析,判断是否需要走索引。执行器:根据SQL,调用存储引擎接口,获取数据。连接器:主要是管理客户端链接、权限认证等功能。1、主要由 服务层、存储引擎组成。

2022-08-24 09:20:20 235

原创 redis哨兵选举机制

1、在redis启动的时候,进行选举2、在leader节点宕机之后,进行选举。

2022-08-18 11:02:22 5021

原创 JVM调优

1、标记清除:分为两个阶段:标记、清除, 首先,gc会从根root开始标记对象,如果没有引用的对象,会在清除阶段进行回收,这种算法适合于内存对象比较多的情况,适合于老年代 缺点:因为仅仅是标志,没有对内存进行整理,造成内存碎片,针对内存空间,扫描了两次,第一次是对对象进行标记,第二次是对为标志的对象进行回收。3、标记-压缩算法:从根节点标记存活对象,然后把这些对象压缩到内存的另外一侧,然后清除边界外的内存,这种回收算法一般是出于老年代,避免了内存碎片。-Xms4096m //最大堆设置。...

2022-08-11 15:27:04 106

原创 【无标题】

锁,俗称悲观锁,锁的粒度比较大JVM,在了解锁之前,前提条件是先了解对象的构成。

2022-07-15 10:40:58 79

原创 dubbo负载策略与容错策略

负载均衡策略对应的包:com.alibaba.dubbo.rpc.cluster(1):random loadbalance认情况下,dubbo是random load balance随机调用实现负载均衡,可以对provider不同实例设置不同的权重,会按照权重来负载均衡,权重越大分配流量越高,一般就用这个默认的就可以了。(2):roundrobin loadbalanceroundrobin loadbalance,这个的话默认就是均匀地将流量打到各个机器上去,但是如果各个机器的性能不一样,容易导致性

2022-07-13 15:39:13 106

原创 dubbo工作原理

对dubbo的理解,先从系统架构图,根据下面的架构图,然后再叙述流程第一层:service层,接口层,给服务提供者和消费者来实现的第二层:config层,配置层,主要是对dubbo进行各种配置的第三层:proxy层,服务代理层,透明生成客户端的stub和服务单的skeleton第四层:registry层,服务注册层,负责服务的注册与发现第五层:cluster层,集群层,封装多个服务提供者的路由以及负载均衡,将多个实例组合成一个服务第六层:monitor层,监控层,对rpc接口的调用次数和调用时间进行监控第七

2022-07-13 15:05:09 268

原创 Redis replication核心机制

1、 master与slave配置2、当slave启动,首次链接服务端的时候,会全部全量数据(1)redis采用异步方式复制数据到slave节点,不过redis 2.8开始,slave node会周期性地确认自己每次复制的数据量(2)一个master node是可以配置多个slave node的(3)slave node也可以连接其他的slave node(4)slave node做复制的时候,是不会block master node的正常工作的(5)slave node在做复制的时候,也不会b

2022-07-12 16:02:55 151

原创 Redis数据清除策略

redis设置key的过期名称setnx,当key 过期,会自动清除key触发删除事件: 内存不足、key过期时间到期删除策略包含:定期删除+惰性删除定期删除:指的是redis默认是每隔100ms就随机抽取一些设置了过期时间的key,检查其是否过期,如果过期就删除惰性删除:在获取某个key的时候,redis会检查一下 ,这个key如果设置了过期时间那么是否过期了?如果过期了此时就会删除,不会给你返回任何东西。1、allkeys-lru:当内存不足以容纳新写入数据时,在键空间中,移除最近最少使用的key(这

2022-07-12 15:16:20 1184

原创 Redis线程模式

前端查询数据很慢,而且针对某个业务场景,查询次数比较多,查询条件等信息几乎不变每次查询的时候,页面都要等4-7秒时间才能查询结果考虑应用redis缓存,现在来剖析一下redis快的原因以及模型1、redis采用reactor模型:监听Socket事件,当有Socket事件过来时交个对应的Handler处理2、redis单线程模型效率快的原因是:1)纯内存操作2)核心是基于非阻塞的IO多路复用机制3)单线程反而避免了多线程的频繁上下文切换问题(百度)......

2022-07-12 14:37:24 201

原创 ES查询原理:倒排索引

前端数据搜索:针对各种查询条件,需要快速、准确的响应数据结果。但是底层数据表很大,如果按照正常逻辑直接去表查询,这样查询效率很慢,而且是关联多表进行查询。针对这样的情况,项目中引入了ES,那为什么ES查询效率就这么快呢,下面就剖析一下ES查询原理ES倒排索引1、每个文档对应一个docId,文档内容会被切割成多个关键词,每个关键词都会记录在文档中的次数与位置,可以参考下图2、有了倒排索引,这样的话,就会很快的相应数据请求,比如前端要搜索 XXX,根据倒排索引可以很快的定位到某个文档,然后直接去文档get

2022-07-12 09:29:22 2013

原创 Elasticsearch分布式架构原理

1、一个索引拆分是多个shard,每个shard存放部分数据,分布在不同的节点上。每个shard又分为主shard与副本,是存放在不同节点上的这样的话,就保证数据的高可用2、一个索引类似于mysql中的一个表,type:分类,比如index分为两类,一个是实物订单,一个是虚拟订单,一个index包含多个type3、type下面是对应mapping,类似数据表结构4、数据存放在document,类似数据库表中的一行数据...

2022-07-11 15:25:11 554

原创 4、 如何保证消息的可靠性传输(如果处理消息丢失的问题)

消息丢失分为两种情况:消费端丢失数据:消费端消费数据,会自动提交offset,如果数据没有消费,但是已经提交了offset,此时消费端宕机,这样就导致消息丢失。可以设置手工提交offset。Kafka丢失数据:数据是在partition,如果所在的broker宕机了,而此时数据来不及同步到其它节点的副本,导致会丢失部分数据,为了保证数据不丢失,在数据发送到Leader,同时数据同步到其它副本,此时的ack才确认已经收到消息,这样的话,就保证kafka不会丢失数据. Ack有三种方式:数据发送到leade

2022-07-11 15:02:53 241

原创 消息队列满了以后该怎么处理?

什么情况下会造成消息积压:可能是消费端宕机、或者消费端消费能力更不上生产者的速度解决方案:1、增加资源,新建一个topic,增加partiton个数,比如原来是3个,那现在扩容30个,然后新增30个消费者进行消费,等到积压消息处理完了,再改回原本的消费者中2、如果长时间没有进行数据消费导致磁盘满了,同时又不能扩容,那只能丢失部分数据。 或者新建一个消费者,把数据存到另外一个地方...

2022-07-11 11:21:12 2183

原创 如何保证数据的顺序性

如何保证数据的顺序性(1):kafka写入patition的数据是有顺序的:消息发送到MQ,可以把不同的消息封装到不同点的对象中,这样的话,相同的消息就会发送到同一个partition中(2):一个partition对应一个consumer,消费者把数据可以放在队列中,多线程可以从队列中消费数据,这样就保证数据消费的顺序性...

2022-07-11 11:02:25 292

原创 JMS-为什么要使用消息队列

在使用jms消息队列时候,都不清楚我们为什么要使用jms,大部分只是在停留在使用层面上,下面通过几种场景介绍jms使用场景1:系统解耦,目前在开发大部分的系统的时候,都需要系统之间的相互交互,交互方式,可以使用微服务,可以使用restful接口,也可以使用其它等方式,不管通过哪种方式,都是为了系统之间的解耦。通过使用jms进行解耦,系统之间不需要彼此直接关注,同时可以根据自身的业务需求,随时进行数据消费。这样的方式,比前面提到的解耦方式更加灵活2:异步:使用jms提供服务,可以使同步的几个接口保持异步执

2022-07-11 10:50:07 140

原创 goland 操作文件之关键包

使用goland操作文件注意点1:在写入文件是,如果最后没有进行flush,则写入的数据是进入缓存,还没有进入文件,此时磁盘文件内容还是为空。直接上代码: file, _ := os.Open("E:/test/tmp1.txt") defer file.Close() write := bufio.NewWriter(file) write.WriteString("hello text!!")2:如果对文件进行写入操作,则必须制定flag标识,也就是读写标识,直接看源码:// Ope

2022-03-02 17:33:16 159

原创 Hbase整体概念描述

最近总有人问一下相关的HBase的知识点,希望看到这篇文章,可以给你解惑:HBase的整体描述: (1) HBase定义    HBase 是一个高可靠、高性能、面向列、可伸缩的分布式存储系统,利用Hbase技术可在廉价PC Server上搭建 大规模结构化存储集群。    (2) HBase 的特点 HBase 中的表一般有以下特点。 1)大:一个表可以有上亿行,上百万列。 ...

2018-08-02 14:47:07 304

原创 Hbase查询效率

HBase查询效率揭秘:(1) Hbase通过rowkey可以快速地位到在那个region上,位置信息保存在hbase的meta表里。 每次查询都会有location cache的,所以htable里面的Hconnection 初始化的时候访问速度相对来说稍慢,客户端缓存截图如下。随着数据越来越大,meta表的查询有可能遇到瓶颈,建议单独独立出成一个meta server。(2) H...

2018-08-02 14:17:58 8874

空空如也

空空如也

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

TA关注的人

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