Loki 微服务模式组件介绍
目录
一、简介
二、架构图
三、组件介绍
Distributor(分发器)
Ingester(存储器)
Querier(查询器)
Query Frontend(查询前端)
Index Gateway(索引网关)
Compactor(压缩器)
Table Manager(表管理器)
Ruler(规则引擎)
四、各组件协作流程
五、优势
一、简介
Loki 是一个用于日志聚合和查询的系统,广泛用于 Kubernetes 和微服务架构中。Loki 的微服务模式将其核心功能拆分为多个独立的组件,每个组件专注于特定的任务。以下是 Loki 微服务模式下主要组件的功能和作用介绍:
二、架构图

三、组件介绍
Distributor(分发器)
功能:
-
接收日志数据(通常通过
push协议或Promtail)。 -
将日志数据分发到 Ingester 组件进行存储和处理。
-
通过 hash-ring 算法,根据日志流的标签(labels)计算分区,并将数据路由到正确的 Ingester。
作用:
-
作为日志数据的入口,负责任务分配和路由。
-
提供高可用性和水平扩展能力,允许多个 Distributor 节点同时运行。
Ingester(存储器)
功能:
-
接收 Distributor 分发的日志数据。
-
将日志数据暂时存储在内存中,并以分片的形式写入持久化存储(如对象存储)。
-
处理读取请求并提供实时日志查询能力。
作用:
-
实现日志的实时存储和处理。
-
确保高吞吐量和低延迟的写入性能。
-
负责将日志数据以批次的形式写入持久存储。
Querier(查询器)
功能:
-
处理来自用户的查询请求(通过 Loki API 或 Grafana)。
-
从 Ingester 和持久化存储中读取日志数据。
-
对日志数据进行过滤、聚合和返回。
作用:
-
提供强大的查询功能(使用 LogQL)。
-
同时支持实时日志查询(从 Ingester 获取)和历史日志查询(从对象存储获取)。
Query Frontend(查询前端)
功能:
-
接收用户的查询请求,并将其分解为多个小查询任务。
-
对查询任务进行缓存以提高性能。
-
将查询任务分发到 Querier。
作用:
-
优化查询性能,尤其是复杂和大范围查询。
-
提供请求分片、聚合以及缓存能力,减少 Querier 的工作负载。
Index Gateway(索引网关)
功能:
-
管理和写入日志的索引数据到后端存储(如对象存储、Cassandra)。
-
提供索引的读取能力,帮助快速定位日志。
作用:
-
实现高效的日志索引存储和管理。
-
减少日志查询的延迟,通过索引快速找到日志所在的存储位置。
Compactor(压缩器)
功能:
-
定期从对象存储中读取分片的日志数据。
-
对分片日志数据进行合并、去重和优化。
-
写入优化后的数据回对象存储。
作用:
-
优化日志数据的存储格式,降低存储成本。
-
提升查询效率,通过压缩和去重减少查询的数据量。
Table Manager(表管理器)
功能:
-
为存储后端(如 DynamoDB、Bigtable)管理表的生命周期。
-
创建、删除和更新索引表。
作用:
-
提供后端存储的表管理能力。
-
确保索引表结构与 Loki 的存储需求匹配。
Ruler(规则引擎)
功能:
-
基于日志数据定义和执行规则。
-
触发警报规则或生成预聚合的日志查询结果。
作用:
-
提供告警功能:允许基于日志数据的实时或周期性告警。
-
支持基于 LogQL 的规则评估。
四、各组件协作流程
-
日志接入:
-
Distributor 接收日志数据,并通过标签分片分发给对应的 Ingester。
-
-
数据存储:
-
Ingester 将日志数据暂存内存,并定期将其写入对象存储。
-
Index Gateway 管理日志索引,方便快速查询。
-
-
数据查询:
-
用户通过 Loki 或 Grafana 发起查询请求。
-
Query Frontend 接收请求并优化分片后发送给 Querier。
-
Querier 从 Ingester(实时数据)或对象存储(历史数据)中读取日志并返回结果。
-
-
优化与维护:
-
Compactor 对存储中的日志数据进行合并和优化。
-
Ruler 定期评估规则并触发告警。
-
五、优势
-
模块化:每个组件独立运行,可单独扩展。
-
高可用:各组件支持水平扩展,提供更高的吞吐量和容错能力。
-
灵活性:可以根据需求调整组件的资源和部署策略。
相关文章:
Loki 微服务模式组件介绍
目录 一、简介 二、架构图 三、组件介绍 Distributor(分发器) Ingester(存储器) Querier(查询器) Query Frontend(查询前端) Index Gateway(索引网关)…...
peerDependencies对等依赖
在 package.json 中平时常用的有字段有 dependencies 和 devDependencies,但 peerDependencies 平时都没咋看到过,今天具体讲讲 peerDependencies 的作用 一、什么是对等依赖 peerDependencies 可以翻译为“对等依赖”或“同行依赖”。这个术语在 npm …...
贪心算法 part01
class Solution { public:int maxSubArray(vector<int>& nums) {int result INT32_MIN;int count 0;for (int i 0; i < nums.size(); i) {count nums[i];if (count > result) { // 取区间累计的最大值(相当于不断确定最大子序终止位置ÿ…...
java开发入门学习二 - 变量
目录 一 关键字 编辑 二 标识符 三 变量 变量数据类型 变量注意点 四 数据类型 前置知识 - 计算机存储单位 整型数据类型 浮点数据类型 字符数据类型 布尔数据类型 五 数据类型间的计算 基本数据类型之间的计算 自动类型提升 强制类型转换 引用数据类型 Sti…...
Qt Q_ENUM enum 转 QString 枚举字符串互转; C++模板应用
Part1: Summary 项目中我们常用到命名,使用 enum 转成 string ,方便简洁;Qt给我们提供了一个很方便的功能 Q_ENUM,可以实现枚举字符串互转; Q_ENUM宏将枚举注册到元对象系统中; QMetaEnum::fromType获取枚…...
0004.基于springboot+elementui的在线考试系统
适合初学同学练手项目,部署简单,代码简洁清晰; 愿世界和平再无bug 一、系统架构 前端:vue| elementui 后端:springboot | mybatis-plus 环境:jdk1.8 | mysql | maven 二、登录角色 1.管理员 2.老师 …...
基于 iAP2 协议 的指令协议,用于对安防设备的 MCU 进行操作
协议设计目标 1. 安全性:通过 iAP2 协议与 MCU 设备进行安全通信。 2. 通用性:支持对安防设备的常见功能进行操作,如状态查询、设备控制、参数配置等。 3. 高效性:数据结构简洁清晰,易于解析和扩展。 4. 扩展性&#x…...
02-5.python入门基础一控制流(while)
Python 控制流是指控制程序执行顺序的机制,它允许程序根据不同的条件和情况执行不同的代码块或重复执行某些代码。 while 循环的用法与示例 语法结构及要点 在 Python 中,while循环是一种基于条件判断的循环结构,其语法构成如下:…...
Go语言开发入门与实战
Go语言(简称Golang)由Google开发,是一门现代化的编程语言,因其简洁高效、并发支持友好、跨平台特性而在后端服务开发、云计算等领域大放异彩。本文将介绍Go语言的基本特点、开发环境配置,并通过一个简单的实战项目带领大家快速上手。 一、Go语言的特点 简单易学:语法简洁…...
HarmonyOS Next应用开发实战:ArkWeb组件使用介绍及使用举例
ArkWeb简介 ArkWeb(方舟Web)是HarmonyOS Next中提供的一个Web组件,主要用于在应用程序中显示Web页面内容。这个组件使得开发者可以在HarmonyOS应用中嵌入Web页面,从而降低开发成本,提升开发和运营效率。 使用场景 A…...
【已解决】在Visual Studio里将应用与Microsoft Store关联时提示网络异常
发布Windows应用时。在Visual Studio里点击"发布“,将应用与Microsoft Store关联时,一直提示网络错误。 查了一下论坛,发现之前也经常出现,但我是第一次遇到。 不能就这样一直被卡着呀,研究了一下,还…...
springcloud-gateway获取应用响应信息乱码
客户端通过springcloud gateway跳转访问tongweb上的应用,接口响应信息乱码。使用postman直接访问tongweb上的应用,响应信息显示正常。 用户gateway中自定义了实现GlobalFilter的Filter类,在该类中获取了上游应用接口的响应信息,直…...
[笔记]关于Qt的nativeEvent事件无法接收window消息的Bug
1.nativeEvent事件无法接收window消息 此处不是nativeEvent不能接收,是possmessage一定要写对发送的软件名称,这个名称在Qt中是主界面类的名称,就是主界面UI的名称,而不是rc文件中定义的名称。 所以在FindWindow函数获取目标窗口…...
LeetCode 热题 100_K 个一组翻转链表(31_25_困难_C++)(四指针法)
LeetCode 热题 100_K 个一组翻转链表(31_25) 题目描述:输入输出样例:题解:解题思路:思路一(四指针法): 代码实现代码实现(思路一(四指针法&#x…...
Pytorch | 从零构建MobileNet对CIFAR10进行分类
Pytorch | 从零构建MobileNet对CIFAR10进行分类 CIFAR10数据集MobileNet设计理念网络结构技术优势应用领域 MobileNet结构代码详解结构代码代码详解DepthwiseSeparableConv 类初始化方法前向传播 forward 方法 MobileNet 类初始化方法前向传播 forward 方法 训练和测试训练代码…...
CSS系列(18)-- 工程化实践详解
前端技术探索系列:CSS 工程化实践详解 🏗️ 致读者:探索 CSS 工程化之路 👋 前端开发者们, 今天我们将深入探讨 CSS 工程化实践,学习如何在大型项目中管理 CSS。 工程化配置 🚀 项目结构 …...
日拱一卒(18)——leetcode学习记录:二叉树中的伪回文路径
一、题目 给你一棵二叉树,每个节点的值为 1 到 9 。我们称二叉树中的一条路径是 「伪回文」的,当它满足:路径经过的所有节点值的排列中,存在一个回文序列。 请你返回从根到叶子节点的所有路径中 伪回文 路径的数目。 二、思路 …...
hive—炸裂函数explode/posexplode
1、Explode炸裂函数 将hive某列一行中复杂的 array 或 map 结构拆分成多行(只能输入array或map) 语法: select explode(字段) as 字段命名 from 表名; 举例: 1)explode(array)使得结果中将array列表里的每个元素生…...
SpringBoot 新特性
优质博文:IT-BLOG-CN 2.1.0新特性最低支持jdk8,支持tomcat9 对响应式编程的支持,spring-boot-starter-webflux starter POM可以快速开始使用Spring WebFlux,它由嵌入式Netty服务器支持 1.5.8 2.1.0/2.7.0/3.0.0 Configuration propertie…...
鸿蒙app封装 axios post请求失败问题
这个问题是我的一个疏忽大意,在这里记录一下。如果有相同问题的朋友,可以借鉴。 当我 ohpm install ohos/axios 后,进行简单post请求验证,可以请求成功。 然后,我对axios 进行了封装。对axios 添加请求拦截器/添加响…...
美元、日元、欧元怎么选?外汇新手该从哪个货币对开始?
最近有不少刚接触外汇交易的朋友问我同一个问题:美元、日元、欧元这些主流货币到底该怎么选?作为一个过来人,我想说的是——选对起步品种,比你想象中重要得多。 很多新手一上来就想着“赚快钱”,直接冲进波动剧烈的交叉…...
hadoop3.3.6上搭建Hbase2.5.13集群
一、什么是Hbase hadoop的局限性 hadoop主要是实现批处理的处理,并且通过顺序方式访问数据 要查找数据必须搜索整个数据集,如果要进行随机读写数据,效率低下 Hbase是Bigtable的开源java版本,是建立在HDFS之上,提供高可靠性、高性能、列存储、可伸缩、实时读写的NoSQL数据…...
AI 模型训练中的梯度裁剪技巧
AI模型训练中的梯度裁剪技巧 在深度学习的模型训练过程中,梯度爆炸是一个常见的问题,它会导致模型参数更新过大,进而使训练过程变得不稳定甚至无法收敛。为了解决这一问题,梯度裁剪(Gradient Clipping)技术…...
nfs-subdir-external-provisioner核心配置参数详解:onDelete、archiveOnDelete、pathPattern
nfs-subdir-external-provisioner核心配置参数详解:onDelete、archiveOnDelete、pathPattern 【免费下载链接】nfs-subdir-external-provisioner Dynamic sub-dir volume provisioner on a remote NFS server. 项目地址: https://gitcode.com/gh_mirrors/nf/nfs-s…...
新手零基础入门:用快马ai生成你的第一个arduino流水灯程序
作为一个刚接触Arduino的新手,我最近在InsCode(快马)平台上完成了第一个LED流水灯项目。整个过程比我预想的顺利很多,特别适合零基础的朋友入门体验。下面分享我的学习过程和几点实用心得: 硬件准备其实很简单 只需要一块Arduino UNO开发板和…...
CLIP ViT-H-14效果展示:艺术风格迁移前后图像在特征空间的距离变化
CLIP ViT-H-14效果展示:艺术风格迁移前后图像在特征空间的距离变化 你有没有想过,当一幅梵高的《星空》被AI“理解”成毕加索的立体派风格时,在AI的“大脑”里,这两幅画到底有多“像”? 今天,我们就来用C…...
基于深度学习的多种类动物识别(YOLOv12/v11/v8/v5模型+数据集)(源码+lw+部署文档+讲解等)
摘要随着人工智能和深度学习技术的发展,基于图像的动物识别系统在生态监测、物种保护和生物多样性研究等领域获得了广泛应用。本文提出了一种基于YOLO(You Only Look Once)系列模型(包括YOLOv5、YOLOv8、YOLOv11和YOLOv12…...
如何高效管理ComfyUI插件:完整指南与最佳实践
如何高效管理ComfyUI插件:完整指南与最佳实践 【免费下载链接】ComfyUI-Manager ComfyUI-Manager is an extension designed to enhance the usability of ComfyUI. It offers management functions to install, remove, disable, and enable various custom nodes …...
像素语言·维度裂变器效果展示:看AI如何把普通句子变高级
像素语言维度裂变器效果展示:看AI如何把普通句子变高级 1. 引言:当文字遇见像素魔法 在数字创作的世界里,文字是最基础的"像素"。但如何让这些文字像素焕发出更绚丽的光彩?像素语言维度裂变器(Pixel Dimension Fissio…...
Umi-OCR:3个技巧让你的扫描PDF文件变身智能文档
Umi-OCR:3个技巧让你的扫描PDF文件变身智能文档 【免费下载链接】Umi-OCR OCR software, free and offline. 开源、免费的离线OCR软件。支持截屏/批量导入图片,PDF文档识别,排除水印/页眉页脚,扫描/生成二维码。内置多国语言库。 …...
