kafka 第一次小整理(草稿篇)————演变[二]
前言
简单整理一些kafka的设计。
正文
前文提及到log 的重要性,以及kafka在其中的作用,起着一个日志管理分发的作用,对于其他服务来说相当于新闻报社,订阅某种主题就会收到某类信息。
当人们意识到事件状态的重要性的时候,当时还没有日志管理系统,可能像下面这样:

他们各自传递着各自的事件状态给需要的服务,有点乱且难以维护。
于是为了给他们解耦,就出现了下面这样的:

这种模式解决了日志分发问题。
这种模式的出现是否解决了各种服务之间日志的共享。
现在日志和数据库似乎没有什么关联了,也就是事件状态的出现满足了新的需求,并没有和事物的状态有什么影响,似乎这两者在并行的发展。
在事物状态历史发展中,出现了一种东西叫做也就是数据仓库。
通过清洗业务仓库里面的东西来进行对聚合整理,这个清洗过程叫做etl,也就是extract-transform-load.
顾明思议哈,收集、转换、加载。
ETL是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程,目的是将企业中的分散、零乱、标准不统一的数据整合到一起,为企业的决策提供分析依据, ETL是BI(商业智能)项目重要的一个环节。
这东西有什么作用呢,比如说,要查询进一个月每天的订单,如果直接这样查的话,一个是数据库语句难写,有人可能会问怎么就难写哈,不就是group by 聚合吗,但是还有一个问题那就可能有一天没有订单哈。
第二个问题就是性能消耗大,假如订单多的话,做group by 也是很损耗的。 elk 可以做一些简单的工作,比如说每天统计一次订单数量,然后查询的时候复杂度就很低了,现在的数据库设计更偏向于设计更加简单的数据表,而不是写复杂的语句,语句写的复杂更多的可能是数据库设计问题。
数据仓库对于分析很有作用。但是传统的数据仓库有一个问题,那就是一般清洗过程是定时去业务数据库里面取数据哈。
且不从技术层面上考虑性能问题, 有一个问题就是时效性,也就是说无法对现有的数据进行监控。
然后还有另外一个问题,似乎数据仓库是一个独立的服务了,和其他服务脱钩了,取数据也是直接面向数据库,处理的结果也无法反馈到其他服务中去。
数据仓库服务,似乎成了业务孤岛。那么怎么协调他们呢,日志系统去协调他们。

各自的服务发送各自的事件进入日志系统,elk 订阅这些进入到数据仓库中,数据仓库又反馈给自动化营销服务中。
这也对服务提出了新的需求了,也就是数据的发布者。 比如说用户的退款,那么产生的事件里面有: 订单id 用户id 退款时间,这样似乎就能对这件事情的状态有了描述了。
但是更多的是在发布的时候就进行了清洗,里面的事件里面有: 订单id 用户id 订单金额 退款金额 退款商品 退款数量 退款时间等(什么人在什么地点干了一件什么事) 这些清洗好的数据,这样elk 的负担相对小很多,如果需要查询商品的退款情况,就很明白了。
而对于市场服务的性能上也没有很大的问题,因为在退款上本来就要查询订单,顺便清洗。对于扩展性,如果有新的服务,那么可以定义新的数据模型发布即可。
这些也就是事件驱动了,事件驱动是指在持续事务管理过程中,进行决策的一种策略,即跟随当前时间点上出现的事件,调动可用资源,执行相关任务,使不断出现的问题得以解决,防止事务堆积。在计算机编程、公共关系、经济活动等领域均有应用。
事件驱动达到了很好的解耦的目的,比如说商家订单支付完,然后要进行骑手送餐,市场服务只需要完成自己的事情即可,然后发送事件到kafka即可。
那么对于日志业务的可扩展性,kafka 是能满足的。
需求基本满足了,通过这种日志的订阅发布是可以达到需求的。
那么就开始考虑到实际情况,各个服务的日志是很庞大的,那么是否kafka能满足呢?
最简单的一个问题,就是生产和消费的速度很有可能不一致。很有可能就是生产要大于消费,可能远大于。
毕竟生产没啥业务逻辑,消费的时候可能就要复杂的业务逻辑了。
故而kafka 一个主题可以有多个分区:

