随笔分类 - 呕心沥血
摘要:写在前面 聊一聊MyBatis的核心概念、Spring相关的核心内容,主要结合源码理解Spring是如何整合MyBatis的。(结合右侧目录了解吧) MyBatis相关核心概念粗略回顾 SqlSessionFactory 创建SqlSession的工厂 SqlSession sql请求的会话,通过S
阅读全文
摘要:写在前面 聊一聊MyBatis是如何使用装饰者模式的,顺便回顾下缓存的相关知识,可以看看右侧目录一览内容概述。 装饰者模式 这里就不聊它的概念了,总结下就是套娃。利用组合的方式将装饰器组合进来,增强共同的抽象方法(与代理很类似但是又更灵活) MyBatis缓存 回忆下传统手艺 <!-- 先进先出,6
阅读全文
摘要:概述 本文描述下Spring的实例化、初始化、销毁,整个SpringBean生命周期,聊一聊BeanPostProcessor的回调时机、Aware方法的回调时机、初始化方法的回调及其顺序、销毁方法的回调及其顺序、重要的BeanPostProcessor的介绍。 开头是一张我画的调用流转图,然后就是
阅读全文
摘要:概述 本文沉淀Elasticsearch性能优化方式,包含写入、搜索优化。 推荐结合《Elasticsearch必备原理理解》一起食用~ 一、写入速度优化 在Elasticsearch的默认设置下,是综合考虑数据可靠性、搜索实时性、写入速度等因素的。当离开默认设置、追求极致的写入速度时,很多是以牺牲
阅读全文
摘要:概述 ApolloPortal创建灰度后都做了什么呢?Apollo是如何维护主版本与灰度版本关系的呢? 其实创建灰度非常简单,可以看到下图中“Cluster”表结构中的“ParentClusterId”字段。这个就是维护灰度关系的核心。 在创建灰度的时候,Apollo会根据当前Cluster、Nam
阅读全文
摘要:入口 ApolloApplicationContextInitializer (它实现了 ApplicationContextInitializer接口,并重写了initialize方法)。 ApplicationContextInitializer简单介绍: ApplicationContextI
阅读全文
摘要:前两篇内容 《深入理解Apollo核心机制之配置读取——前言》 《深入理解Apollo核心机制之配置读取——ConfigService定时扫描》 概述 读取配置除了默认5分钟间隔去轮询接口拉取配置,还有客户端主动长轮询ConfigService,等待通知后主动拉取配置。本文就看看客户端是如何开始客户
阅读全文
摘要:#概述 之前我们了解了,客户端会每秒(默认)长轮询Config Service,等待通知,然后去主动拉取配置文件。本文主要跟进Config Service主动轮询ReleaseMessage表,并通知对应监听器的源码,最终终止客户端长轮询的源码。附上之前的链接《深入理解Apollo核心机制之配置读取
阅读全文
摘要:#前言 Apollo是当下较为火热的配置中心,顾名思义自然是管理配置的,那么它是如何获取配置的呢?本文会简单介绍相关机制,很多东西自然解释得不到位,后续会有单独章节深追源码看具体实现的。 #配置获取方式 Apollo有两种方式获取配置: 1)客户端定时请求Config Service的配置读取接口;
阅读全文
摘要:#RocketMQ基本API使用 基于原生客户端 <dependency> <groupId>org.apache.rocketmq</groupId> <artifactId>rocketmq-client</artifactId> <version>4.2.0</version> </depen
阅读全文
摘要:RocketMQ基本原理 基础概念 消息模型 RocketMQ主要由Producer、Broker、Consumer三部分组成,其中Producer负责生产消息,Consumer负责消费消息,Broker负责存储消息。Broker在实际部署过程中对应一台服务器,每个Broker可以存储多个Topic
阅读全文
摘要:Elasticsearch读写原理 心得: 主分片、副本分片的存在类似各大组件的”主从结构“,需要注意的是,Elasticsearch的写入是针对主分片,而读操作是主分片、副本分片都可以(采用随机轮询策略)。所以——适当增加”副本分片数“将会减缓对主分片的查询压力**,需要注意的是将会消耗同样的内存
阅读全文