女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

互聯(lián)網(wǎng)短鏈接服務系統(tǒng)設計要點

馬哥Linux運維 ? 來源:馬哥Linux運維 ? 2023-08-25 10:57 ? 次閱讀

什么是短鏈接服務

短鏈接服務將原本較長的網(wǎng)址轉(zhuǎn)化成較短的網(wǎng)址,從而便于用戶的記憶與社交軟件上的傳播。

假設,我們要做一次簡單的營銷活動,活動流程大體如下:

首先,將營銷落地頁,一個較長的 URL通過短鏈接服務轉(zhuǎn)化為一個比較短的 URL;

然后,通過營銷渠道將短鏈接發(fā)送給目標用戶(比如短信);

在用戶獲得短鏈接后,通過鏈接訪問短鏈接服務。系統(tǒng)接受請求并將請求重定向到原始的長鏈地址;

最后,用戶使用長鏈地址直接訪問目標網(wǎng)站,從而獲得最終響應結(jié)果。

整體流程如下:

cdd20772-4290-11ee-a2ef-92fbcf53809c.jpg

短鏈接服務的核心流程主要包括 創(chuàng)建短鏈接 和 訪問短鏈接 。

系統(tǒng)設計要點

短鏈接服務的核心流程主要圍繞 Key 和 Map 進行構建的,如:

創(chuàng)建短鏈接。首先,生成一個 Key,將長鏈地址作為 value 保存到 Map 中,然后將短鏈域名和 key 拼接成短鏈接,返回給調(diào)用方;

訪問短鏈接。服務從 URL 中提取 key,然后在 Map 中查找目標鏈接,對目標地址做重定向處理。

Map 結(jié)構我們可以基于 MySQL 和 Cache 進行構建,那就剩下如下問題了:

Key 怎么來,又是怎么維護的?

如何通過 Http 協(xié)議進行請求重定向?

2.1 Key 生成

通常情況下,Key 的生成方式由很多。但對于短鏈接服務來說,生成 Key 的長度是一個非常重要的指標。

首先,生成的 Key 不能重復;其次,Key 要盡可能短。這樣才能使最終短鏈長度盡可能的小。

基于此,我們無法使用分布式 Key 生成算法,如 UUID。最佳的生成策略應該是基于 Number 自增的方案。

結(jié)論:我們需要一個基于 Number 自增的 Key 生成器。

2.2 Key 編解碼

如果我們使用 Number 作為 Key,那么還有沒有方案進一步壓縮 Number 長度呢?

對于數(shù)字來說:

8 進制比 2 進制短;

10 進制比 8 進制短;

16 進制比 10 進制短;

......

因此,我們可以使用高進制對數(shù)字 Key 進行編解碼,從而進一步壓縮 Key 的長度。

2.3 請求重定向

請求重定向是 HTTP 協(xié)議的一部分,JEE 的 HttpServletResponse 就提供重定向接口,同時 Spring MVC 對其也提供了支持。

基于 HttpServletResponse 的重定向:

public void redirect(@PathVariable String code, HttpServletResponse response) throws IOException {
    String url = getTargetUrl(code);
    // 調(diào)用 sendRedirect 方法,進行請求重定向
    response.sendRedirect(url);
}

基于 Spring MVC 的重定向:

public ModelAndView redirect(@PathVariable String code){
    String url = getTargetUrl(code);
    // 使用 RedirectView,進行請求重定向
    RedirectView redirectView = new RedirectView();
    redirectView.setUrl(url);
    return new ModelAndView(redirectView);
}

要點分析完成后,讓我們先把 maven 項目搭建起來。

項目搭建

該項目使用 Spring Boot 作為主要開發(fā)框架。

項目依賴組件:

組件 含義
spring-boot-starter-web Web
flyway 數(shù)據(jù)庫管理
Junit 測試
lombok 自動生成getter、setter

隨著功能的增加,將為項目添加更多依賴。

3.1. 項目生成

瀏覽器中輸入 https://start.spring.io/ ,打開 spring-boot 項目生成器,按照下列配置生成項目:

名稱
項目類型 maven
語言 java
Boot版本 2.1.1
group com.geekhalo
artifact tinyurl
dependency web、flyway、lombok

點擊“Generate Project”,生成并下載項目。將下載的項目解壓,得到一個完整的 maven 項目,打開熟悉的 IDE,將項目導入到 IDE 中。

我們生成了一個空的 Spring Boot 項目,稍后的所有操作都會基于這個項目完成。

項目成功生成后,讓我們對系統(tǒng)進行進一步分析。首先,需要對系統(tǒng)中的核心組件進行梳理。

核心組件

基于設計分析,我們可以整理出系統(tǒng)所需的核心組件。

4.1 NumberGenerator

通過自增方式生成 Number 類型的 Key。

其接口簽名如下:

public interface NumberGenerator {
    /**
     * 生成自增 Key
     * @return
     */
    Long nextNumber(NumberType type);
}

4.2 NumberEncoder

對 Number 進行編解碼操作,以進一步減少 Key 的長度。

其接口簽名如下:

public interface NumberEncoder {
    /**
     * 對 Number 進行編碼
     * @param id
     * @return
     */
    String encode(Long id);


    /**
     * 對 Number 進行解密
     * @param str
     * @return
     */
    Long decode(String str);
}

4.3 TargetUrlRepository

用于處理目標 URL 的持久化。

其接口定義如下:

public interface TargetUrlRepository {
    /**
     * 添加鏈接
     * @param targetUrl
     */
    void save(TargetUrl targetUrl);


    /**
     * 獲取連接
     * @param id
     * @return
     */
    TargetUrl getById(Long id);
}

至此,系統(tǒng)核心組件就分析完了。接下來,讓我們看下核心流程。

核心流程

核心流程主要包括創(chuàng)建短鏈接和訪問短鏈接。

5.1 創(chuàng)建短鏈接

創(chuàng)建短鏈接,主要服務于內(nèi)部系統(tǒng),將較長的 URL 地址提交到短鏈接服務,并獲取與之對應的較短的 URL 地址。

創(chuàng)建短鏈接流程大體如下:

cde8633c-4290-11ee-a2ef-92fbcf53809c.jpg

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 互聯(lián)網(wǎng)

    關注

    54

    文章

    11231

    瀏覽量

    105581
  • 系統(tǒng)設計

    關注

    0

    文章

    163

    瀏覽量

    21936
  • MySQL
    +關注

    關注

    1

    文章

    849

    瀏覽量

    27518
  • key
    key
    +關注

    關注

    0

    文章

    53

    瀏覽量

    13027

