稳定性三十六计-历史记录

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 为什么要做历史记录历史记录是大数据的最重要数据源。通过历史记录可以进行事件追溯、未来预判和推荐。举个例子:静儿在网上搜索了“稳定性三十六计”这个词,找到自己想要的内容了。然后去做别的事情,再打开浏览器的时候,发现旁边的小弹出框里推荐我《稳定性宝典》这本书。这个推荐效果很多种算法都能实现,比如最近比较火的“协同过滤推荐算法(Collaborative Filtering Recommendation)”。啥是协同过滤推荐算法呢?协同过滤推荐算法简而言之,就是找到相同兴趣的群体,将这个群体中感兴趣的其他信息推荐给用户。实施的时候可以先建立一个大表,X轴是所有的推荐内容,Y轴是所有的用户。

引子


半夜三点,睡梦中被一阵没人接听誓不罢休的电话铃吵醒。睡眼惺忪的接听了电话,电话那头传来了不用听清任何人类语言就能感受的焦急。让我赶快打开电脑,说服务整个不工作了!


打开监控看到线程池被打满。本着“先恢复现场再排查原因”的基本原则,重启并扩容了一倍的服务器。服务又正常了。完美的做到了“三分钟定位,十分钟解决”。但是现场不在了,怎么排查根因呢?答案是:历史记录。

 

为什么要做历史记录


历史记录是大数据的最重要数据源。通过历史记录可以进行事件追溯、未来预判和推荐。举个例子:


静儿在网上搜索了“稳定性三十六计”这个词,找到自己想要的内容了。然后去做别的事情,再打开浏览器的时候,发现旁边的小弹出框里推荐我《稳定性宝典》这本书。


这个推荐效果很多种算法都能实现,比如最近比较火的“协同过滤推荐算法(Collaborative Filtering Recommendation)”。啥是协同过滤推荐算法呢?协同过滤推荐算法简而言之,就是找到相同兴趣的群体,将这个群体中感兴趣的其他信息推荐给用户。


实施的时候可以先建立一个大表,X轴是所有的推荐内容,Y轴是所有的用户。


BzJYf7Cp9PeRAAAAAElFTkSuQmCC.png


然后我们将每个用户感兴趣的XY交叉点都标出来。如图可以看到对“稳定性三十六计”感兴趣的对“稳定性宝典”感兴趣的概率也很高。


orGjcZspAAAAAElFTkSuQmCC.png


历史记录对于稳定性,也可以将其他同类系统作为用户,将他们的问题作为推荐项进行协同过滤分析,找到自身的可优化点。系统出了问题需要分析原因时,事件追溯更是必不可少。

 

怎么做历史记录


日志


最常用的事件维度记录是日志。有存于本地磁盘和集中式日志两种。


本地磁盘日志就是将日志在程序中控制直接写入本地磁盘。


集中式日志的架构大同小异,基本结构如下:


iiAGzth4oIQAAAABJRU5ErkJggg==.png


  • 采集器负责采集数据,并发送给收集器。


  • 收集器负责收集采集器发送过来的数据,并定时写入集群。


  • 存储中心负责对数据分类、排序、去重,把同类型的数据合并。


  • 分析和可视化平台负责数据的展示。


以下是常用的数据收集系统的比较

 

产品 公司 优势 劣势
Flume NG Cloundera

1.支持故障转移和负载均衡

2.容易水平扩展

3.社区活跃、文档丰富

4.依赖第三方类库少

5.通过事务保证数据一致性

6.支持多种存储

1.需要自己实现客户端代码

2.对数据的过滤能力差

Scribe Facebook

1.具有很高的容错性

2.支持水平扩展

1.依赖zookeeper或Hash等工具

2.需要自己实现客户端代码

3.社区活跃度低、文档少

3.依赖第三方库多

4.部署复杂

5.存储系统类型少

6.数据过滤解析能力差

7.官方已经停止更新和维护

Chukwa Apache

1.高可靠

2.易扩展

3.社区活跃度较高

4.文档资料丰富

1.依赖hadoop
ELK Elasic.co

1.提供完整的解决方案

2.支持集群部署和水平扩展

3.社区活跃度高、文档丰富

4.部署简单

1.占用资源比较高


ELK不是一款软件,而是Elasticsearch、Logstash和Kibana首字母的缩写。这三者是开源软件,通常配合一起使用。而且先后归于Elasic.co公司的名下,所以简称ELK Stack。根据Google Trend的信息显示,ELK已经成为目前最流行的集中式日志解决方案。

 

Nosql


除了日志,任何有价值的历史信息都是应该存储起来做分析的。这时候存储就是关键。因为数据量大,对强一致性没有苛刻的要求。所以从成本上传统的关系型数据库不是首选。一般选择Nosql数据库。Nosql数据库主要有四类:


1.key-value数据库

 

项目 说明
典型应用场景 内容缓存,主要用于处理大量数据的高访问负载,也用于一些日志系统
数据模型 Key指向Value的键值对,通常用hash table实现
强项 查找速度快
弱项 数据无结构,通常被当做字符串或者二进制数据
例子 Redis、Memcached


