自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Nacos架构 & 原理】内核设计之Nacos寻址机制

可以想象下,当你新增一个 Nacos 节点时,需要去手动修改每个 Nacos 节点下的 cluster.conf 文件,这是多么辛苦的一件工作,或者稍微高端一点,利用 ansible 等自动化部署的工具去推送 cluster.conf 文件去代替自己的手动操作,虽然说省去了较为繁琐的人工操作步骤,但是仍旧存在一个问题——每一个 Nacos 节点都存在一份 cluster.conf 文件,当 Nacos节点启动时,会读取该文件的内容,然后将文件内的 IP 解析为节点列表,调用。的内容信息,这样,运维人员。

2024-10-02 12:54:18 255

原创 【Nacos架构 & 原理】内核设计之Nacos通信通道

(当前实现版本)人工管控方案:集群视角的系统负载控制台,提供连接数,负载等视图(扩展新增连接数,负载,CPU 等信息,集群间 report 同步),实现人工调节每个 Server 节点的连接数,人工触发reblance,人工削峰填谷。(未来终态版本)自动化管控方案:基于每个 server 间连接数及负载自动计算节点合理连接数,自动触发reblance,自动削峰填谷。核心的策略是客户端+服务端双向调节策略,客户端随机选择+服务端运行时柔性调整。,http 短连接性能压力巨大,未来 Nacos 需要。

2024-10-01 19:57:35 598

原创 【Nacos架构 & 原理】服务发现模块之Nacos注册中心的设计原理

这种健康检查方式的多样性非常重要,这样可以支持各种类型的服务,让这些服务都可以使用到Nacos的负载均衡能力。使用心跳上报方式维持活性,发送心跳的周期默认是5秒,Nacos服务端会在15秒没收心跳后将实例设置为不健康,在30秒没收到心跳时将这个临时实例摘除。Nacos试图做的是将服务端负载均衡与客户端负载均衡通过某种机制结合起来,提供用户扩展性,并给予用户充分的自主选择权和轻便的使用方式。Nacos目前的一致性协议实现,一个是基于简化的Raft的CP一致性,一个是基于自研协议的Distro的AP一致性。

2024-10-01 15:29:39 636

原创 【Nacos 架构 & 原理】服务发现模块之Nacos注册中心服务数据模型

命名空间(Namespace):Nacos 数据模型中最顶层、也是包含范围最广的概念,用于在类似环境或租户等需要强制隔离的场景中定义。Nacos 的服务也需要使用命名空间来进行隔离。分组(Group):Nacos 数据模型中次于命名空间的一种隔离概念,区别于命名空间的强制隔离属性,分组属于一个弱隔离概念,主要用于逻辑区分一些服务使用场景或不同应用的同名服务,最常用的情况主要是同一个服务的测试分组和生产分组、或者将应用名作为分组以防止不同应用提供的服务重名。服务名(Name)

2024-09-29 14:08:14 851 1

原创 【Nacos 架构 & 原理】服务发现模块之Nacos健康检查机制

由于持久化服务的实例的在被主动删除前一直存在的特性,探活的定时任务会不断探测服务的健康状态,并且将无法探测成功的实例标记为不健康。但是有些时候会有这样的场景,有些服务不希望去校验其健康状态,**Nacos也是提供了对应的白名单配置,用户可以将服务配置到该白名单,那么 Nacos 会放弃对其进行健康检查,**实例的健康状态也始终为用户传入的健康状态。临时实例只会对其被负责的注册中心节点发送心跳信息,注册中心服务节点会对其负责的永久实例进行健康探测,在。进行临时实例的注册,通过 Nacos 的。

2024-09-28 20:43:23 713

原创 【MySQL实战45讲4-5】索引

索引的出现其实就是为了提高数据查询的效率,就像书的目录一样。一本500页的书,如果你想快速找到其中的某一个知识点,在不借助目录的情况下,那寻找起来是很费劲的。同样,对于数据库的表而言,索引其实就是它的“目录”。

2024-09-28 14:17:09 872

原创 【MySQL实战45讲3】事务隔离

