Skip to content

Fangyi0917/Kuaishou-Kcode

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 

Repository files navigation

Kuaishou-Kcode

K-Code快手程序设计大赛,对服务调用日志数据进行统计分析,衡量系统QPS,p99,调用成功率等指标

热身赛warm-up

赛题背景

在工程实习过程中开发同学经常需要关注一个方法或接口的调用次数和处理时间,通常请求量衡量标准有QPS, 响应时间的衡量标准有P99, P50, AVG, MAX等,分别对应99分位响应时间,中位数时间,平均响应时间和最长耗时。 题目内容

实现一个计算QPS,P99, P50, AVG, MAX的程序,要求包含的功能如下:

  • 实现一个接收打点数据的接口,输入数据格式下面会给出
  • 实现一个查询一个方法在特定秒的QPS,P99,P50,AVG,MAX 输入数据集格式说明(单行):

调用方法时间(ms),方法名称,方法耗时(ms) 逗号分隔,每部分无空格 示例

    1589761895123,getUserName,103
    1589761895122,getUserName,1034
    1589761895124,getUserName,203
    1589761895233,getUserName,132
    1589761895376,getUserName,151

查询方式

输入:调用方法时间(s),方法名称

注意时间单位秒,逗号分隔,每部分无空格

结果:QPS,P99,P50,AVG,MAX

结果中的5个值都是以毫秒为单位,如遇小数,向上取整

示例

    输入:
    1589761895,getUserName

    结果:
    5,1034,151,325,1034

初赛first-round

赛题背景

在做系统设计的时候往往将一个复杂系统切分为几个至几十个微服务,随着服务粒度的细化,微服务数量极速上涨。在快手,服务间调用量最高峰可以达到每秒数千万次,每天高达数百亿次。为了对各个服务的监控状况进行监控和分析,需要收集服务间调用信息,这些调用信息包括:主调服务名、主调方IP、被调服务名、被调方IP、耗时、结果,调用发生时间等等。根据这些调用信息我们可以分析出服务的健康状况,例如:成功率、延迟情况、QPS等等。 题目内容

实现进程内对微服务调用信息的分析和查询系统,要求包含的功能如下:

  • 接收和分析调用信息的接口
  • 根据给定的条件进行查询和分析,描述如下: 输入主调服务名、被调服务名和时间(分钟粒度),返回在这一分钟内主被调按ip聚合的成功率和P99(按成功率倒排); 输入被调服务名和一个时间范围(分钟粒度, ==闭区间==),返回在区间内被调的平均成功率。

About

K-Code快手程序设计大赛,对服务调用日志数据进行统计分析,衡量系统QPS,p99,调用成功率等指标

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages