前言

简单整理一些自己使用kafka的一些感受。

正文

一切都要回到真实的世界上, 计算机世界只是真实事件的一个缩影。

计算机世界有一个重要的东西,那就是数据库。

数据库记录着真实世界发生了什么,准确的说就是这个世界发生了什么然后产生了什么结果。

比如说一辆火车,那么数据库记录这辆火车是开启的开始停止的,或者说乘坐着几个人,也就是这辆火车对当前世界的状态。

有比如说,一个人,数据库里面记录着这个人的年龄、身高、性别等。也就是记录这个人的状态。

可以说数据库,是事物的状态机。

这个是满足以前的,但是呢,现在有一个新的需求了。 就是这辆火车,在A 站每一趟上去多少人下去多少人。

这似乎就不是某件事物的状态了,而是某个事件的状态了,也就是到底发生了什么事,时间、地点、任务等,而且是一个递增的关系。

如果将事件状态存储到数据库中,也是可以的(这里不要去考虑技术、性能这块)。 但是适合不适合呢?

无论是无关系数据库还是关系数据库,他们的表或者说集合吧,都是有固定结构的,无关系数据库不是说没有数据结构哈,而是说集合直接没有明确的关系。

但是描述一件事情好像是没有固定的结构的,当然了也可以有,但是这样无法准确的表述这件事了。

那么人们就定义了一种结构体,叫做log,就是日志,来描述这件事情发生了什么。那么日志如何管理呢?

kafka 制作出来作为一个日志管理器了。

如果不了解日志的重要性的话,初学者认为自己debug 调试的时候的日志,有啥管理的,有错误看下日志即可,还需要管理,难道是要统一管理?

这里的日志,不仅仅是我们项目中的debug日志或者线上的异常日志,还可以是表述业务中一件事情的状态,这个也是日志。

可以想象,原来我们数据库存储的是事务的状态,那么日志的是事件的状态,可想而知日志管理是多么重要。

那么日志如何管理呢? 想到的就是给日志加上分类,这个分类就是topic,也就是主题了。

现在日志有管理了,可以对其进行不同的分类了,比如定义了火车主题,里面有火车上停战的时候下了多少人、几点停战的的,还有火车的能源消耗,每分钟记录一次这样的事件、里面记录了能源的各种值、记录时间等。

有比如说一个账户主题,那么里面记录着用户权限的变化、 用户信息的变化等。

现在这个数据相当庞大了,当然了也有很多的需求需要解决,比如说有个需求就是分析火车的情况、另一个问题就是分析用户的某些情况,似乎一堆问题了。

那么如何解决分析这个大问题呢? 那就是把问题拆分。 需要分析用户的订阅用户主题,需要分析用户的,订阅用户主题,那么kafka 日志管理,就会将相应的日志推给各自的订阅者。

当然各自的订阅者分析问题,同样会产生事件状态,又可以产生另外一个主题,放在任何一个kafka日志管理器中,然后一些图表分析服务又可以订阅新的主题,产生了相应的表格,进行分析。

kafka的本质不是存储这些日志,而是用于管理的,把日志收集然后推送给相应的真正处理的系统,所以kafka 会有默认的清除时间,因为其本质就是来让你中转的,其也没有索引、查询这个概念。

正则的日志沉淀,可以使用其他工具,比如es。

现在了解了kafka 的诞生以及历史,那么下面就开始了解,kafka如何来做好这个日志管理器的吧。

下一节介绍一下kafka的设计。