当前值是 D,但是在查询这条记录的时候,不同时刻启动的事务会有不同的 readview。如图中看到的,在视图 1、2、3 里面,这一个记录的值分别是 A、B、D,同一条记录在系统中可以存在多个版本,就是数据库的多版本并发控制(MVCC)。同时你会发现,即使现在有另外一个事务正在将 D 改成 E,这个事务跟 readview 1、2、3 对应的事务是不会冲突的。到了月底你要做数据校对,也就是判断上个月的余额和当前余额的差额,是否与本月的账单明细一致。记录上的最新值,通过回滚操作,都可以得到前一个状态的值。

2024-09-23 23:47:20 712

原创 【Java并发编程的艺术2】Java并发机制的底层实现原理

Java编程语言允许线程访问共享变量,为了确保共享变量能被准确和一致地更新,线程应该确保通过排他锁单独获得这个变量。术语英文单词术语描述内存屏障一组处理器指令,用于实现对内存的顺序限制缓冲行cache lineCPU高速缓存中可以分配的最小存储单位。处理器填写缓存行时会加载整个缓存行,现代CPU需要执行几百次CPU指令原子操作不可中断的一个或一系列操作缓存行填充当处理器识别到从内存中读取操作数是可缓存的,处理器读取整个高速缓存行到适当的缓存(L2,L3,L3的或所有)写命中。

2024-09-21 22:00:19 1137

原创 JVM学习笔记:类加载器

类加载器是一个负责加载类的对象。是一个抽象类。给定类的二进制名称,类加载器应该尝试定位或生成构成类定义的数据。典型的策略是将名称转换为文件名,然后从文件系统中读取该名称的"类文件"。每个Java类都有一个引用指向加载它的。不过,数组类不是通过创建的,而是JVM在需要的时候自动创建的,数组类通过方法获取的时候和该数组的元素类型的是一致的。由此可得类加载器是一个负责加载类的对象,用于实现类加载过程中的加载这一步。每个Java类都有一个引用指向加载它的数组类不是通过。

2023-12-04 15:15:46 1524

原创 JVM学习笔记:类加载机制

对于初始化阶段,虚拟机严格规范了。

2023-11-30 23:00:53 708

原创 JVM学习笔记:垃圾回收

当垃圾回收器准备回收一个对象时,如果发现它还有虚引用,就会在回收对象的内存之前,把这个虚引用加入到与之关联的引用队列中。它的“单线程”的意义不仅仅意味着它只会使用一条垃圾收集线程完成垃圾收集工作,更重要的是它在进行垃圾收集工作的时候必须暂停其他所有的工作线程(“stop the world”),直到它收集结束。扫描堆中的对象,看是否能够沿着GC ROOT对象为起点的引用链找到该对象,能够达到的对象都是存活的,不可达的对象可被回收。Java的自动内存管理主要是针对对象内存的回收和对象内存的分配。

2023-11-29 22:37:10 762 1

原创 JVM学习笔记:内存结构

主要存放了编译器可这的各种数据类型(boolean、byte、char、short、int、float、long、double)、对象引用(reference类型,它不同于对象本身,可能是一个指向对象起始地址的引用指针,也可能是指向一个代表对象的句柄或其他与此对象相关的位置)。因为永久代(方法区实现)的GC回收效率太低,只有在整堆收集(Full GC)的时候才会被执行GC。: 在编译时,Java 类中的方法和字段不是通过直接的内存地址表示,而是通过符号引用表示,它是一种符号化的引用,类似于符号表中的条目。

2023-11-28 21:32:30 913

原创 RocketMQ学习笔记:秒杀+分布式锁 Redis RocketMQ SpringBoot

【代码】RocketMQ学习笔记:秒杀+分布式锁 Redis RocketMQ SpringBoot。

2023-11-02 15:31:30 200 1

原创 RocketMQ学习笔记:多种发送消息模式Demo

