自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(100)
  • 问答 (1)
  • 收藏
  • 关注

原创 docker-入门到精通

​ 容器技术、虚拟化技术已经成为一种被大家广泛认可的服务器资源共享方式,容器技术可以在按需构建操作系统实例的过程当中为系统管理员提供极大的灵活性。由于hypervisor虚拟化技术仍然存在一些性能和资源使用效率方面的问题,因此容器技术(Container)结合虚拟化技术的解决方案正在我们的业务使用中高频使用。虚拟机:是通过管理系统Hypervisor模拟出CPU、内存、网络等硬件,然后在硬件的基础上创建内核和操作系统。提供更多的资源,拥有一套完整的操作系统物理层面上的完全隔离,具有更好的安全性缺点。

2023-02-13 21:19:12 734 1

原创 redis集群的搭建、动态扩容缩容、水平扩展

redis集群的动态扩容缩容,水平扩展。迁移后在查看下集群情况,7001。重新分配槽位到7007节点。个用来做扩容缩容操作。启动完成后创建集群,两个实例,添加进集群。重新查看集群结果如下。redis-cli --cluster add-node 172.30.1.114:7007 172.30.1.114:7001 -a 123456redis-cli --cluster del-node 172.30.1.114:7007 d7638bac6e18a9a716be397560eefd9ecf886c7

2022-10-27 12:50:35 642

原创 otter数据同步入门教程

otter数据同步搭建教程

2022-10-18 20:15:23 1525

原创 RocketMq 各类消息消费与发送原理分析

Rocket Mq 事务消息、延迟消息、消息重试源码分析

2022-10-10 14:38:19 762

原创 JVM排查案例与工具使用

dump一个进程的堆内存文件。为远程机器的JMX端口。Jinfo 进程id。

2022-08-25 16:04:52 194

原创 Spring可扩展接口总结

文章目录容器刷新前的SpringFactories扩展容器刷新中的可扩展功能`BeanFactoryPostProcessors`工厂的后置处理扩展接口Bean创建的相关可扩展处理器容器刷新后的可扩展功能收尾扩展容器刷新前的SpringFactories扩展Spring启动过程监听扩展接口:SpringApplicationRunListener,实现案例:事件发布器EventPublishingRunListener default void starting() {} default voi

2022-04-21 16:06:20 846 1

原创 Jenkins搭建、自动化部署发布项目

文章目录jenkins安装启动主要配置切换插件加载地址为国内安装maven、ssh插件配置jdk、maven、ssh服务项目打包部署推送启动服务启动脚本注意:本次案例jenkins安装在windows中,项目推送是推送到linux中jenkins安装启动下载地址:https://www.jenkins.io/download/直接安装,先不设置账号密码。安装完毕初始化账号密码,然后选择安装一些自定义的插件因为站点是国外的,可能会很慢也可能会安装失败,我开了vpn所以安装还是很快的。然后打

2022-04-15 17:04:27 1266

原创 3、Spring、logstash、es日志采集

文章目录logstash下载安装SpringBoot整合logstash、es采集日志fileBeat实现日志采集使用日志采集的话,先安装es、kinaba…可以参考我之前的文章:https://blog.csdn.net/weixin_38650898/article/details/117731166logstash下载安装我下载的版本是:windows的8.1.2,其他版本自己采坑哦。。下载地址:https://www.elastic.co/cn/downloads/logstash修改配

2022-04-08 18:03:05 2934

原创 2、Elasticsearch集群架构原理

文章目录集群搭建ES核心知识系统架构故障转移与水平扩容路由计算操作流程分析写流程读流程更新流程倒排索引文档搜索动态更新索引集群搭建单机单台 Elasticsearch 服务器提供服务,往往都有最大的负载能力,超过这个阈值,服务器性能就会大大降低甚至不可用,所以生产环境中,一般都是运行在指定服务器集群中。除了负载能力,单点服务器也存在其他问题:单台机器存储容量有限单服务器容易出现单点故障,无法实现高可用单服务的并发处理能力有限配置服务器集群时,集群中节点数量没有限制,大于等于 2 个节点

2022-04-08 10:47:49 399

原创 2、Nacos注册与配置中心源码分析

