日志服务新功能发布(1)--支持保序写入和消费

本文涉及的产品
对象存储 OSS,20GB 3个月
文件存储 NAS,50GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
简介: 日志服务新功能上线介绍,本文介绍日志服务如何支持日志严格保序的写入和消费。

日志服务在上周新上线的版本,支持数据的保序写入和消费,shard的split和merge, server端consumer group的原生支持(除去对mysql的依赖),数据自动同步至oss等一些列新功能。本文主要介绍数据的保序写入和消费的功能。

LogStore & Shard 关系

screenshot

  1. 每个LogStore对应一类日志,对于同一个LogStore下的数据,所有处理逻辑相同(索引方式、导入odps、oss等配置)
  2. 每个LogStore由一个或多个shard组成,用于支持数据写入水平扩展
  3. 每个shard提供 5MB/sec的写入和10MB/sec的读取吞吐
  4. 每个Shard的属性:唯一的shard id,当前状态(只读、读写),以及一个左闭右开的区间(取值范围00000000000000000000000000000000~ffffffffffffffffffffffffffffffff,可由md5计算获得)

LogStore数据写入模式

现在日志服务对于每个Logstore,提供两种写入模式:

1. 负载均衡模式 (默认模式)

在这种模式下,数据写入Logstore,由服务后端随机选择一个当前可用的shard写入数据。在这种模式下,数据写入有非常高的可靠性,任意的进程crash,机器宕机,只要还有一个shard正常运行,就不影响数据的写入。

2. 指定HashKey模式(保序特性)

写入的时候,根据需要将部分数据写入同一个shard以实现数据的保序,例如,同一个机器上的日志,写入同一个shard。

        // 以机器的IP的md5值作为hash key
    String  hash_key =  getMd5Value(machine_ip);
        // sever端根据hash key所在的range找到对应的shard
    Logclient.PutLogs(project, logStore, topic, logItems, source,  hash_key);    

screenshot

在这种模式下,通过传入的hash_key, server端会找到range包含这个key的shard,并将数据写入该shard,数据按照shard接收顺序依次写入,这样,同一个shard内的数据是有序的。使用hashkey的模式,有以下注意事项:

  • 对于hash key的选择尽量做到均衡,避免某个shard写入数据量过大
  • 不可以使用时间(如精确到小时)作为hash_key的计算,以防止任意时刻,只有一个shard提供服务
  • hash_key模式下,系统可用性没有负载均衡模式高,当出现宕机等情况,shard可能会出现短暂不可用的情况,需要在写入端进行重试等处理

数据消费

使用日志服务的批量消费接口,从指定shard中批量拉取数据,数据以FIFO的模式顺序读取,可以保证同一个shard内,日志数据的消费顺序和日志产生顺序相同。

场景实战

单机日志保序消费。一个java应用部署在多个机器上处理用户请求,根据用户ID的不同,每个用户的请求会落到特定的机器上进行处理,而对于用户的每个请求,都有如下记录:

  • 用户ID
  • 操作类型
  • 时间
  • 详细信息

为了安全审计、监控等需求,需要将所有用户的操作日志保存下来,进行实时分析。同时要求分析用户操作行为是安格按照用户操作顺序进行的,即对于每个用户ID产生的日志,读取顺序和日志产生顺序相同,不能发生错乱。 如某个用户依次进行了如下三个操作:

  1. 创建一个资源文件
  2. 更新该资源文件
  3. 删除资源文件

每个操作分别产生了一条日志,为了保障分析程序的正确运行,也必须依次读取创建、更新、删除操作产生的日志。

为了达到这个目的,java应用在产生日志的时候,可以将同一个机器上的日志写入到同一个shard中,这样分析从每个shard中读取的各个用户的操作日志必定和用户操作顺序完全相同。

整个Java App程序日志如理逻辑设计如下:
screenshot

Java App内主要操作如下:

  1. 每个用户的请求,产生一条操作日志,追加到内存中的"操作日志队列"
  2. Java App后台存在一个日志发送线程,调用日志服务SDK的PutLogs接口,负责将日志批量发送至日志服务,并将Md5(machine_ip)作为 hash_key,确保同一个机器的日志发送至相同的shard
  3. 后台线程处于无限循环状态,空闲的时候,处于sleep状态,只要“操作日志队列" 中日志超过100条,或者已经sleep了1秒,该线程就会被唤醒,检查是否需要将队列中缓存的日志发送出去