且每个分区的消费都是顺序的。
后来又出现了流处理,那么什么是流处理呢?
上面介绍了,有了日志系统后将数仓业务和线上业务打通了,业务服务有也承担着一部分清洗功能。
但是面对着大量的数据,可能就处理不过来,有hadoop 这种这种是批处理程序,但是无法到达实时。
比如说可能能达到这个用户几天没有续费,然后发个问卷调查,但是无法达到下面这种。
达不到用户如果连输输了15把,给一张优惠券的目的,用户赢了10把,匹配更强对手的战略营销。
尤其是赢了10把,下一把匹配更强了,这就需要计算实效非常高。
为啥有专门的流处理呢? 自己写个服务进行处理不是也挺好吗。其实自己写服务达到流处理,也是可以的呀,但是可能面对数据太大,撑不住啊,但是只能说人家更专业,在低延迟、高吞吐、结果和准确性和良好的容错性上。
然而最关键的不是处理能力问题,而是流式处理是一门学问。
那么为什么hadoop 一开始不做成这种流式的呢? 是不是当时就没有这个需求呢。 肯定是有需求的,不然后面也不会出现流处理。那到底是什么问题呢?仅仅是处理能力的问题吗? 这就是流式的学问了。
结
下一节正式kafka 整理。
kafka 第一次小整理(草稿篇)————演变[二]的更多相关文章
- kafka 第一次小整理(草稿篇)————整理一下自己的认知
前言 简单整理一些自己使用kafka的一些感受. 正文 一切都要回到真实的世界上, 计算机世界只是真实事件的一个缩影. 计算机世界有一个重要的东西,那就是数据库. 数据库记录着真实世界发生了什么,准确 ...
- kafka 第一次小整理(草稿篇)————分发的基本思路[三]
前言 简单整理一下分发的基本思路. 正文 kafka 原本是做日志管理系统,主要是分发这块的. 那么如何做分发呢? 分发的是什么呢? 分发的其实是日志,日志是事件状态,kafka 内部就叫做Recor ...
- 前端面试题整理—JavaScript篇(二)
1.使用js实现一个可持续的动画 2.实现一个可以自由拖动的悬浮框 3.实现一个倒计时效果 4.使用js仿写一个原生下拉列表框 5.创建10个<a>标签,点击的时候弹出对应的序号 6.实现 ...
- 前端微信小程序实战篇
电商底部导航栏的制作 我想大家对电商一定不陌生,一般电商的底部导航栏有以下几个首页.分类.购物车.个人中心. app.json是用来配置page路径以及导航栏属性的,那我们要做首页.分类.购物车.个人 ...
- 小猪猪逆袭成博士之C++基础篇(二) 常量、处理类型、自定义头文件
小猪猪逆袭成博士之C++基础篇(二) const .auto. decltype 上一章我们介绍了一些常用的类型和常见的问题,下面再介绍一些学习的时候不是特别常用但是在实际工程中很有用的一些东西. 一 ...
- 工作经常使用的SQL整理,实战篇(二)
原文:工作经常使用的SQL整理,实战篇(二) 工作经常使用的SQL整理,实战篇,地址一览: 工作经常使用的SQL整理,实战篇(一) 工作经常使用的SQL整理,实战篇(二) 工作经常使用的SQL整理,实 ...
- [SQL SERVER系列]工作经常使用的SQL整理,实战篇(二)[原创]
工作经常使用的SQL整理,实战篇,地址一览: 工作经常使用的SQL整理,实战篇(一) 工作经常使用的SQL整理,实战篇(二) 工作经常使用的SQL整理,实战篇(三) 接着上一篇“工作经常使用的SQL整 ...
- 微信小程序笔记整理--入门篇。
7-2 微信小程序入门篇 准备篇 1.登录网址,https://mp.weixin.qq.com 注册一个微信小程序. 2.获取微信小程序appid,登录自己的小程序后台,在开发者设置中获得appid ...
- java 开发面试题小整理(一)
本篇文档将持续更新,有基础滴,也有深层次的,谢谢! 1.看下面的程序是否有问题,如果有问题,请指出并说明理由. * byte b1 = 3; * byte b2 = 4; * byte b3 = b1 ...
随机推荐
- 内部类&异常
/* 内部类 内部类类别: 成员内部类: 在一个类的成员位置定义另外一个类,那么另外 一个 类就称作为成员内部类. 成员内部类的访问方式: 方式1: 在外部类内提供一个方法创建内部类的对象进行访问. ...
- Shell条件练习题
Shell条件练习题 目录 Shell条件练习题 1.检查用户家目录中的 test.sh 文件是否存在,并且检查是否有执行权限 2.提示用户输入100米赛跑的秒数,要求判断秒数大于0且小于等于10秒的 ...
- 节点流和处理流(BufferedReader和BufferedWriter,BufferedInputStream和BufferedOutputStream,ObjectlnputStream和objectOutputStream)
一.基本介绍: 1.节点流可以从一个特定的数据源读写数据,如FileReader. FileWriter 如图:字节流是直接对数据源(文件,数组之类存放数据的地方)进行操作 2.处理流(也叫包装流)是 ...
- 了解selenium这个工具
selenium 也不是简单一个工具,而是由几个工具组成,每个工具都有其特点和应用场景. selenium IDE selenium IDE 是嵌入到Firefox浏览器中的一个插件,实现简单的浏 ...
- 虫师Selenium2+Python_00学习大纲
1.自动化测试基础 5.自动化测试模型 9.Selenium Grid2 13.GitHub托管项目 2.测试环境搭建 6.SeleniumIDE 10.Python多线程 14.持续集成Je ...
- erange.heetian.com 回显任意账号
首先获取你想登录ID的REG标识符,例如合天课程专家 获取标识符ba84d3c3-a4a1-4cd2-a00d-2f5722ee86a2 一般用户前缀为REG,这个肯定是管理员之类的= =.. ...
- 2020年的第一天-我的IDEA出现This license ... has been cancelled
IDEA激活在1月3日的早上,激活码被取消了.提示:This license ... has been cancelled. 经过查询.解决方法教程无非是. ¥%--&*(激活码... 210 ...
- 关于 share 音乐分享官方文档补充
例子 音乐分享 /*--------微信朋友圈--------*/ [shareParams SSDKSetupWeChatParamsByText:@"内容" title:@&q ...
- Typora的使用教程.md
Typora的使用教程 原创:https://home.cnblogs.com/u/cn-zhouchao 2021.12.13 一.软件的介绍 Typora 是一款由 Abner Lee 开发的轻量 ...
- 【C# IO 操作】使用StringWriter和StringReader的好处
当你有一组应用程序接口(API)只允许用Writer或Reader作为输入,但你又想使用String,这时可以用StringWriter或StringReader. 假设有下面这样一个process方 ...