producer.send中的SendCallback是异步执行的,为了在测试中体现其异步性,在send方法后面先打印一句“我先执行”后挂起,查看异步执行的回调方法SendCallback是否执行。我们往一个主题里面发送消息的时候,根据业务逻辑,可能需要区分,比如带有tagA标签的被A消费,带有tagB标签的被B消费。例如:下订单业务,提交一个订单后就可以发送一个延时消息,30分钟后去检查这个订单的状态。分区有序:当有多个queue参与的时候,相对每个queue,消息都是有序的。

2023-10-28 13:51:08 235 1

原创 Redis学习笔记:缓存击穿及其解决,Redis结合SpringBoot

大量的请求同时查询一个key时,此时这个key正好失效了,就会导致大量的请求都打到数据库上面去。

2023-10-23 13:27:21 76

原创 Redis学习笔记:Bitmap结合SpringBoot自研布隆过滤器案例

由0和1状态表现的二进制位的bit数组。

2023-10-23 13:02:37 230

原创 Redis学习笔记:GEO结合SpringBoot案例 附近的地点推送

Redis中的GEO主要用于存储地理位置信息,并对存储的信息进行操作。包括:添加地理位置的坐标、获取地理位置的坐标、计算两个位置之间的距离、根据用户给定的经纬度坐标来获取指定范围内的地理位置集合。

2023-10-23 12:07:46 171

原创 Redis学习笔记: HyperLogLog结合SpringBoot案例 大量UV的Redis统计方案

Unique Visitor,独立访客,一般理解为客户ip需要考虑去重Page View,页面浏览量不用去重Daily Active User,日活跃用户量,登录或者使用了某个产品的用户数(去重复登录的用户)常用于反映网站、互联网应用或者网络游戏的运营情况Monthly Active User,月活跃用户。

2023-10-23 11:29:10 202

原创 Redis学习笔记:Redis与MySQL数据双写一致性 Java Canal配置Redis,MySQL步骤

文件位置在mysql的安装目录下,博主的目录如下:D:\Environments\Mysql\mysql-8.0.34-winx64打开。

2023-10-19 23:02:48 179 1

原创 Redis学习笔记:缓存双写一致性的更新策略

缓存双写一致性指:数据库中的数据与缓存中的数据一致。由于高并发的场景,所以缓存双写一致性实际是指最终一致性,而非实时一致性。

2023-10-19 21:52:31 128 1

原创 Redis踩坑记录:Windows Redis设置密码无效 解决过程记录

根据网上资料,得知设置redis密码需要在redis安装目录下的redis.windows.conf中找到requirepass,将注释去掉,并设置自己需要的密码。通过反复查阅资料,发现,系统设置了redis自动启动,如果redis设置了自动启动,则无法设置redis启动时加载配置文件,所以需要取消redis自动启动。最后通过redis-cli中检查密码是否设置成功,但是与大多数教程不同的是,我的设置没有生效,仍然不需要密码就可以set key value。,设置redis启动时加载配置文件。

2023-10-14 22:46:34 1919 2

原创 Redis学习笔记:Redis扣减库存案例 逐步优化

例如有三个用户并发执行,三个用户都获取了stock的值后进入if判断语句,现在三者获得的stock都是初始值298,那么该业务执行后stock的值是297,但是实际上还多卖给了两个用户,出现超卖现象。:出现当前获取锁的用户需要的执行时间大于分布式锁的超时时间,自动释放后,下一个用户获取分布式锁,而当前用户会执行释放锁的操作,就把下一个用户获取的锁释放了,以此类推。:将分布式锁的value设置为UUID,每次删除之前,判断当前锁的value与执行删除锁逻辑的线程的UUID是否相同,不同则等待,相同则删除。

2023-10-10 19:09:21 849 2

原创 Mybatis踩坑:使用@Alias,启动报错To display the conditions report re-run your application with ‘debug‘ enabled

为了避免在使用Mybatis的时候,反复在mapper.xml文件中指定参数类型(ParamterTyp)和返回类型(resultType)的完整包名,决定在实体类上使用@Alias注解来简化操作。使用@Alias注解前。使用@Alias注解后。

2023-09-23 19:13:53 376 2

空空如也

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

TA关注的人

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