首頁  >  文章  >  後端開發  >  segmentfault的url怎麼實現的?

segmentfault的url怎麼實現的?

WBOY
WBOY原創
2016-08-18 09:15:381173瀏覽

https://segmentfault.com/a/11...
url後面的1190000000490733是怎麼實現的,以及這種方式的好處

回覆內容:

https://segmentfault.com/a/11...
url後面的1190000000490733是怎麼實現的,以及這種方式的好處

這就是你要的答案
http://segmentfault.com/q/1010000000142374

以下答案全是猜測,如有雷同,純屬巧合!

有一個類似全域發號器的服務,依照固定的系統規則進行發號

前三位是預留的給系統模組用標識符,例如101是問答,119是文章,筆記是133,職位是128,活動是116,收藏夾是123等等或許還有其他模組

接著後面13位相當於預留了萬億資料量,對系統內產生的所有模組所有資料統一做自增

好處是:
1.方便資料庫依模組分庫、分錶、分散式等部署
2.方便進行服務化架構
3.給遞歸採集全棧資料一定的門檻
4.隱藏某個模組的實際資料量
5.透過ID前三位快速知道這個資料屬於哪個模組
6.應該還有...

a應該代表article,你這個網址就代表查看ID為1190000000490733的文章。這種ID是有一些隨機產生規則的,目的就是防止使用者去猜,防止爬蟲去抓。你要是1,2,3,4,5這種整數連著往後排,別人就好猜了

很像RESTful接口,讀讀RESTful API 設計指南這篇文章就知道RESTful規範的好處了,更合理地使用了http動作,讓接口變得很清晰。
至於實現方式,只要保證產生唯一id就可以實現了吧。

可以使用mysql的uuid_short這個函數產生uuid。當然sf也可以自己自訂規則或是使用php的生成uuid的函數實作。

測試了一下,發現這個id是不連續的。猜測應該是一個支援分部署的id生成服務產生的id。

<code>https://segmentfault.com/a/1190000000490733
https://segmentfault.com/q/1010000006600460</code>

文章;問題;評論估計都是用的這一個id生成服務,所以,直接將某個id+1,是訪問不到數據的。

之所以使用這種分散式的id生成器,是

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn