1.儲存採用redis做資料儲存
2.id/keyword -> long_url
hset key_long_url id/keyword long_url
3. md5(long_url) -> id/keyword
hset key_short_url md5(long_url) id/keyword -> 用來判斷長鏈是否已經被轉過了,如果是直接返回對應的短鏈,如果不是開始轉短鏈並雙向儲存。
4. id -> keyword (數字id到字串的轉換演算法)
/*** 數字與字串的對映, 不能以數字0開頭自定義短鏈
* @param int or string $input
* @param boolean $tonum default false
* @return string/int
*/public static function alphaid($input, $tonum = false)
return $integer;
} else
$string = $chars[ intval( $num ) ] . $string;
return $string;
}
}
5. id生成器 hset allocate short_url_id 100000000
短鏈結服務實踐
實現 功能擴充套件 分布式高可用 其他目標 經過網上的查詢和參考,大致兩種方式。第二種方式 系統內自己實現。具體實現,需要看業務場景。推薦參考這篇文章 如何將乙個長url轉換為乙個短url?細節的實現方式,就直接看這篇文章就行。或者直接看 具體 參考 中 fun.gengzi.codecopy.bu...
微服務架構實踐(API Gateway)
服務的劃分可能隨著時間或者需求變更而變化 服務例項會動態變化 服務的api粒度,相對而言在微服務架構中,每個服務都只提供相對細粒度的api 這種情況下,我們就需要 api 閘道器 api gateway api 閘道器模式意味著你要把api 閘道器放到你的微服務們的最前端,並且要讓 api 閘道器變...
微服務架構與實踐 學習筆記
功能集中 和資料中心化 乙個發布包 部署後執行在統一程序的應用程式,我們通常稱之為單塊架構 yingyc 易於開發 易於測試 易於部署 易於水平伸縮 維護成本增加 持續交付周期長 新人培養周期長 技術選型成本高 可擴充套件性差 構建全功能團隊難 一組小的服務 執行在獨立程序 以及用輕量級的通訊 獨立...