分类 源码解析 下的文章

elasticsearch index、create和update的源码分析

社区里面有人问了如下一个问题:

执行 bulk 索引文档的时候,用 index 或者 create 类型并且自定义 doc id 的情况下,是否会像 update 一样每次都要去 get 一遍原始文档? 比如下面的这条命令:
```
POST _bulk

{ "index" : { "_index" : "test", "_type" : "type1", "_id" : "1" } }
{ "field1" : "value1" }
{ "create" : { "_index" : "test", "_type" : "type1", "_id" : "3" } }
{ "field1" : "value3" }
```

问题出现的原因是他们在 bulk 测试的时候遇到了写性能的问题,而正巧社区里面前几天有这么一个类似的帖子,说的是 es 5.x 版本里面做 update 操作的性能问题。虽然和这个问题不完全一致,但都涉及到 es 索引数据的部分。

侯捷老师说:“源码面前,了无秘密”,那我们就来简单看下 es 这部分的相关代码,以便回答开篇提出的问题。

- 阅读剩余部分 -

Jafka分布式特性研究

通过前面几篇文章,相信大家已经对jafka的使用和其源码结构有了一定的了解,接下来笔者将尝试去向大家讲解jafka是如何实现其分布式特性的。所谓分布式,在jafka就是producer broker和consumer都是可以分布在多台机器上运行的。当然,producer的分布式是无需多言的,因为它就相当于一个客户端,多个producer之间不会协作或互相影响,所以也谈不上分布式。但broker和consumer就不同了,本文就从broker和consumer两个方面来讲。首先我们来看jafka实现分布式的基础zookeeper的基本特性。

- 阅读剩余部分 -