基础构思基于 Node + MongoDB 或 Redis,Nginx 反代 Express 。
项目主要是自用,可能会加 Token 鉴权,因此可能不用关心 URL 审核的问题。
目前生成短链部分没有问题...主要是关于跳转的逻辑。有两种思路,一是伪静态到页面然后请求后端接口返回长链接在进行跳转,另外一种是直接 Node 从数据库取到长链接然后 Express 重定向跳转。
各位大佬能否给一些建议🤔
1
learningman 2020-12-06 12:55:24 +08:00
说白了就是一个 js 跳转一个 302 呗,我个人觉得 302 好一点
|
2
qiayue 2020-12-06 12:57:00 +08:00
短链需求是打开短链跳转到长链,最重要的指标就是跳转速度,所以如果为了追求最快速度,最好不要用数据库
|
3
qiayue 2020-12-06 12:57:58 +08:00
上条没打完
不仅不要用数据库,更不要用前端 js 跳转,直接后端返回 302 给浏览器即可 |
5
zhengxiaowai 2020-12-06 13:58:19 +08:00 1
先注册一个短的域名。。
|
7
Junzhou 2020-12-06 14:12:32 +08:00 via iPhone
既然生成和解析短链接没问题,那直接 302 就可以了。
|
8
opengps 2020-12-06 14:20:40 +08:00
我已经自用好几年了,挺稳的,不过自己域名有一点不太好的就是,总有那么些地域的局部 dns 不能正常解析
|
9
opengps 2020-12-06 14:22:02 +08:00
看到有人提醒不要用数据库,补充下,数据库当然得用,不然咋存,只是作为很少变更的用途,用缓存多挡一层为佳。试试证明短链接压力再大,也比一个页面处理上百 k 轻松,单服务器可以轻松承载很大的并发访问量
|
10
xcstream 2020-12-06 14:23:13 +08:00
直接 302
|
11
jiangzm 2020-12-06 14:43:32 +08:00
需求太简单了,而且要求跳转速度,所以最好不要用 node 层,直接 nginx+redis 模块干就完事,如果一定要用 node 也不要 Express 原生的 node 就好了。
|
12
jiangzm 2020-12-06 14:46:34 +08:00
写入肯定要用数据库,读取可以不用数据库,同步也不要放在读取端。
|
13
huayumo 2020-12-06 14:52:46 +08:00
如果是我的话,也没有特殊需求的话,我就数据库直接搞了
|
14
imdong 2020-12-06 15:01:40 +08:00
短网址,特别是自己用的,太容易了,怎么简单怎么快就怎么来。
这个随便搞一搞都不会太差,核心代码无非取出 ID,连接数据库,查出结果,header 302 搞定。 想速度快,就加一层 Redis 缓存就好了,如果是 node,都不用存 redis,取出来直接放数组就好了,没有就去查数据库。 连 Redis 都没必要,直接存内存不香么。 |
15
forgottencoast 2020-12-06 16:05:49 +08:00
速度快、速度快,是不是 1 秒钟上百亿的资金流动?
能到这里来问问题的,数据库就够了,简单好用,先解决业务问题。 node 进程内加个内存缓存针对高命中的短链就可以了。 |
16
kingfalse 2020-12-06 16:11:34 +08:00 1
直接 nginx lua redis 比较好吧
|
17
TheZihanGu OP @zhengxiaowai 已经整了一个四位已备域名了,就是备案翻了就不好了🤦♂️
@Junzhou @xcstream 感谢提供思路 @imdong @kingfalse Lua 没撸过,太菜了...不会整🤔 |
18
datou 2020-12-06 20:45:36 +08:00
现成的手把手全套教学 |
19
pytth 2020-12-06 23:03:47 +08:00 via Android
我这个,没有存数据库,直接就是存本地数组。http://o1o.run
|
20
lihongming 2020-12-07 02:11:08 +08:00 via iPhone
哈哈,这是老外最喜欢考的面试题——假设你是 Twitter 的短网址开发者,你要怎么设计你的系统?
主要考点是数据库的选型、分区、分片、缓存、扩展、容量估算等。考得确实是数据库,楼主不要灰心。 YouTube 上有很多这种题的面试经,基本也是围绕数据库问题在讨论。 |
21
netnr 2020-12-07 09:03:58 +08:00 via Android
一个 id 生成一个文件,内容写入链接,不知道相比数据库咋么样
|
22
securityCoding 2020-12-07 09:59:44 +08:00
@netnr 肯定慢很多啊
|
23
chogath 2020-12-07 10:13:07 +08:00
关键词: 数据库、唯一索引(通常是自增主机 ID )、缓存层( Redis )
|
24
qwerthhusn 2020-12-07 11:44:04 +08:00
如果会 LUA 的话最好,直接 Nginx 撸一个
|
25
libook 2020-12-07 14:06:38 +08:00
直接返回 302 最简单。
先做个 MVP 方案出来,根据实际使用中遇到的问题再做优化就好。 |
26
simon3000 2020-12-07 17:48:32 +08:00
数据库方面推荐一个 kv 的:LevelDB
|
27
TheZihanGu OP @qwerthhusn 问题是太菜了,不会撸😂
@libook 感谢建议,已经写出来 302 跳转了。 @netnr 你别说,最近我还真看到一个类似的。每生成一个短链接都生成目录+ HTML 文件然后 JavaScript 跳转...🤔 |
28
atian25 2020-12-18 16:54:39 +08:00
我们这边支撑了蚂蚁的短链服务,具体的方案里面,mongodb 、redis 这些都没用,直接用 oss 就可以了。
|