【CDS技术揭秘系列 02】阿里云CDS-SLS大揭秘
简介:CDS-SLS 作为云化的日志平台,将组件进行高内聚低耦合,线下用户最低可以在6台规模的机器上将上述所有的功能自动化部署,在运维、运营、财务管理、数据分析报表等大数据场景领域以低代码模式有效解决传统软件中的痛点。本文主要进行 CDS-SLS 各功能点概览性的介绍。前言 本文作为即将发布的混合云产品 CDS-SLS(Cloud Defined Storage-Simple Log Service)一系列文章中的第二篇,主要进行 CDS-SLS 各功能点概览性的介绍。日志作为数字化的载体,里面包含了后台程序的运行信息,业务运营等信息。
日志的查询分析从最早的几台机器的手工 pssh+grep 发展到每个业务的小规模 ELK 或者 EFK(Elasticsearch, Logstash/Filebeat/Fluentd, Kibana),量大的再加上 Kafka,如果有采集 Metric的需求还需要加 Collectd,如果有可视化需求还需要增加 Grafana,对存储备份有需求的还会引入 Ceph,对于基础配置的一致性管理引入 Salt 等,每增加一个组件在高并发场景下硬件成本和运维成本迅速增加。
CDS-SLS 作为云化的日志平台,把这些组件进行了高内聚和低耦合,线下用户最低可以在6台规模的机器上将上述所有的功能自动化部署,在运维、运营、财务管理、数据分析报表等大数据场景领域以低代码模式有效解决传统软件中的痛点。
术语&背景 CDS CDS(Cloud Defined Storage)云定义存储。属于软件定义存储SDS(Software Defined Storage)的一种输出形式,CDS 具备与公共云统一的存储架构和统一的用户体验,减小底座,提供灵活的部署规模和部署形态,融合多个存储产品,提供企业级存储的运维和管理。
CDS支持各种存储产品的混部组合,例如 CDS-OSS + CDS-SLS ,CDS-EBS + CDS-SLS 等。产品方面会有敏捷版(SLS 最小规模六台,计划推出缩减到四台的更精简版本)和企业版(SLS 6台到数百台)两种输出形式。CDS 一方面提高专有云企业版和敏捷版的产品竞争力和产品成熟度;另一方面,在端、边缘和客户数据中心等环境实现各类数据的接入、备份、分析。
SLS SLS(Simple Log Service) 阿里云日志服务。SLS 起源于阿里云早期飞天底座中的神农监控服务目前已发展为集采集、查询分析、可视化一体的面向云原生可观测性的 *Ops(DevOps、SecOps、 FinOps) 整体解决方案。
SLS的主要功能概览 SLS 中的日志数据是 AppendOnly,写多读少,对时间敏感但并非要求严格保序,查询频率和热度随时间迅速递减。CDS-SLS 版本继承自阿里云上的 SLS,目前 SLS 已经连续多年支撑阿里双十一/双十二活动,同时支撑众多如新春红包、周年大促等重大活动,在稳定性、功能性以及性能方面得到了充分的验证。
本文着重从运维相关的角度来展开 SLS 的各个功能点。SLS 的主链路包含数据采集-数据查询分析-可视化-智能应用,作为计算和存储并重的产品,为了进一步降低线下用户的硬件成本,会进行一些非通用性的功能的裁剪,将硬件本身的计算资源和存储资源发挥到极致。
上图是公共云用户视角下的 SLS 功能,对于 CDS-SLS 线下用户,可以在天基平台看到 SLS 服务对应的各个子模块,也能完整看到各进程对应的 CPU 和内存占用。从服务的角度分为数据类和调度类两个大类,前者拆分为 34 个服务角色,后者拆分为 10 个服务角色。拆分后服务的升级和扩缩容将会变得更加容易。
SLS内部服务拆分 sls-service-master 主要进行调度相关的服务,它的每个服务角色有多个实例确保高可用。主要的服务功能集中在 sls-backend-server 中,大致的分层结构如下:
【【CDS技术揭秘系列 02】阿里云CDS-SLS大揭秘】CDS-SLS 目前默认底层分布式存储是盘古 2.0 系统。盘古 2.0 作为阿里云的存储底座具备高性能高稳定性的特征。SLS 的内部业务模块也进行了很好的微服务的拆分,底层使用C++自研,以实现极致的性能。
SLS的各模块中有大量的后台参数可以调节,只是我们为了方便客户使用,默认值往往能满足绝大多数客户的需求。很多设计都秉承"提供机制而不是策略(Separation of mechanism and policy)"和“单一职责(Do one thing and do it well)”的经典UNIX思想。
- 用户关心的流控,后台提供多种维度的精确控制,默认的参数可以覆盖绝大部分场景。
- 数据采集Agent(Logtail)经过多年百万机器大规模验证,在性能、稳定性上都有很好保证,相比开源软件,可以大幅降低对机器资源的占用(最高可降低90%)。
- "查询|分析"的管道式的设计就很好的贯彻了单一职责,查询和分析分别对应不同的后台服务。
- 底座中的 sls-common 集群共享底座的盘古,提供最基本的查询分析,供阿里云底座中各服务进行自运维,限于底座资源保存时间 7 天。在混合云网络隔离不可达的场景下显著提升运维的效率,开发人员通过几个关键词让现场人员查询即可很快定位问题。
- 用户单独购买的 CDS-SLS 集群,独占一套盘古,集群中只运行SLS相关的进程,有效缓解了底座共享资源紧张的问题,所以日志的 TTL 可以永久保存,并且有体验更好的控制台。
国产化信创支持 目前 CDS-SLS 会支持海光,鲲鹏,飞腾等CPU的架构,并会有严格的和 Intel X86 相同的验收测试。之后还会针对线下输出场景更多异构 CPU 和混合场景的测试支持。
针对HTTPS的访问会支持国密 TLS 信道传输,让一些金融或者政企行业的数据访问更合规。
开源ELK方案对比和迁移 ELK的背景 Elastic主要基于Lucene实现,2012 年 Elastic 基于 Lucene 基础库包成了一个更好用的软件,并且在 2015 年推出 ELK Stack(Elastic Logstash Kibana)解决集中式日志采集、存储和查询问题。但是 Lucene 设计场景是 Information Retrial,面对是 Document 类型,因此对于可观测分析(Log/Trace/Metric)数据有一定限制,例如规模、查询能力、以及一些定制化功能(例如智能聚类 LogReduce)。
Elasticsearch | 日志服务 | 说明 |
index | logstore | 允许用户将多个 index 上的数据迁移至一个 logstore。 |
type | logItem 中的字段 __tag__:_type | |
document | logItem | Elasticsearch 的文档和日志服务中的日志一一对应。 |
mapping | logstore 的索引 | 工具默认情况下会为您自动创建好索引。 |
field datatypes | logItem 数据类型 | 具体映射关系参考数据类型映射。 |
功能项 | Logstash | Fluentd | Logtail |
日志读取 | 轮询 | 轮询 | 事件触发 |
文件轮转 | 支持 | 支持 | 支持 |
Failover处理 (本地checkpoint) | 支持 | 支持 | 支持 |
通用日志解析 | 支持grok(基于正则表达式)解析 | 支持正则表达式解析 | 支持正则表达式解析 |
特定日志类型 | 支持delimiter、key-value、json等主流格式 | 支持delimiter、key-value、json等主流格式 | 支持key-value格式 |
数据发送压缩 | 插件支持 | 插件支持 | LZ4 |
数据过滤 | 支持 | 支持 | 支持 |
数据buffer发送 | 插件支持 | 插件支持 | 支持 |
发送异常处理 | 插件支持 | 插件支持 | 支持 |
运行环境 | JRuby实现,依赖JVM环境 | CRuby、C实现,依赖Ruby环境 | C++实现,无特殊要求 |
线程支持 | 支持多线程 | 多线程受GIL限制 | 支持多线程 |
热升级 | 不支持 | 不支持 | 支持 |
中心化配置管理 | 不支持 | 不支持 | 支持 |
运行状态自检 | 不支持 | 不支持 | 支持cpu/内存阈值保护 |
推荐阅读
- 宽容谁
- 我要做大厨
- 增长黑客的海盗法则
- 画画吗()
- 2019-02-13——今天谈梦想()
- 远去的风筝
- 三十年后的广场舞大爷
- 叙述作文
- 20190302|20190302 复盘翻盘
- 学无止境,人生还很长