适用场景

使用保序的特性主要适用于对日志产生的先后顺序有严格依赖的场景:

  • 用户操作行为记录日志
  • 数据库执行query日志
  • 单机程序打印日志

以上介绍了日志服务提供的shard保序写入和消费的特性,当单个shard写入数据超过其处理能力之后,可以通过shard的split操作来增加shard,关于shard split/merge以及其他新功能介绍,我们后续会更新至论坛。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
2月前
|
XML Java Maven
Spring5入门到实战------16、Spring5新功能 --整合日志框架(Log4j2)
这篇文章是Spring5框架的入门到实战教程,介绍了Spring5的新功能——整合日志框架Log4j2,包括Spring5对日志框架的通用封装、如何在项目中引入Log4j2、编写Log4j2的XML配置文件,并通过测试类展示了如何使用Log4j2进行日志记录。
Spring5入门到实战------16、Spring5新功能 --整合日志框架(Log4j2)
|
4月前
|
Java Spring 容器
Spring5系列学习文章分享---第六篇(框架新功能系列+整合日志+ @Nullable注解 + JUnit5整合)
Spring5系列学习文章分享---第六篇(框架新功能系列+整合日志+ @Nullable注解 + JUnit5整合)
35 0
|
运维 监控 UED
阿里云EMAS远程日志发布新功能(支持移动端设备主动上报日志)
使用阿里云EMAS远程日志最新推出的主动上报日志服务,由移动端提供主动上报接口,通过代码逻辑控制是否主动上报设备日志,问题出现的同时获取设备日志,极大提升特殊场景的日志获取效率,提升问题排查体验和用户满意度。
662 0
阿里云EMAS远程日志发布新功能(支持移动端设备主动上报日志)
|
新零售 Web App开发 监控
新功能: 阿里云新BGP DDoS高防 - 实时日志分析上线
阿里云新BGP高防与日志服务打通,对外开放访问日志与CC攻击日志。提供近实时的网站具体的日志自动采集存储、并提供基于日志服务的查询分析、报表报警、下游计算对接与投递的能力。
2993 37
|
SQL 监控 关系型数据库
新功能:阿里云RDS SQL执行日志 - 实时分析监控上线
阿里云关系数据库RDS(MySQL版本)的SQL执行日志已经与日志服务打通,提供实时的SQL执行分析功能,并提供内置可深钻的报表、支持自定义审计规则、异常报警、报表订阅与生态对接能力等。
7377 0
|
分布式计算 监控 Shell
新功能:日志服务IPython/Jupyter Notebook扩展发布
日志服务发布IPython/Jupyter Notebook扩展,可以轻松地使用Python对海量数据进行深度加工(ETL)、交互式分析(通过SQL、DataFrame)、机器学习与可视化等。
4095 0
|
运维 监控 大数据
阿里云CDN实时日志服务正式发布 数据驱动 实时决策
12月26日,阿里云CDN实时日志服务举办线上直播发布会,全网首次深度解读阿里云CDN大数据系统技术演进,产品应用场景与业务实操。阿里云CDN实时日志服务可以将CDN采集的实时日志,在小于60秒的时间进行实时、交互式分析和报表呈现,为监控、报警、渠道分析、运营分析提供实时、可靠的数据参考。
3067 0
|
数据采集 监控 容器
【功能发布】日志服务Logtail 2018-08
【功能发布】日志服务Logtail 2018-08
2333 0
|
SQL 机器学习/深度学习 监控
阿里云日志服务(SLS)SQL案例中心发布
阿里云日志服务(SLS)提供大规模日志实时查询与分析能力(LogSearch/Analytics),支持完整SQL92标准(提供restful 和 jdbc两种协议),除基本聚合功能外,支持完整的SQL计算,并支持外部数据源联合查询(Join)、机器学习、模式分析等函数。
3015 0
|
监控
日志服务(SLS)数据加工功能发布
日志服务用户,您好! 针对日志生命周期内存在的各种数据规整、分发、富化、清洗场景需求,阿里云日志服务(SLS)新推出了“数据加工”功能。 推荐在日志服务上进行数据规整、加工或联合其它数据源做分析的数据工程师使用。
7220 0

相关产品

  • 日志服务
  • 下一篇
    无影云桌面