kafka 第一次小整理(草稿篇)————整理一下自己的认知的更多相关文章

  1. kafka 第一次小整理(草稿篇)————演变[二]

    前言 简单整理一些kafka的设计. 正文 前文提及到log 的重要性,以及kafka在其中的作用,起着一个日志管理分发的作用,对于其他服务来说相当于新闻报社,订阅某种主题就会收到某类信息. 当人们意 ...

  2. kafka 第一次小整理(草稿篇)————分发的基本思路[三]

    前言 简单整理一下分发的基本思路. 正文 kafka 原本是做日志管理系统,主要是分发这块的. 那么如何做分发呢? 分发的是什么呢? 分发的其实是日志,日志是事件状态,kafka 内部就叫做Recor ...

  3. 微信小程序笔记整理--入门篇。

    7-2 微信小程序入门篇 准备篇 1.登录网址,https://mp.weixin.qq.com 注册一个微信小程序. 2.获取微信小程序appid,登录自己的小程序后台,在开发者设置中获得appid ...

  4. Webx小应用的实现整理与分析

    Webx小应用的实现整理与分析 初次在园子里与大家分享自己的所学,欢迎各种指点~ By 仰城 2013-08-07 学习一段时间webx.ibatis.spring以及maven的基本知识之后,应用它 ...

  5. Unite 2017 干货整理 优化篇

    Unite 2017 干货整理 优化篇 2017年05月16日 将Unite 2017的一些演讲做了整理.  本篇有内存,CPU.GC.UI.渲染性能指标.Tips几个小节.  内容持续整理中. 内存 ...

  6. Unite 2017 干货整理 同步篇

    http://www.kisence.com/2017/05/17/unite-2017-gan-huo-zheng-li-tong-bu-pian/ Unite 2017 干货整理 同步篇 2017 ...

  7. Java工程师笔试题整理[校招篇]

    Java工程师笔试题整理[校招篇]     隔着两个月即将开始校招了.你是不是也想借着这个机会崭露头角,拿到某些大厂的offer,赢取白富美.走上人生巅峰?当然如果你还没能打下Java基础,一定要先打 ...

  8. 微信小程序实战篇:商品属性联动选择(案例)

    本期的微信小程序实战篇来做一个电商网站经常用到的-商品属性联动选择的效果,素材参考了一点点奶茶. 效果演示:   商品属性联动.gif 代码示例 1.commodity.xml <!-- < ...

  9. 我的微信小程序第二篇

    在上一篇<我的微信小程序第一篇(入门)>中,很多人问我什么是微信小程序,在这里我要说一下这个是我的失误啦,我默认大家都知道微信小程序,其实可能行内人士都知道小程序,好多非行内朋友可能平时不 ...

随机推荐

  1. C#中的字符串拼接@,$

    转载自:https://blog.csdn.net/qq_40666620/article/details/101695138 一:@ @的意思是以@标注的字符出,其中所有的符号均为字符串符号,没有什 ...

  2. ORA-22922:nonexistent LOB value问题及listagg()函数

    1 现象及错误信息 在执行一次查询的过程,Oracle出现ORA-22922:nonexistent LOB value 的错误:根据提示,是在查询时没有找到lob对象: 2 问题分析 查看SQL,发 ...

  3. Java高质量博文链接集合

    1. 看完这个,Java IO从此不在难 https://www.jianshu.com/p/715659e4775f 2. Java 8 中的 Streams API 详解 https://www. ...

  4. LeetCode随缘刷题之最长回文子串

    这一题我用的相对比较笨的方法. 相对于大佬们用的动态规划法,比较复杂.但却更容易理解,我主要是通过记录下标来确定最长回文串的. package leetcode.day_12_06; /** * 给你 ...

  5. Solution -「NOI 2008」「洛谷 P3980」志愿者招募

    \(\mathcal{Description}\)   Link.   一项持续 \(n\) 天的任务,第 \(i\) 天需要至少 \(a_i\) 人工作.还有 \(m\) 种雇佣方式,第 \(i\) ...

  6. Solution -「LOCAL」客星璀璨之夜

    \(\mathcal{Description}\)   OurOJ.   给定坐标轴上的 \(2n+1\) 个坐标 \(x_1,x_2,\cdots,x_{2n+1}\),其中偶数下标的位置是一个小球 ...

  7. 探针配置失误,线上容器应用异常死锁后,kubernetes集群未及时响应自愈重启容器?

    探针配置失误,线上容器应用异常死锁后,kubernetes集群未及时响应自愈重启容器? 探针配置失误,线上容器应用异常死锁后,kubernetes集群未及时响应自愈重启容器? 线上多个服务应用陷入了死 ...

  8. suse 12 二进制部署 Kubernetets 1.19.7 - 第10章 - 部署kube-proxy组件

    文章目录 1.10.部署kube-proxy 1.10.0.创建kube-proxy证书 1.10.1.生成kube-proxy证书和秘钥 1.10.2.创建kube-proxy的kubeconfig ...

  9. 40多个丰富的QQ特效代码,非常实用哦!

    Hi,我们好,我是GG!微信和QQ是现在干流的两款社交东西.有人说微信现已完全替代了QQ,现已没有人玩QQ了.可是小雨却不这么以为,毕竟微信和QQ的用户集体是不一样的,它们在功能上的定位也是不一样的. ...

  10. cs144 lab0 lab1记录

    这个叫什么?Write Up吗 lab0 lab0要做的事,实现buffer部分的功能,要自己写变量以及实现接口. 成员函数 write()向buffer内写数据,peek_out()  pop_ou ...