kaspterio code as a hacker

  • Basic of Elasticsearch

  • 本文对应的 slide 见:Basic of Elasticsearch slide

    Introduction

    es是什么

    Elasticsearch是基于Apache lucene的分布式的开源检索引擎,lucene本身只是全文检索的java lib,直接拿来用的话需要集成到自己的应用当中,而es则是一个完整的系统,类似的还有apache的solr。es的索引和搜索部分是完全基于lucene实现,此外它在lucene之上主要提供了如下几个方面的功能:

    1) 分布式:es集群可以很方便的横向扩展以及做到高可用,这在大数据时代是必备的。es的横向扩展能力包括两个方面,索引文件的存储分布在集群的多个节点上,以及搜索处理在多个节点间负载均衡。高可用也是分布式系统必须考虑的问题,和其他系统一样,es通过副本来解决某个节点down掉后索引不可用问题。

    read more...
  • Kafka internal overview

  • WARNING: 本文完全来自Kafka的官方文档,结合自己的理解和提炼,属于二手知识,如果需要深入了解Kafka,建议直接阅读官方文档。主要关注两个部分:1)Kafka对外提供的行为和语义保证,2)Kafka的设计概要


    Introduction

    Kafka一些行为的要点:

    kafka有个可配置的日志保留时间, 过了这个时间的日志,无论消费与否都被清除

    消费者维护的仅有的metadata就是offset,非常轻量级,所以不用担心消费者很多,kafka处理不过来的问题。

    read more...
  • Jackson的一个坑

  • 问题发现

    在维护的一个proxy服务的监控里发现一个现象: YoungGC的时间随着时间的推移稳定增长,直到触发一次fullgc,一直不知道是什么原因。

    直到最近对这个服务用 JProfiler 做了一下 profile,结果发现了一个有趣的地方: jprofiler

    整个服务的24.3%的时间都花在了CafeServiceImpl里,20.6%的时间都花在了 Jackson 的反序列化上。展开调用栈发现 Jackson 主要是在调用 String.intern()。 read more...