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 添加请求拦截器/添加响…...
Chapter03-Authentication vulnerabilities
文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...
Qt Widget类解析与代码注释
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...
【JVM】- 内存结构
引言 JVM:Java Virtual Machine 定义:Java虚拟机,Java二进制字节码的运行环境好处: 一次编写,到处运行自动内存管理,垃圾回收的功能数组下标越界检查(会抛异常,不会覆盖到其他代码…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...
江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命
在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...
Python ROS2【机器人中间件框架】 简介
销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习) 一、Aspose.PDF 简介二、说明(⚠️仅供学习与研究使用)三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...
基于IDIG-GAN的小样本电机轴承故障诊断
目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) 梯度归一化(Gradient Normalization) (2) 判别器梯度间隙正则化(Discriminator Gradient Gap Regularization) (3) 自注意力机制(Self-Attention) 3. 完整损失函数 二…...
C++ 设计模式 《小明的奶茶加料风波》
👨🎓 模式名称:装饰器模式(Decorator Pattern) 👦 小明最近上线了校园奶茶配送功能,业务火爆,大家都在加料: 有的同学要加波霸 🟤,有的要加椰果…...
