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 添加请求拦截器/添加响…...
业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...
多场景 OkHttpClient 管理器 - Android 网络通信解决方案
下面是一个完整的 Android 实现,展示如何创建和管理多个 OkHttpClient 实例,分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...
vscode(仍待补充)
写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...
大学生职业发展与就业创业指导教学评价
这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...
短视频矩阵系统文案创作功能开发实践,定制化开发
在短视频行业迅猛发展的当下,企业和个人创作者为了扩大影响力、提升传播效果,纷纷采用短视频矩阵运营策略,同时管理多个平台、多个账号的内容发布。然而,频繁的文案创作需求让运营者疲于应对,如何高效产出高质量文案成…...
淘宝扭蛋机小程序系统开发:打造互动性强的购物平台
淘宝扭蛋机小程序系统的开发,旨在打造一个互动性强的购物平台,让用户在购物的同时,能够享受到更多的乐趣和惊喜。 淘宝扭蛋机小程序系统拥有丰富的互动功能。用户可以通过虚拟摇杆操作扭蛋机,实现旋转、抽拉等动作,增…...
深入理解Optional:处理空指针异常
1. 使用Optional处理可能为空的集合 在Java开发中,集合判空是一个常见但容易出错的场景。传统方式虽然可行,但存在一些潜在问题: // 传统判空方式 if (!CollectionUtils.isEmpty(userInfoList)) {for (UserInfo userInfo : userInfoList) {…...
AD学习(3)
1 PCB封装元素组成及简单的PCB封装创建 封装的组成部分: (1)PCB焊盘:表层的铜 ,top层的铜 (2)管脚序号:用来关联原理图中的管脚的序号,原理图的序号需要和PCB封装一一…...