原文標題:高性能系統(tǒng)設計:互聯(lián)網(wǎng)短鏈接服務

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    聯(lián)想將進軍互聯(lián)網(wǎng)

    投資力度將達到數(shù)千萬元人民幣。  基于該協(xié)議,聯(lián)想的互聯(lián)網(wǎng)電視終端將獲得包括SMG來自全球的高清、高質(zhì)的視聽內(nèi)容,以及多種非視聽增值服務。SMG視聽資源除了應用于聯(lián)想的互聯(lián)網(wǎng)電視終端外,還將應用于聯(lián)想
    發(fā)表于 03-18 10:48

    【MiCOKit申請】基于互聯(lián)網(wǎng)WiFi的智能家居系統(tǒng)

    申請理由:本產(chǎn)品是基于互聯(lián)網(wǎng)WiFi控制系統(tǒng),USB串口調(diào)試比較方便,正好能夠滿足我現(xiàn)在開發(fā)的智能家居的要求,之前也開發(fā)過類似的WiFi無線模塊的項目,智能農(nóng)田灌溉系統(tǒng),基于無線通信,太陽能綠色能源
    發(fā)表于 08-09 17:43

    互聯(lián)網(wǎng)知識分享交流

    互聯(lián)網(wǎng)交流,你了解互一起討論一下吧聯(lián)網(wǎng)+嗎,查看世界工廠網(wǎng)網(wǎng)頁,你會了解更hulianwang多的hulian互聯(lián)網(wǎng)知識哦
    發(fā)表于 12-29 15:25

    工業(yè)互聯(lián)網(wǎng)

    工業(yè)互聯(lián)網(wǎng)是全球工業(yè)系統(tǒng)與高級計算、分析、感應技術以及互聯(lián)網(wǎng)連接融合的結(jié)果。它通過智能機器 間的連接并最終將人機連接,結(jié)合軟件和大數(shù)據(jù)分析,重構全球工業(yè)、激發(fā)生產(chǎn)力,讓世界更美好、更快速、更安全、更
    發(fā)表于 01-25 09:29

    工業(yè)互聯(lián)網(wǎng)

    工業(yè)互聯(lián)網(wǎng)是全球工業(yè)系統(tǒng)與高級計算、分析、感應技術以及互聯(lián)網(wǎng)連接融合的結(jié)果。它通過智能機器 間的連接并最終將人機連接,結(jié)合軟件和大數(shù)據(jù)分析,重構全球工業(yè)、激發(fā)生產(chǎn)力,讓世界更美好、更快速、更安全、更
    發(fā)表于 04-17 15:56

    技術與互聯(lián)網(wǎng)+

    急急急!!!!!!!!!!!請問,如果用單片機做出了一個作品,互聯(lián)網(wǎng)+可以怎么用的上我的作品?除了用互聯(lián)網(wǎng)賣出去,還可以怎么辦呢
    發(fā)表于 07-03 22:53

    智能熱潮來襲,凈水行業(yè)的”互聯(lián)網(wǎng)+“時代

    智能熱潮來襲,凈水行業(yè)的”互聯(lián)網(wǎng)+“時代互聯(lián)網(wǎng)時代的到來,很多銷售理念被顛覆!有人說免費才能擴大市場,有人認為產(chǎn)品質(zhì)量可靠才能站穩(wěn)陣腳,還有觀點認為必須提供完善的售后服務,可對于傳統(tǒng)企業(yè)——凈水行業(yè)
    發(fā)表于 09-21 21:58

    智能熱潮來襲,凈水行業(yè)的”互聯(lián)網(wǎng)+“時代

    智能熱潮來襲,凈水行業(yè)的”互聯(lián)網(wǎng)+“時代互聯(lián)網(wǎng)時代的到來,很多銷售理念被顛覆!有人說免費才能擴大市場,有人認為產(chǎn)品質(zhì)量可靠才能站穩(wěn)陣腳,還有觀點認為必須提供完善的售后服務,可對于傳統(tǒng)企業(yè)——凈水行業(yè)
    發(fā)表于 09-22 15:04

    互聯(lián)網(wǎng)與工業(yè)物聯(lián)網(wǎng)之間的區(qū)別與聯(lián)系

    了,就先說說互聯(lián)網(wǎng)吧。現(xiàn)階段的互聯(lián)網(wǎng)早已不滿足于收發(fā)郵件、文件傳輸、Web服務等功能,而由互聯(lián)網(wǎng)衍生出來的視頻直播、網(wǎng)頁游戲、音樂、社交、電子商務等
    發(fā)表于 06-14 10:18

    基于“互聯(lián)網(wǎng)+”與北斗的精準定位智慧停車系統(tǒng)

    停車系統(tǒng)進行集中管理,相信應該會好很多。精準定位智慧停車系統(tǒng)目前,太原市已經(jīng)開始著手建設“互聯(lián)網(wǎng)+”與北斗精準定位智慧停車系統(tǒng),結(jié)合車位傳感及智能收費管理終端,創(chuàng)新無人值守道路停車管理
    發(fā)表于 08-08 17:07

    聯(lián)網(wǎng)互聯(lián)網(wǎng)有何關聯(lián)

    聯(lián)網(wǎng)其實是互聯(lián)網(wǎng)的一個延伸,物聯(lián)網(wǎng)的本質(zhì)還是互聯(lián)網(wǎng)互聯(lián)網(wǎng)的終端是計算機(PC、服務器),而物
    發(fā)表于 09-12 15:56

    空間互聯(lián)網(wǎng)天線設計

    如鳥兒展翅,如飛機翱翔,未來的數(shù)據(jù)共享方式是如此的快捷、自由。環(huán)繞地球運行的衛(wèi)星有可能徹底地改變?nèi)祟愂占c共享信息的方式。相比于有線或無線數(shù)據(jù)網(wǎng)絡,以衛(wèi)星系統(tǒng)為基礎的空間互聯(lián)網(wǎng)(Internet of Space,簡稱 IoS)技術能夠向全球各地,甚至是最偏遠的地區(qū)提供網(wǎng)
    發(fā)表于 07-16 07:31

    什么是產(chǎn)業(yè)互聯(lián)網(wǎng)

    2018年10月,騰訊宣傳進軍產(chǎn)業(yè)互聯(lián)網(wǎng);2019年9月,騰訊完成了史上最大的組織架構調(diào)整,新成立云與智慧產(chǎn)業(yè)事業(yè)群,正式發(fā)力產(chǎn)業(yè)互聯(lián)網(wǎng);2020年1月,騰訊發(fā)布《2020產(chǎn)業(yè)安全報告:產(chǎn)業(yè)互聯(lián)網(wǎng)
    發(fā)表于 01-18 11:40

    在ARM9上用輕型WEB服務器可以不接入互聯(lián)網(wǎng)

    arm9linux系統(tǒng)平臺:最近查ARM9上可以用的輕型WEB服務器 ,有BOA, HTTPD , THTTPD 等等,支持資源比較好的 是BOA ,但這種實現(xiàn)方式需要接入互聯(lián)網(wǎng),而且還可能集成
    發(fā)表于 07-22 14:10

    ARM上實現(xiàn)不用接入互聯(lián)網(wǎng)的WEB服務器可以嗎

    arm9linux系統(tǒng)平臺:最近查ARM9上可以用的輕型WEB服務器 ,有BOA, HTTPD , THTTPD 等等,支持資源比較好的 是BOA ,但這種實現(xiàn)方式需要接入互聯(lián)網(wǎng),而且還可能集成
    發(fā)表于 10-28 10:53