简介: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-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相干的集群有两个:
- 底座中的 sls-common 集群共享底座的盘古,提供最根本的查问剖析,供阿里云底座中各服务进行自运维,限于底座资源保留工夫 7 天。在混合云网络隔离不可达的场景下显著晋升运维的效率,开发人员通过几个关键词让现场人员查问即可很快定位问题。
- 用户独自购买的 CDS-SLS 集群,独占一套盘古,集群中只运行SLS相干的过程,无效缓解了底座共享资源缓和的问题,所以日志的 TTL 能够永恒保留,并且有体验更好的控制台。
本文提到的绝大多数性能都是针对用户独自购买的 CDS-SLS 集群。
国产化信创反对
目前 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)。
<span class="lake-fontsize-12">Elasticsearch</span> | <span class="lake-fontsize-12">日志服务</span> | <span class="lake-fontsize-12">阐明</span> |
<span class="lake-fontsize-12">index</span> | <span class="lake-fontsize-12">logstore</span> | <span class="lake-fontsize-12">容许用户将多个 index 上的数据迁徙至一个 logstore。</span> |
<span class="lake-fontsize-12">type</span> | <span class="lake-fontsize-12">logItem 中的字段 __tag__:_type</span> | |
<span class="lake-fontsize-12">document</span> | <span class="lake-fontsize-12">logItem</span> | <span class="lake-fontsize-12">Elasticsearch 的文档和日志服务中的日志一一对应。</span> |
<span class="lake-fontsize-12">mapping</span> | <span class="lake-fontsize-12">logstore 的索引</span> | <span class="lake-fontsize-12">工具默认状况下会为您主动创立好索引。</span> |
<span class="lake-fontsize-12">field datatypes</span> | <span class="lake-fontsize-12">logItem 数据类型</span> | <span class="lake-fontsize-12">具体映射关系参考</span>数据类型映射。 |
<span class="lake-fontsize-12">性能项</span> | <span class="lake-fontsize-12">Logstash</span> | <span class="lake-fontsize-12">Fluentd</span> | <span class="lake-fontsize-12">Logtail</span> |
<span class="lake-fontsize-12">日志读取</span> | <span class="lake-fontsize-12">轮询</span> | <span class="lake-fontsize-12">轮询</span> | <span class="lake-fontsize-12">事件触发</span> |
<span class="lake-fontsize-12">文件轮转</span> | <span class="lake-fontsize-12">反对</span> | <span class="lake-fontsize-12">反对</span> | <span class="lake-fontsize-12">反对</span> |
<span class="lake-fontsize-12">Failover解决 (本地checkpoint)</span> | <span class="lake-fontsize-12">反对</span> | <span class="lake-fontsize-12">反对</span> | <span class="lake-fontsize-12">反对</span> |
<span class="lake-fontsize-12">通用日志解析</span> | <span class="lake-fontsize-12">反对grok(基于正则表达式)解析</span> | <span class="lake-fontsize-12">反对正则表达式解析</span> | <span class="lake-fontsize-12">反对正则表达式解析</span> |
<span class="lake-fontsize-12">特定日志类型</span> | <span class="lake-fontsize-12">反对delimiter、key-value、json等支流格局</span> | <span class="lake-fontsize-12">反对delimiter、key-value、json等支流格局</span> | <span class="lake-fontsize-12">反对key-value格局</span> |
<span class="lake-fontsize-12">数据发送压缩</span> | <span class="lake-fontsize-12">插件反对</span> | <span class="lake-fontsize-12">插件反对</span> | <span class="lake-fontsize-12">LZ4</span> |
<span class="lake-fontsize-12">数据过滤</span> | <span class="lake-fontsize-12">反对</span> | <span class="lake-fontsize-12">反对</span> | <span class="lake-fontsize-12">反对</span> |
<span class="lake-fontsize-12">数据buffer发送</span> | <span class="lake-fontsize-12">插件反对</span> | <span class="lake-fontsize-12">插件反对</span> | <span class="lake-fontsize-12">反对</span> |
<span class="lake-fontsize-12">发送异样解决</span> | <span class="lake-fontsize-12">插件反对</span> | <span class="lake-fontsize-12">插件反对</span> | <span class="lake-fontsize-12">反对</span> |
<span class="lake-fontsize-12">运行环境</span> | <span class="lake-fontsize-12">JRuby实现,依赖JVM环境</span> | <span class="lake-fontsize-12">CRuby、C实现,依赖Ruby环境</span> | <span class="lake-fontsize-12">C++实现,无特殊要求</span> |
<span class="lake-fontsize-12">线程反对</span> | <span class="lake-fontsize-12">反对多线程</span> | <span class="lake-fontsize-12">多线程受GIL限度</span> | <span class="lake-fontsize-12">反对多线程</span> |
<span class="lake-fontsize-12">热降级</span> | <span class="lake-fontsize-12">不反对</span> | <span class="lake-fontsize-12">不反对</span> | <span class="lake-fontsize-12">反对</span> |
<span class="lake-fontsize-12">中心化配置管理</span> | <span class="lake-fontsize-12">不反对</span> | <span class="lake-fontsize-12">不反对</span> | <span class="lake-fontsize-12">反对</span> |
<span class="lake-fontsize-12">运行状态自检</span> | <span class="lake-fontsize-12">不反对</span> | <span class="lake-fontsize-12">不反对</span> | <span class="lake-fontsize-12">反对cpu/内存阈值爱护</span> |