2.列式数据库


项目 说明
典型应用场景 分布式的文件系统
数据模型 以列簇式存储,将统一列数据存在一起
强项 查找速度快,可扩展性强,更容易进行分布式扩展
弱项 功能相对局限
例子 Cassandra、HBase


3.文档型数据库


项目 说明
典型应用场景 Web应用,Value是结构化的,容易被解析
数据模型 KeyValue的键值对,Value为结构化数据
强项 数据结构要求不严格,表结构可变、不需要预先定义表结构
弱项 查询性能不高,缺乏统一的查询语法
例子 CouchDB、MongoDB、Elasticsearch


4.图结构数据库


项目 说明
典型应用场景 社交网络,推荐系统等。专注于构建关系图谱
数据模型 图结构
强项 利用图结构相关算法,比如最短路径寻址,N读关系查找等
弱项 需要再次计算出所需信息,不容易做分布式集群方案
例子 Neo4j、InfoGrid、Infinite Graph

 

时序数据库


时序数据库全称为时间序列数据库。时间序列数据库主要用于指处理带时间标签的数据。带时间标签的数据也称为时间序列数据。


基于时间序列数据的特点,关系型数据库无法满足对时间序列数据的有效存储与处理,因此迫切需要一种专门针对时间序列数据来做优化的数据库系统,即时间序列数据库。

目前行业内比较流行的开源时序数据库产品对比如下:

 

  InfluxData Prometheus Graphite OpenTSDB
数据模型 labels labels dot-separated label
按时间分段管理数据 ✔️ ✔️ ✔️ 手动
分布式 ✔️商业版 单机 单机 ✔️
聚合分析
权限管理 ✔️商业版 × × ×
接口 类SQL REST REST REST
社区生态 +++ ++ ++ ++
时间序列分析
抽取日志指标 × × × ×
Rollup ✔️ × ✔️ ×


总结


Talk is cheap, show me the data!

 

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
9天前
|
存储 数据可视化 Linux
语雀停机事件后,你也在找替代方案吗?
2023年10月23日,语雀遭遇长达8小时的服务中断,严重影响了用户的日常工作和生活。事后官方提供了6个月免费会员作为补偿。此次事件引发用户对云笔记产品的可靠性思考,Obsidian和思源笔记因注重本地存留而受到关注。Obsidian支持双向链接、Markdown、本地存储及插件系统,适合个人知识管理;思源笔记则强调关系图谱和快速引用功能。此外,也有用户选择印象笔记、腾讯文档等云产品或使用编辑器+网盘的方式。如何选择合适的工具取决于个人需求和偏好。
34 2
|
3月前
|
存储 消息中间件 运维
架构升级的救星!流量回放自动化测试的必备指南
大家好,我是小米,一名29岁的技术宅。今天分享一个物联网领域的实用技能——流量回放自动化测试。系统重构后,测试工作量巨大,本文介绍如何通过日志收集和数据回放进行自动化测试,包括离线、实时和并行回放模式,帮助快速定位Bug,提升测试效率和系统稳定性。欢迎关注我的微信公众号“软件求生”,获取更多技术干货!
66 3
|
8月前
|
安全 测试技术 网络架构
【专栏】编写网络设备割接方案的七个步骤,包括明确割接目标、收集信息、制定计划、设计流程、风险评估、准备测试环境和编写文档。
【4月更文挑战第28天】本文介绍了编写网络设备割接方案的七个步骤,包括明确割接目标、收集信息、制定计划、设计流程、风险评估、准备测试环境和编写文档。通过实际案例分析,展示了如何成功完成割接,确保业务连续性和稳定性。遵循这些步骤,可提高割接成功率,为公司的网络性能和安全提供保障。
805 0
|
6月前
|
SQL 监控 测试技术
软件交付问题之项目发布后要关注监控的有效性,如何解决
软件交付问题之项目发布后要关注监控的有效性,如何解决
|
5月前
|
Java
软件交付质量问题之要提升发布成功率,如何实现
软件交付质量问题之要提升发布成功率,如何实现
问题排查流程——持续⚡️迭代中
通过这个模板能给像我一样小白的人提供一个抓手
|
SQL 缓存 NoSQL
写代码有这16个好习惯,可以减少80%非业务的bug
每一个好习惯都是一笔财富,本文整理了写代码的16个好习惯,每个都很经典,养成这些习惯,可以规避多数非业务的bug!希望对大家有帮助哈,谢谢阅读,加油哦~1. 修改完代码,记得自测一下...
359 0
|
监控 JavaScript 安全
从几次事故引起的对项目质量保障的思考
从几次事故引起的对项目质量保障的思考
|
消息中间件 缓存 运维
多版本并行,测试如何做好质量保障?
第一个是成本问题,单独搭建一套可用的测试环境,包括云服务器、缓存、消息队列和数据库,成本是很高的;
多版本并行,测试如何做好质量保障?
|
测试技术
软件测试面试题:在频繁的版本发布中,如何回归测试?
软件测试面试题:在频繁的版本发布中,如何回归测试?
264 0