要做微服务首先得把全链路监控搭起来,参考过一些方案,拿其中唯品会的方案来举例:
调用链信息分别存储于 HBase
和 ElasticSearch
中,ElasticSearch 单纯承担起类似于 Solr 的角色,查询的时候只需要通过 ElasticSearch 的倒排索引查到相关的 Rowkey 再去 HBase 里通过 Rowkey 查得完整调用链信息,并将起展现出来。
我知道 ElasticSearch 本身其实可以做可靠性存储的,为什么不直接将 Trace 调用链信息全量存入 ElasticSearch 中,这里借用 HBase 意义何在?
如果是为了后续的批处理计算,也感觉不妥,ES 也有 hadoop插件,可以做集成。
如果说 HBase 能够承受更大的吞吐,感觉也不对,ES 能承受的吞吐也不小。
关于这个问题我依旧思考不出个所以然来,忘各位给出见解,谢谢了!
唯品會是如何設計的不是太清楚。
我知道 twitter 開源的
zipkin
分布式追踪系统是直接将trace
信息直接存储在elasticsearch
中的。当然zipkin
还支持很多其它的存储方式如mysql/nosql
。 zipkin條條大路通羅馬。我認為不需要太糾結於別人為什麼要這樣選擇,更多應該關注別人做成了什麼。這當中有很多原因外人是無法知道的,也許就是個人便好,也許跟公司內部技術有關,也許有其它考量。
但是至少有一點是可以確定的要實現相同的功能,並不一定要選擇
hbase + elasticsearch
才能完成。hbase算是基本版本。
想要做分析還是得用es。