文章目录1、注册中心1.1、架构基本原理1、注册中心1.1、架构基本原理Nacos核心功能点服务注册: Nacos Client会通过发送REST请求的方式向Nacos Server注册自己的服务,提供自身的元数据,比如ip地址、端口等信息。Nacos Server接收到注册请求后,就会把这些元数据信息存储在一个双层的内存Map中。服务心跳:在服务注册后,Nacos Client会维护一个定时心跳来持续通知Nacos Server,说明服务一直处于可用状态,防止被剔除。默认5s发送一次心跳。

2022-04-06 17:15:37 755 1

原创 1、Nacos使用实战

文章目录1、什么是Nacos?2 、Nacos Server的部署3、持久化配置4、集群配置5、prometheus+grafana监控Nacosgithub:https://github.com/alibaba/spring-cloud-alibaba/blob/master/README-zh.md官方文档https://spring-cloud-alibaba-group.github.io/github-pages/greenwich/spring-cloud-alibaba.htm

2022-04-06 14:22:45 1490

原创 spring redis客户端实现主从读写分离

客户端实现主从读写分离在搭建spring boot redis 哨兵模式的时候,发现它只是实现了,服务选举是的主服务切换而已,并没有实现所谓的客户端读写分离。所以决定自己实现一个。RedisTemplate获取连接是由RedisConnectionFactory来获取连接,所以直接重写里面的相关逻辑就可以了。直接贴代码吧:自定义CustomJedisSentinelConnectionFactory:public class CustomJedisSentinelConnectionFactor

2022-03-31 11:18:04 2000

原创 7、mysql的redo log、bin log日志

redo log简介**redo log(重做日志)**是InnoDB存储引擎独有的,它让MySQL拥有了崩溃恢复能力。比如 MySQL 实例挂了或宕机了,重启时,InnoDB存储引擎会使用redo log恢复数据,保证数据的持久性与完整性。注意:redo log是为了恢复buffer pool的数据,防止未刷盘的脏页数据的丢失。写入时机mysql更新表数据的时候,也是如此,发现 Buffer Pool 里存在要更新的数据,就直接在 Buffer Pool 里更新。然后会把**“在某个数据

2022-03-31 11:00:23 1459

原创 6、mysql的Buffer Pool存储及原理

一、前言1、buffer pool是什么咱们在使用mysql的时候,比如很简单的select * from table;这条语句,具体查询数据其实是在存储引擎中实现的,数据库中的数据实际上最终都是要存放在磁盘文件上的,如果每次查询都直接从磁盘里面查询,这样势必会很影响性能,所以一定是先把数据从磁盘中取出,然后放在内存中,下次查询直接从内存中来取。但是一台机器中往往不是只有mysql一个进程在运行的,很多个进程都需要使用内存,所以mysql中会有一个专门的内存区域来处理这些数据,这个专门为mysql准备

2022-03-31 10:53:58 1424

原创 5、mysql相关架构图及其基本原理

1、Mysql逻辑架构mysql基本架构组成图详细架构图:Mysql逻辑架构图主要分三层:1) 第一层负责连接处理,授权认证,安全等等每个客户端连接都会在服务器进程中拥有一个线程,服务器维护了一个线程池,因此不需要为每一个新建的连接创建或者销毁线程。当客户端连接到Mysql服务器时,服务器对其进行认证,通过用户名和密码认证,也可以通过SSL证书进行认证。一旦客户端连接成功,服务器会继续验证客户端是否具有执行某个特定查询的权限。2)第二层负责编译并优化SQL这一层包括查询解析,分析

2022-03-31 10:38:40 2087

原创 4、mysql事务、乐观锁,悲观锁与MVCC

事务的定义事务(Transaction):一个最小的不可再分的工作单元;通常一个事务对应一个完整的业务一个完整的业务需要批量DML(数据操纵语言 insert、update、delete) 语句共同联合完成事务只和DML语句有关,或者说DML语句才有事务。这个和业务逻辑有关,业务逻辑不同,DML语句的个数不同事务的特性事务具有ACID特性:原子性(A,atomicity)、一致性(C,consistency)、隔离性(I,isolation)、持久性(D,durabulity)。原子性:

2022-03-31 10:29:31 3164 2

原创 3、mysql索引存储以及优化

索引简介本质MySQL官方对索引的定义为:索引Index是帮助MySQL高效获取数据的数据结构。数据库除了数据本身之外,数据库还维护着一个满足特定查找算法的数据结构,这些数据结构以某种方式指向数据。索引的本质:索引是数据结构。优势类似大学图书馆建书目索引,提高数据检索效率,降低数据库的IO成本通过索引列对数据进行排序,降低数据排序成本,降低了CPU的消耗劣势实际上索引也是一张表,该表保存了主键和索引字段,并指向实体表的记录,所以索引列也是要占用空间的。虽然索引大大提高了查询速度,同时

2022-03-31 10:17:45 998

原创 2、mysql存储引擎类型特性

数据库存储引擎:是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以获得特定的功能。现在许多不同的数据库管理系统都支持多种不同的数据引擎。MySQL的核心就是插件式存储引擎。查看数据库支持的存储引擎: SHOW ENGINES;查看当前表的状态: show table status like ‘anti_fraud_info’ ;MyISAM它是MySQL5.5之前的.

2022-03-31 10:07:53 493

原创 1、mysql数据类型

数值类型整数类型![image.png](https://img-blog.csdnimg.cn/img_convert/e98abed331aafd0908838055fc4ab0f4.png#clientId=ub219c82e-128a-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=239&id=u45e09165&margin=[object Object]&name=ima

2022-03-31 10:01:30 991

原创 Seata-AT事务源码分析

文章目录前言源码分析入口SeataAutoDataSourceProxyCreatorGlobalTransactionScanner第一阶段第二阶段前言一阶段:业务数据和回滚日志记录在同一个本地事务中提交,释放本地锁和连接资源。二阶段:提交异步化,非常快速地完成。回滚通过一阶段的回滚日志进行反向补偿。以一个示例来说明:两个全局事务 tx1 和 tx2,分别对 a 表的 m 字段进行更新操作,m 的初始值 1000。tx1 先开始,开启本地事务,拿到本地锁,更新操作 m = 1000 -

2021-12-20 11:51:46 455

原创 RocketMq (二) 架构设计

文章目录架构设计1 技术架构2 部署架构RocketMQ 网络部署特点设计(design)1 消息存储1.1 消息存储整体架构1.2 页缓存与内存映射1.3 消息刷盘2 通信机制2.1 Remoting通信类结构2.2 协议设计与编解码2.3 消息的通信方式和流程2.4 Reactor多线程设计3 消息过滤4 负载均衡4.1 Producer的负载均衡4.2 Consumer的负载均衡5 事务消息5.1 RocketMQ事务消息流程概要5.2 RocketMQ事务消息设计6 消息查询6.1 按照Mess

2021-12-14 16:26:14 114

原创 RocketMq (一) 概念和特性

文章目录基本概念1 消息模型(Message Model)2 消息生产者(Producer)3 消息消费者(Consumer)4 主题(Topic)5 代理服务器(Broker Server)6 名字服务(Name Server)7 拉取式消费(Pull Consumer)8 推动式消费(Push Consumer)9 生产者组(Producer Group)10 消费者组(Consumer Group)11 集群消费(Clustering)12 广播消费(Broadcasting)13 普通顺序消息(No

2021-12-14 16:10:21 190

原创 SpringMvc源码全解

文章目录一、SpringMVC请求处理流程2、一、SpringMVC请求处理流程SpringMVC的核心组件和请求处理流程如下:1、 DispatcherServlet是SpringMVC中的前端控制器(front controller),负责接收request并将request转发给对应的处理组件。2、HanlerMapping是SpringMVC中完成url到Controller映射的组件。DispatcherServlet接收request,然后从HandlerMapping查找处

2021-11-21 20:38:49 3843

原创 Spring源码全解

文章目录1.容器简介什么是容器?IOC/DI2.容器的结构2.1 BeanFactory2.2 ApplicationContext2.2.1 ConfigurableApplicationContext2.2.2 WebApplicationContext3、ApplicationContext 启动流程3.1、prepareRefresh3.2、obtainFreshBeanFactory1.容器简介什么是容器?Java应用中,对象与对象之间往往存在各种复杂的依赖,对象的构建也会变得越来越复杂,如

2021-11-08 16:14:05 4413 1

原创 Spring+AOP+源码解析

文章目录前言本文使用的调试代码IOC 容器管理 AOP 实例ProxyFactory 详解基于注解的 Spring AOP 源码分析闲聊 InstantiationAwareBeanPostProcessor小结之前写过 IOC 的源码分析,那篇文章真的有点长,看完需要点耐心。很多读者希望能写一写 Spring AOP 的源码分析文章,这样读者看完 IOC + AOP 也就对 Spring 会有比较深的理解了。今天终于成文了,可能很多读者早就不再等待了,不过主要为了后来者吧。本文不会像 IOC 源码分析

2021-10-11 11:28:47 112

原创 Spring+IOC+容器源码分析

Spring 最重要的概念是 IOC 和 AOP,本篇文章其实就是要带领大家来分析下 Spring 的 IOC 容器。既然大家平时都要用到 Spring,怎么可以不好好了解 Spring 呢?阅读本文并不能让你成为 Spring 专家,不过一定有助于大家理解 Spring 的很多概念,帮助大家排查应用中和 Spring 相关的一些问题。本文采用的源码版本是 4.3.11.RELEASE,算是 5.0.x 前比较新的版本了。为了降低难度,本文所说的所有的内容都是基于 xml 的配置的方式,实际使用已经很少人

2021-10-11 09:37:26 116

原创 阿里+Sentinel+源码解析

本文介绍阿里开源的 Sentinel 源码,GitHub: alibaba/Sentinel,基于当前(2019-12)最新的 release 版本 1.7.0。总体来说,Sentinel 的源码比较简单,复杂的部分在于它的模型对于初学者来说不好理解。虽然本文不是很长,最后两节还和主流程无关,但是,本文对于源码分析已经非常细致了。阅读建议:在阅读本文前,你应该至少了解过 Sentinel 是什么,如果使用过 Sentinel 或已经阅读过部分源码那就更好了。另外,本文不涉及到集群流控。由于很多读者也

2021-10-09 16:26:58 236

原创 RateLimiter+源码分析(Guava+和+Sentinel+实现)

本文主要介绍关于流控的两部分内容。第一部分介绍 Guava 中 RateLimiter 的源码,包括它的两种模式,目前网上大部分文章只分析简单的 SmoothBursty 模式,而没有分析带有预热的 SmoothWarmingUp。第二部分介绍 Sentinel 中流控的实现,本文不要求读者了解 Sentinel,这部分内容和 Sentinel 耦合很低,所以读者不需要有阅读压力。Sentinel 中流控设计是参考 Guava RateLimiter 的,所以阅读第二部分内容,需要有第一部分内容的背景

2021-10-09 16:25:31 285

转载 Mysql(四)MVVC和BufferPool缓存机制

文章目录1、MVCC多版本并发控制机制1.1、undo日志版本链与read view机制详解1.2、原理分析2、BufferPool缓存机制1、MVCC多版本并发控制机制MVCC(Multi-Version Concurrency Control) :全称为多版本并发控制。是用来保证并发事务的隔离性的。比如Mysql在可重复读隔离级别下同样的sql查询语句在一个事务里多次执行查询结果相同,就算其它事务对数据有修改也不会影响当前事务sql语句的查询结果。mysql中对于一行数据的读和写两个操作默认是不会

2021-07-14 15:57:24 202

原创 Netty 编解码与TCP拆包粘包

文章目录1、编解码protostuff编解码实现2、Netty粘包拆包解决方案学习地址:https://dongzl.github.io/netty-handbook/#/1、编解码Netty涉及到编解码的组件有Channel、ChannelHandler、ChannelPipe等,先大概了解下这几个组件的作用。ChannelHandlerChannelHandler充当了处理入站和出站数据的应用程序逻辑容器。例如,实现ChannelInboundHandler接口(或 ChannelInboun

2021-06-27 13:10:05 120 1

原创 面试问题总结

文章目录1、short i = I+1 和 i+=1 问题2、Redis设置过期时间原子性问题3、Spring事务失效的场景4、Spring事务的传播行为总结一下面试的时候没答好的问题1、short i = I+1 和 i+=1 问题short i = 1; i = i+1;说明: 上面的代码会发生编译器错误,即编译过不去,会提示Add cast to short;short i = 1; i += 1;这里不会报错。解析:对于short i =1;i = i+1;由于1是int类

2021-06-23 20:58:24 81

转载 RocketMq 实践问题

一、使用RocketMQ如何保证消息不丢失?这个是在面试时,关于MQ,面试官最喜欢问的问题。这个问题是所有MQ都需要面对的一个共性问题。大致的解决思路都是一致的,但是针对不同的MQ产品又有不同的解决方案。分析这个问题要从以下几个角度入手:1、哪些环节会有丢消息的可能?其中,1,2,4三个场景都是跨网络的,而跨网络就肯定会有丢消息的可能。然后关于3这个环节,通常MQ存盘时都会先写入操作系统的缓存page cache中,然后再由操作系统异步的将消息写入硬盘。这个中间有个时间差,就可能会造成消息丢失。

2021-06-20 20:23:29 258

原创 RocketMq报错 no route info 解决方案

可能出现的问题:1、没有创建rocketMq存储文件夹,broker日志也会报错2、没有设置自动创建topic,启动的时候访问的ip跟broker.config配置中的ip不一样也会报错的。 nohup sh mqbroker -n localhost:9876 autoCreateTopicEnable=true &3、客户端的版本与Mq版本不一致也可能会报错...

2021-06-19 12:49:27 577 1

原创 1、Elasticsearch基础入门

文章目录1、ES简介2、ES安装启动2.1、安装2.2、启动3、ES的数据格式4、索引操作4.1、创建索引4.2、查看索引4.3、删除索引5、文档操作5.1、创建文档5.2、查看文档5.3、修改文档5.4、删除文档6、ES的环境6.1、单机 & 集群6.2、集群搭建7、ES核心知识7.1、核心概念7.1.1、索引(Index)7.1.2、文档(Document)7.1.3、映射(Mapping)7.1.4、分片(Shards)7.1.5、副本(Replicas)7.1.6、分配(Allocation

2021-06-09 15:02:37 243

原创 Seata(一) 服务配置以及启动

文章目录Seata 介绍Seata 简介Seata 演进历史Seata 设计理念Seata 的三大组件seata 实现的 2PC 与传统 2PC 的区别Seata Server 安装Seata Server 下载Seata Server 配置Seata Server 的坑Seata 介绍Seata 简介2019 年 1 月,阿里巴巴中间件团队发起了开源项目 Fescar(Fast & Easy Commit And Rollback),其愿景是让分布式事务的使用像本地事务的使用一样,简单和高效

2021-05-31 10:22:02 4109

原创 分布式事务基础

文章目录前言术语分布式理论分布式事务基础事务本地事务分布式事务分布式事务协议两阶段提交协议(2PC)前言术语TX 协议:应用或者应用服务器与事务管理器的接口XA 协议:全局事务管理器与资源管理器的接口。XA 是由 X/Open组织提出的分布式事务规范,该规范主要定义了全局事务管理器和局部资源管理器之间的接口,主流的数据库产品都实现了 XA 接口。XA接口是一个双向的系统接口,在事务管理器以及多个资源管理器之间作为通信桥梁。之所以需要 XA是因为在分布式系统中从理论上讲两台机器是无法达到一致性状态的

2021-05-31 09:13:57 126

原创 shardingJdbc的LocalDateTime问题

今天在搭建ShardingJdbc模块的时候遇到了一个类型转换的问题,问题如下:在结果集的映射的时候报错了。在网上搜索的解决方案是更新mybatis的版本或者是什么更新Druid的版本,都尝试了,目前使用的版本如下: <dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>sharding-jdbc-spring-boot-starter<

2021-05-27 11:16:14 2884 6

原创 Sleuth+Zipkin链路追踪

文章目录Sleuth简介相关术语使用Sleuth+zipkin引入依赖配置下载并启用zipkin启动服务并测试Sleuth简介Sleuth是Spring Cloud的组件之一,它为Spring Cloud实现了一种分布式追踪解决方案,兼容Zipkin,HTrace和其他基于日志的追踪系统,例如 ELK(Elasticsearch 、Logstash、 Kibana)。相关术语Sleuth引入了许多 Dapper中的术语:Span :基本的工作单元。无论是发送一个RPC或是向RPC发送一个响应都

2021-05-26 16:35:26 235

原创 Feign源码分析

文章目录FeignClientd注册FeignClient的组成FeignClientd注册直接进入正题:从@EnableFeignClients开启Feign的注解开始分析@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.TYPE)@Documented@Import(FeignClientsRegistrar.class)public @interface EnableFeignClients 注解注入了FeignClient

2021-05-26 15:27:59 112 1

原创 Ribbon原理与Nacos的服务发现原理分析

文章目录Ribbon原理分析1、getLoadBalancer2、getServer3、executeRibbon原理分析Ribbon是使用拦截器来实现服务的远程调用的,源码如下:public class LoadBalancerAutoConfiguration { @LoadBalanced @Autowired(required = false) private List<RestTemplate> restTemplates = Collections.emptyList(

2021-05-26 12:25:13 979 2

空空如也

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

TA关注的人

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