由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - system deisng里tinyUrl的问题,求大神指点
相关主题
TinyUrl的design需要NON-SQL 还是SQL请教一下palindrome partitioning用memoization的问题
TinyUrl的design需要NON-SQL 还是SQL问一道算法题
leader election没人考?Programming Pearl上的3way partition好像不work
请教个编程题,比较急,坐等google老题:Find kth largest of sum of elements in 2 sorted array
问个考古的题问个google面试题
问两道onsite题目请问G一题
G onsite面经兼求内推请教一个Palindrome Partition问题
谁能科普Time Series Daemon (TSD)系统设计leetcode Palindrome Partitioning
相关话题的讨论汇总
话题: tinyurl话题: timestamp话题: counter话题: local话题: shorturl
进入JobHunting版参与讨论
1 (共1页)
t*******u
发帖数: 6
1
要create一个tinyUrl一般的做法都是生成一个数字的ID,然后把这个数字转换成[0-9]
[a-z][A-Z]的shortUrl
问题是如何生成这个数字ID呢?可以维持一个counter每次create tinyUrl就加1。但是
这样的话怎样distribute create到很多server上?
求大神指点
z*********8
发帖数: 2070
2
timestamp + machine id + local counter + anything else appropriate
t*******u
发帖数: 6
3

这样的话会是一个很长的id,怎样把它转成一个7-8个char的shortUrl呢?

【在 z*********8 的大作中提到】
: timestamp + machine id + local counter + anything else appropriate
w*****1
发帖数: 6807
4
7-8个char组合起来数值很大的,62 base,这样做问题不大

【在 t*******u 的大作中提到】
:
: 这样的话会是一个很长的id,怎样把它转成一个7-8个char的shortUrl呢?

z*********8
发帖数: 2070
5
事实上这是个很常见的follow up: 对于1 billion requests, 以上每个segment大概
需要多少位数? 合并之后什么数据类型可以hold? 转化为62进制后需要几个字符?

【在 t*******u 的大作中提到】
:
: 这样的话会是一个很长的id,怎样把它转成一个7-8个char的shortUrl呢?

l****u
发帖数: 1764
6
为什么是62 base啊? 大写26+小写26+数字10?
url一般都是case sensitive吧,比如这个网站上生成的tiny url,替换大小写也work
http://tinyurl.com/
t*******u
发帖数: 6
7

1 billion request大概是10K rps,可以分到50个partition上,每个200rps
所以可以用3个digit来表示partition id。
timestamp大概10个digit。
这样的话就13个digit了,可以用string来hold。但是还没加local counter。
62进制8字符大概14digit,这样就没有local counter的空间了。
为什么一定要加time stamp呢?不能直接就partition id + local counter吗?

【在 z*********8 的大作中提到】
: 事实上这是个很常见的follow up: 对于1 billion requests, 以上每个segment大概
: 需要多少位数? 合并之后什么数据类型可以hold? 转化为62进制后需要几个字符?

z*********8
发帖数: 2070
8
timestamp, machine id, local counter都是数字, 为什么要用string来hold呢?
不能直接就partition id + local counter的原因: 因为机器或者local counter
process会crash, 所以local counter会reset, 从而返回同样的值

【在 t*******u 的大作中提到】
:
: 1 billion request大概是10K rps,可以分到50个partition上,每个200rps
: 所以可以用3个digit来表示partition id。
: timestamp大概10个digit。
: 这样的话就13个digit了,可以用string来hold。但是还没加local counter。
: 62进制8字符大概14digit,这样就没有local counter的空间了。
: 为什么一定要加time stamp呢?不能直接就partition id + local counter吗?

z*********8
发帖数: 2070
9
是case sensitive的, 所以大小写就有52种可能, 这是w3定义的: https://www.w3.
org/TR/WD-html40-970708/htmlweb.html

work

【在 l****u 的大作中提到】
: 为什么是62 base啊? 大写26+小写26+数字10?
: url一般都是case sensitive吧,比如这个网站上生成的tiny url,替换大小写也work
: http://tinyurl.com/

t*******u
发帖数: 6
10

明白了
那这样的话就用long来hold。10个digit的timestamp + 3个digit的partition id +
local counter4个digit,一共17个,需要10个char的shorturl。这样算对吗?

【在 z*********8 的大作中提到】
: timestamp, machine id, local counter都是数字, 为什么要用string来hold呢?
: 不能直接就partition id + local counter的原因: 因为机器或者local counter
: process会crash, 所以local counter会reset, 从而返回同样的值

相关主题
问两道onsite题目请教一下palindrome partitioning用memoization的问题
G onsite面经兼求内推问一道算法题
谁能科普Time Series Daemon (TSD)系统设计Programming Pearl上的3way partition好像不work
进入JobHunting版参与讨论
m******e
发帖数: 82
11

50年后的今天timestamp=1576800000,2进制31位即可表示
1. 如果tiny url只有6个字符,最多能表示56800235584种可能,2进制大概36位,用5
位表示partition id+local counter,貌似不充裕
2. 7个字符,2进制42位,除去timestamp还有11位,就是说每秒支持2046个url,差不多
3. 8个字符,2进制48位,除去timestamp还有17位,每秒支持131072,完全充足了

【在 t*******u 的大作中提到】
:
: 明白了
: 那这样的话就用long来hold。10个digit的timestamp + 3个digit的partition id +
: local counter4个digit,一共17个,需要10个char的shorturl。这样算对吗?

a*********0
发帖数: 2727
12
1 billion request和10k是什么关系?

【在 t*******u 的大作中提到】
:
: 明白了
: 那这样的话就用long来hold。10个digit的timestamp + 3个digit的partition id +
: local counter4个digit,一共17个,需要10个char的shorturl。这样算对吗?

y***g
发帖数: 1492
13
多个server的话 在shorturl左边多加一位 用来标定server
long-》short 用一个hash%62来决定这一位 存在对应的server
short-》long 根据这一位找到对应的server做查询

9]

【在 t*******u 的大作中提到】
: 要create一个tinyUrl一般的做法都是生成一个数字的ID,然后把这个数字转换成[0-9]
: [a-z][A-Z]的shortUrl
: 问题是如何生成这个数字ID呢?可以维持一个counter每次create tinyUrl就加1。但是
: 这样的话怎样distribute create到很多server上?
: 求大神指点

s**********1
发帖数: 12
j**********3
发帖数: 3211
15
现在不流行考这个了吧?
c********t
发帖数: 5706
16
换成String才是short url啊
对timestamp不太明白,加上了timestamp以后,还怎么用tiny url search original
url呢?

【在 z*********8 的大作中提到】
: timestamp, machine id, local counter都是数字, 为什么要用string来hold呢?
: 不能直接就partition id + local counter的原因: 因为机器或者local counter
: process会crash, 所以local counter会reset, 从而返回同样的值

1 (共1页)
进入JobHunting版参与讨论
相关主题
leetcode Palindrome Partitioning问个考古的题
Partition List的例子对吗?问两道onsite题目
Palindrome Partitioning II 的DP做法?G onsite面经兼求内推
Ebay marketing analytics 面试题目谁能科普Time Series Daemon (TSD)系统设计
TinyUrl的design需要NON-SQL 还是SQL请教一下palindrome partitioning用memoization的问题
TinyUrl的design需要NON-SQL 还是SQL问一道算法题
leader election没人考?Programming Pearl上的3way partition好像不work
请教个编程题,比较急,坐等google老题:Find kth largest of sum of elements in 2 sorted array
相关话题的讨论汇总
话题: tinyurl话题: timestamp话题: counter话题: local话题: shorturl