Author: admin
Kafka基本架构和概述
我想大家对Kafka或多或少都有所耳闻,那么它究竟是什么呢?其实说白了也很简单,它其实就是一个分布式的消息队列,也就是我们通常所说的消息的发布和订阅,只是它的目标更倾向于高吞吐和低延迟。那我们就从头开始来看看Kafka究竟是如何诞生的。 发布/订阅消息 在正式开始聊Kafka之前,我们来看看什么是消息的发布和订阅。我们先来看这样一个例子:系统中有两个应用程序,然后我们有一个metrics的dashboard,当这两个应用程序开始运行时,会把相关的metric数据发送到dashboard所在的server,然后就可以把它们的metric显示出来,简单的架构如下所示: 这种架构看起来还是很清晰的,但是当我们的系统变得稍微庞大起来,有了更多的应用,也需要有了不同的metric处理方式,比如我们既需要显示metrics的数据到一个UI上,又需要分析这个metric或者根据metric的数据来做一些monitor发送alerts之类的,那整个系统就可能变得复杂起来,甚至有时你会觉得有一些系统,比如monitor其实并不需要你一直把metric发送过去,最好是做个poll的形式,让monitor主动找application来拿数据,于是你的系统变成了下面这样: 这样一来整个系统看起来就很乱,程序员的特性让你蠢蠢欲动,捋起袖子来refactor一下呗,你想啊想,要是能在中间加一层,让所有的应用端把数据都发送给这一层,然后对这个数据感兴趣的server再统一到这一层来拿就完美了,于是你的想法就变成了下面这样的一个架构:...
ElasticSearch进阶之输入匹配
我们在日常使用搜索引擎的时候会发现随着我们的输入,会出现一些可以选择的提示,如下图所示,我们称之为即时搜索或者输入搜索。本文就来讨论一下,ElasticSearch在这个方面是如何实现的。 就像上图所示的,在我们输入了johnnie walker bl之后,可以立即显示一些建议,比如johnnie walker...
Cassandra的使用和介绍
本周我们邀请到了Xiaoyu给大家带来了关于《Cassandra的使用和介绍》的讲座,相关的内容总结如下: Xiaoyu使用的slides。 一篇很不错的介绍Cassandra的过去,现在和未来的文章。 这篇文章总结了Cassandra在各大公司中使用的场景。 Wikipedia关于Dynamo的介绍,里面说明了和DynamoDB的关系。...
AppDynamics, Dynatrace, OpenTelemetry的介绍与比较
本周我们很开心邀请到了Lisa给我们带来了主题为《AppDynamics, Dynatrace, OpenTelemetry的介绍与比较》的讲座,相关的总结如下: Lisa使用的slides。 我们上次关于Metrtic实现的讨论总结。...
十小时写出一个活动通知的微信小程序
熟悉我的人都知道,我们每周都会举办一次分布式系统话题的讨论(对活动感兴趣的同学可以参考这个网址:https://donggeitnote.com/2021/07/24/topic-introduction/,当然这个不是我们今天讨论的重点),这个讨论的活动安排会发布到各个微信群,这样感兴趣的同学就可以来参加了。在上周五因为我个人的失误,没有更新活动通知中的时间,于是就导致这个活动的消息需要重新发布,这其实给帮忙发布活动的同学带来了很大的困扰。虽然最后也解决了问题,但是过程并不是很开心。所以我就想应该写个小程序来通知一下,这样一方面可以解决我们遇到的问题,比如哪次的时间再写错了,我们只要更新一下小程序内的内容就可以了。另外一方面也可以让一些主动想了解讨论话题的同学能够有一个统一的地方来发现话题。说做就做,一到周六我就开始来着手搞这件事情了。 需求分析 需求大概是我们第一步需要了解清楚的东西,在真正着手之前,我把最基本的需求简单列了一下,如下所示: 活动管理页面 这个页面是让活动发布者管理已经创建的活动以及发布新的活动,主要的功能包括以下几个方面:...
ElasticSearch进阶之停用词处理
我想停用词(Stop Words)这个概念对大家来说并不陌生,通常来说,停用词是在一个语言中出现的频率很高的词语(和文本或者语言相关,同样的词在不同的语言中出现的频率可能完全不同),比如我们常见的the, is, and等等,这些词很难进行精确的搜索,也很容易影响搜索的性能。所以在ElasticSearch中可以对他们进行特殊处理,当然ElasticSearch早期对他们进行处理的另外一个主要原因是为了节省磁盘和memory的空间,但是随着时间的推移,单纯从存储空间来看,其实是否要特殊处理可能已经不是很重要了(当然准确的说在位置和偏移信息的保存中,它还是会占用很多存储空间的)。 去除停用词...
Raft基本原理和实现的深入介绍
本周感谢Michael给我们带来了《Raft基本原理和实现的深入介绍》,很详细的slides,大家的讨论也很激烈,我们还有很多话题没有讨论完成,欢迎大家继续在微信群进行讨论。相关的总结如下: Michael使用的slides。 Raft官网,里面有paper的链接和相关的各种实现。 关于新节点加入立即要成为leader的一种处理方法介绍。 一篇不错的介绍Raft和其各种场景的文章。...
ElasticSearch进阶之邻近匹配
我们在之前的文章中介绍过标准的文本搜索,它会进行各个关键词的搜索,然后根据TF/IDF来计算相关性,最后再返回结果。这样的搜索能够根据我们搜索的关键词是否在相关的文本中存在来进行匹配,但是这还不够,它忽略了关键词之间的关系。本文就来介绍如何加入关键词之间关系的处理。 引言 我们来看一个例子,现在有下面两个文本: Dog beats...
Recent Comments