最近面试遇到的一道题,不是特别有思路,想听听老师的见解,感谢感谢
QPS: 1000 modified tasks per second
一个task同时只能被一个用户modify
每个用户可以拥有自己的task pool
需要对所有的tasks 状态进行汇总,类似于dashboard 进行状态监控
类似于Git design
最近面试遇到的一道题,不是特别有思路,想听听老师的见解,感谢感谢
QPS: 1000 modified tasks per second
一个task同时只能被一个用户modify
每个用户可以拥有自己的task pool
需要对所有的tasks 状态进行汇总,类似于dashboard 进行状态监控
类似于Git design
根据你提的几点,需要设计几个部件:
能不能说一下跟 Git 的关系?
感谢老师回复,面试官就拿git和JIRA给我举的例子,说是tasks可以被分发到多个branch,而且task可以被schedule, 每个task的状态可以在dashboard上进行monitor, 我确实没见过这个问题,当时答得不是很好,所以想听听老师您的看法,其实我的理解是让你设计JIRA System,他说的这些需求听起来更像JIRA
面试官可能说的是 Github 里面 track issue 的机制,Jira 确实是一个更好的例子。Jira 的特点就是一份数据可以用很多种方式来查看,可以根据 Team 来查看,或者根据 Epic 来查看等等。听起来比较偏向数据库设计。
谢谢老师回我,基于您的思路,怎么样能把整体的ticket状态汇总到一起从而监控,老师能不能详细说一下这一块,还有有一个问题就是concurrency,怎么样能解决如果同时两个人同时请求一个task的问题?
先定义一下汇总的方式吧。如果说监控目标是实时追踪当前有多少 ticket 分别是 open, in progress, close 的。可以使用一个 Counter Service 来实现,每次更新就更新对应的 counter。如果监控目标是 Offline 汇总每个人都有多少个任务,那么考虑用 HiveQL 来统计。
Concurrency 使用 Lock 来处理就好,根据情况可以用 Read-write Lock.