源码解析
微信号dafiner
小龙女吃蜂蜜
展开
-
spring容器启动时,convert在什么时候进行了初始化
在spring容器进行初始化的过程中,每到一个阶段,都会发布相应的SpringApplicationEvent通知监听相应event的listener。BackgroundPreinitializer就是一个ApplicationListener。而BackgroundPreinitializer 后台预初始化器在监听到ApplicationStartingEvent事件时,开始做相应的初始化。初始化的内容包括:@Overridepublic void run() { runSa.原创 2020-10-25 23:14:41 · 430 阅读 · 2 评论 -
[源码解析] elastic search 8.0.0 的查询原理(一)
每个查询请求都是先将request封装为一个task,然后再异步执行,如下所示public <Request extends ActionRequest, Response extends ActionResponse> Task registerAndExecute(String type, TransportAction<Request, Response> action, Request request, B原创 2020-09-14 23:29:06 · 369 阅读 · 0 评论 -
[源码解析] elastic search 的查询原理(二)
查询是分为query阶段、fetch阶段和expand阶段,共3个阶段。重点是前2个阶段。在上篇文章说的是query阶段,接下来说fetch阶段。fetch是要解析query阶段的result的//比如有5个分片,当所有的分片都查询完后,开始进入下一个阶段private void successfulShardExecution(SearchShardIterator shardsIt) { final int remainingOpsOnIterator; if原创 2020-09-14 23:16:08 · 343 阅读 · 0 评论 -
[源码解析] canal1.1.5 Mac调试环境搭建
canal的源码构建工具使用的是maven.对国内程序员而言相对比较熟悉,因为我发现kafka、spring、elastic search 这些国外开发的框架使用的构建工具都是gradle。一、下载源码git地址https://github.com/alibaba/canal二、使用idea 构建把git地址贴进去,开始下载三、执行构建命令在canal工程的根目录下执行根目录位置mvn clean install -Dmaven.test.skip=t.原创 2020-09-11 12:19:20 · 508 阅读 · 0 评论 -
[源码解析] elastic search 8.0.0 的启动过程(四)
本文继续分析启动流程1、ShardLimitValidator集群中每个node上分片的数量最大默认是10002、MetadataCreateIndexService主要负责处理创建索引3、ActionModule里面有一个入参IndexScopedSettings表示索引层面一些内置的参数值,共计120个,里面有很多参数是经常接触的。我们选几个典型的。比如index.search.slowlog.threshold.fetch.trace -> {Set.原创 2020-09-06 23:33:45 · 237 阅读 · 0 评论 -
[源码解析] elastic search 的查询原理
当用Chrome浏览器插件elastic header连接es服务器的时候,调用的api是GET /_nodeses服务器内部使用的handler是Netty4HttpRequestHandler看一下核心的堆栈信息图对于该API,es内置对应的操作是NodesInfoAction.INSTANCE对于Admin有2个变量。如下所示private final ClusterAdmin clusterAdmin;private final IndicesAdmin..原创 2020-09-08 10:18:54 · 146 阅读 · 0 评论 -
[源码解析] elastic search 8.0.0 的启动过程(三)
本文继续介绍elastic search启动流程中涉及的内容及自己的分析1、创建SearchModule和query、aggregations、suggesters相关的模块。创建该模块的意思就是将es本身内置的一些term、phrase等查询方式和plugin中提供的与查询相关的规则都注册到es中。内置的高亮规则及plugin中提供的高亮规则内置的一些评分规则及plugin中提供的高亮规则内置的对查询体的parse方式plugin中提供的,比如常见的WildcardQuery、T..原创 2020-09-05 23:25:22 · 182 阅读 · 0 评论 -
[源码解析] elastic search 8.0.0 的启动过程(二)
将截止到目前为止设计到的所有对象的配置文件收集起来,又是以list集合的方式,final List<Setting<?>> additionalSettings = new ArrayList<>();然后作为参数创建了一个NodeClient对象。如果Node是节点的静态表现方式,那NodeClient就是节点的动态表示方式,将会执行各种action。action是什么呢,我们到相应的场景再说,在这里可以简单理解为查询、新增文档等动作Plugin是es中放原创 2020-09-01 23:55:02 · 258 阅读 · 0 评论 -
[源码解析] elastic search 8.0.0 的启动过程(一)
启动的时候刚开始没有做啥,真正开始的执行的入口org.elasticsearch.cli.Command#execute1、创建Environment会利用到elasticsearch home中conf的配置文件,必填项在创建Environment之前先准备核心的关键是获取命令行传入进去的path.home的值,放到setting里。因为在创建Environment的时候,要依据该参数将里面的config、plugins、data、logs、bin、lib、modules原创 2020-08-30 20:54:29 · 1764 阅读 · 0 评论 -
[源码解析] elastic search 8.0.0 Mac调试环境搭建
阅读源码的第一步是搭建调试环境,笔者使用的版本信息是elasticsearch 8.0,Java14 ,IDEA工具,gradle 6.6.1.一、下载elasticsearch 8.0源码https://github.com/elastic/elasticsearch因为家里网速比较慢,使用的是zip包的方式...原创 2020-08-30 14:22:39 · 545 阅读 · 0 评论