亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 服務(wù)器 > 管理維護 > 正文

微博縮短網(wǎng)址是如何實現(xiàn)的_負載集群教程

2024-09-10 14:21:08
字體:
供稿:網(wǎng)友
由于微博字數(shù)限制,網(wǎng)址縮短被普遍使用。加上網(wǎng)址縮短服務(wù)提供商提供網(wǎng)址追蹤等服務(wù),這一業(yè)務(wù)日漸興起。知名網(wǎng)址縮短服務(wù)商Bit.ly的主要業(yè)務(wù)便是為微博Twitter提供網(wǎng)址縮短服務(wù)。 比如sina微博的sinaurl.cn,騰訊微博的url.cn等。

  實現(xiàn)原理很簡單,主要是將用戶提交的 url 地址轉(zhuǎn)化成一個唯一的字串,這個字串就對應(yīng)著真實的 url,怎么樣實現(xiàn)這種轉(zhuǎn)換呢?

  數(shù)據(jù)庫只有兩個字段seq(自增長數(shù)字)和url(數(shù)字的url地址,建立索引)。

  用戶輸入一個url地址,查詢表是否包含此url,如果存在,則返回seq的數(shù)字,

  如果不存在,則插入數(shù)據(jù)庫,得到一個新增加的自增seq數(shù)字,為了縮短數(shù)字占用的字符數(shù),我們可以把abc等字母的大小寫用上。這樣10個數(shù)字,26個小寫字母,26個大小字母就組成了一個62進制了。比如數(shù)字10000000000(100億)轉(zhuǎn)換后就是aUKYOA,只有6位了,這樣就能縮短很多的網(wǎng)址了。

<?php//十進制轉(zhuǎn)到其他制function dec2any($num, $base=62, $index=false){  if (!$base)  {    $base = strlen($index);  }  elseif(!$index)   {    $index = substr("0123456789abcdefghijklmnopqrstuvwxyz    ABCDEFGHIJKLMNOPQRSTUVWXYZ", 0, $base );  }  $out = "";  for ($t = floor(log10($num) / log10($base )); $t >= 0; $t-- )   {    $a = floor( $num / pow( $base, $t ) );    $out = $out . substr( $index, $a, 1 );    $num = $num - ( $a * pow( $base, $t ) );  }  return $out;}function any2dec($num, $base=62, $index=false){   if (!$base)  {    $base = strlen( $index );  }  elseif(!$index)  {    $index = substr("0123456789abcdefghijklmnopqrstuvwxyz    ABCDEFGHIJKLMNOPQRSTUVWXYZ", 0, $base);  }  $out = 0;  $len = strlen($num) - 1;  for ($t = 0; $t <= $len; $t++)  {    $out = $out + strpos($index, substr($num, $t, 1 )) * pow($base, $len - $t);  }  return $out;}?>

  得到縮短的網(wǎng)址以后,怎樣實現(xiàn)網(wǎng)址的轉(zhuǎn)發(fā)呢?可以利用 ttserver,將縮短網(wǎng)縮字串當(dāng)作key,真實的 url 地址當(dāng)作 value,存入ttserver中。ttserver本身就提供 http 訪問,只需要稍加修改就可以直接利用 ttserver 進行縮短網(wǎng)址的轉(zhuǎn)發(fā):

  在 ttserver 源碼目錄下找到 ttserver.c 這個文件,這里我用的是 tokyotyrant-1.1.39 ,跳到第 2981 行,將下面的幾行改成圖中所示:

微博縮短網(wǎng)址的實現(xiàn)

  保存退出,編譯安裝 ttserver,網(wǎng)上有很多安裝教程,可以參考。

  啟動 ttserver,并向里面寫入一條 key 為 aaaaaa,value為 http://www.baidu.com 的值。

curl -X PUT http://127.0.0.10:11221/aaaaaa -d "http://www.baidu.com"

  主要目的是用 http 訪問 ttserver 時直接取得到真實的 url 并做轉(zhuǎn)發(fā)。這樣做很方便,但不安全,ttserver 的 http 還支持刪除、修改、插入數(shù)據(jù)(當(dāng)然也可以修改 ttserver 的 http 訪問入口,屏蔽掉這幾種操作)。負載均衡方面,可以通過添加多條 A 記錄隨機轉(zhuǎn)發(fā)到不同的 ttserver 機器上,但這樣每臺機器上存放的數(shù)據(jù)必須相同,網(wǎng)上也有說過ttserver  存過千萬左右的數(shù)據(jù)以后不太穩(wěn)定。

  利用 nginx 就能很好解決直接用 ttserver 的問題,用 nginx 過濾掉 http 訪問 ttserver 的刪除、修改、插入的操作,并為多臺 ttserver 提供反向代理的功能。如下圖所示:

微博縮短網(wǎng)址的實現(xiàn)

  安裝 nginx,我這里采用的是 nginx-0.8.36.tar.gz。安裝 nginx 請參考:http://blog.s135.com/nginx_php_v6。

  打開 nginx.conf 配置文件:

#user  nobody;#啟動 8 個 nginx 進程worker_processes  8;#error_log  logs/error.log;#error_log  logs/error.log  notice;#error_log  logs/error.log  info;#pid        logs/nginx.pid;events {    # 用 epoll,最大連接數(shù)    use epoll;    worker_connections 65535;}http {    include       mime.types;    default_type  application/octet-stream;    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '    #                  '$status $body_bytes_sent "$http_referer" '    #                  '"$http_user_agent" "$http_x_forwarded_for"';    #access_log  logs/access.log  main;    sendfile        on;    #tcp_nopush     on;    # 由于只做轉(zhuǎn)發(fā),將超時時間設(shè)為 0    keepalive_timeout  0;    #gzip  on;    # 反向代理 ttserver 1 號機,這里我放在一臺機器上開了三個不同端口    upstream backend_1 {        server 127.0.0.10:11221 weight=5 max_fails=3 fail_timeout=1s;    }    # 反向代理 ttserver 2 號機    upstream backend_2 {        server 127.0.0.10:11221 weight=5 max_fails=3 fail_timeout=1s;    }    # 反向代理 ttserver 3 號機    upstream backend_3 {        server 127.0.0.10:11221 weight=5 max_fails=3 fail_timeout=1s;    }    server {        listen       80;        server_name  url.cn;        #charset koi8-r;        #access_log  logs/host.access.log  main;        #當(dāng)路徑包含/count的時候,則代理到ttserver后端進行請求數(shù)據(jù)。	#請注意,這里屏蔽了PUT,DELETE,POST方法,只是使用了GET,主要目的是為了安全性,    #因為DELETE,POST,PUT是可以修改數(shù)據(jù)的	location ~* /count(.*) {	    if ($request_method = PUT ) {	        return 403;	    }	    if ($request_method = DELETE ) {	        return 403;	    }	    if ($request_method = POST ) {	        return 403;	    }	    proxy_method GET;	}        #將以 a-z 為第一個字符的 url 代理到 ttserver 1 號機	location ~* "^/([a-z]{1})([a-zA-Z0-9]{5})" {	    proxy_pass http://backend_1;	}        #將以 A-Z 為第一個字符的 url 代理到 ttserver 2 號機	location ~* "^/([A-Z]{1})([a-zA-Z0-9]{5})" {	    proxy_pass http://backend_2;	}        #將以 0-9 為第一個字符的 url 代理到 ttserver 3 號機	location ~* "^/([0-9]{1})([a-zA-Z0-9]{5})" {	    proxy_pass http://backend_3;	}        #error_page  404              /404.html;        # redirect server error pages to the static page /50x.html        #        error_page   500 502 503 504  /50x.html;        location = /50x.html {            root   html;        }    }} 

  保存 nginx.conf 退出,現(xiàn)在就可以啟動 ttserver了,我這里做演示,為了方便就在一臺機器的三個端口啟動了三個 ttserver。如圖:

點擊查看大圖

  這里用 /ttserver/url_1 存放 ttserver 1號機的數(shù)據(jù),依此類推,分別在 11222、11223啟動 ttserver。

  接著啟動 nginx:

ulimit -SHn 65535/usr/local/nginx/sbin/nginx

  接著在服務(wù)器上用下面的命令插入測試數(shù)據(jù):

curl -X PUT http://127.0.0.10:11221/aaaaaa -d "http://www.baidu.com"curl -X PUT http://127.0.0.10:11222/Aaaaaa -d "http://www.soso.com"curl -X PUT http://127.0.0.10:11223/1aaaaa -d "http://www.qq.com"

  配置你機器的 hosts 指向 nginx 服務(wù)器:

127.0.0.10    url.cn

  現(xiàn)在我們就可以打開瀏覽器,輸入 http://url.cn/aaaaaa 就可以跳轉(zhuǎn)到 baidu 上了,http://url.cn/Aaaaaa 就可以跳轉(zhuǎn)到 soso 了,http://url.cn/1aaaaa 就可以跳轉(zhuǎn)到 qq 上。至此配置完成,nginx只做轉(zhuǎn)發(fā)工作,應(yīng)付大規(guī)模的訪問應(yīng)該沒什么問題,這也正是 nginx 所擅長的。ttserver 數(shù)據(jù)的取值操作也是很快的,在后面可以多開幾臺 ttserver,分散大量訪問時的負載。

  前臺程序根據(jù)用戶提交的 url 生成短的 url 后,根據(jù)前面的 nginx 分發(fā)規(guī)則寫到某一臺 ttserver 中,就可以了。nginx還支持一直 url hash 的均衡,但需要安裝一個第三方模塊ngx_http_upstream_hash_module,具體可以參考:http://www.CuoXIn.com/System/plus/view.php?aid=6486

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
双性尿奴穿贞c带憋尿| 欧美成人sm免费视频| 日韩aⅴ视频一区二区三区| 天天爱天天操天天干| 亚洲女人毛茸茸高潮| 亚洲一区二区三区无吗| 久久社区一区| 老司机aⅴ毛片免费观看| 亚洲精品免费一区亚洲精品免费精品一区| 精品综合久久久久久97| 另类图片综合电影| 鲁鲁狠狠狠7777一区二区| 色噜噜色狠狠狠狠狠综合色一| 91精选在线观看| av毛片在线播放| 2020中文字幕在线| 欧美三级免费观看| 亚洲精品911| 国产资源在线一区| 在线视频日韩欧美| 天堂网中文在线| 黄色一级视频在线观看| 小早川怜子一区二区三区| 免费看成人av| 电影亚洲一区| 黄色av网址在线| 91高潮大合集爽到抽搐| 成人黄色影片在线| 国产制服丝袜一区| 日韩网站中文字幕| 国产二区国产一区在线观看| 欧美深夜视频| 国产一区二区三区影院| 青青草原免费观看| 一级α片免费看刺激高潮视频| a级片在线观看视频| 暖暖在线中文免费日本| 日本综合在线| 三级在线看中文字幕完整版| 亚洲高清国产精品| 欧美一卡2卡3卡4卡无卡免费观看水多多| av中文字幕免费在线观看| 成人三级视频在线观看| 鲁丝片一区二区三区| 性欧美xxxx大乳国产app| 国产精品美女久久福利网站| 国产精品久久久久一区二区三区厕所| 久久亚洲精品网站| 久久综合之合合综合久久| 欧美h视频在线观看| 最新不卡av| 黄色精品网站| 成人在线视频你懂的| 男人的天堂99| 国产奶头好大揉着好爽视频| 亚洲在线久久| 成人羞羞动漫| 免费视频最近日韩| 97se国产在线视频| 欧美 日本 亚洲| 国产精品国产馆在线真实露脸| 亚洲午夜一二三区视频| 三级短视频在线| 国产婷婷视频在线| 欧美日韩一区二区免费在线观看| 国产中文字幕在线免费观看| wwwwww国产| 李宗瑞91在线正在播放| 国产极品嫩模在线视频一区| 亚洲一区二区三区四区五区午夜| 国产又粗又长| 忘忧草在线www成人影院| 欧美a级黄色大片| 国产毛片精品视频| 国产成人天天5g影院| 国产成人福利av| 色综合久久久久久久久久久| 在线能看的av网址| 欧美激情区在线播放| 亚洲女同二女同志奶水| 亚洲图片欧美日韩| 无码精品人妻一区二区三区影院| av漫画网站在线观看| 亚洲高清在线看| 在线观看免费网站黄| 国产精品国产自产拍在线| 丝袜亚洲精品中文字幕一区| 无码人妻精品一区二区三区在线| 中文一区在线播放| 7878成人国产在线观看| 国产精品一区二区美女视频免费看| 欧美人成网站| 亚洲精品在线三区| 亚洲国产精品无码久久久| 日本视频免费| 欧美日韩国产在线播放网站| 国产99久久久国产精品| 中文亚洲欧美| 成人高清视频观看www| 久久久之久亚州精品露出| 成人午夜三级| 激情久久免费视频| 911亚洲精品| 国产乱在线观看完整版视频| 一级黄色片在线免费观看| 中文字幕高清不卡| 日韩欧美亚洲国产一区| 欧美成人精品影院| 欧美一区二区人人喊爽| 国产精品久久久久久妇女| 激情网站五月天| 毛片av中文字幕一区二区| 91手机在线视频| 国产精品伦子伦免费视频| 激情另类小说区图片区视频区| 欧美大交乱xxxxbbbb| 欧美激情四色| 黄色三级小视频| 日本黄色福利视频| 亚洲青涩在线| 国产亚洲激情| 欧美色网址大全| 欧美日韩精品在线视频| 色中色综合影院手机版在线观看| 最新91视频| 欧美一区二区成人6969| 1024国产在线| 欧美国产精品人人做人人爱| 国产一级免费视频| 免费观看成人高| 青青久久av| 日韩一级片免费看| 天堂va欧美va亚洲va老司机| 成人免费91在线看| 五月婷婷六月综合| 久久久无码精品亚洲国产| 日本天堂中文字幕| 亚洲欧美经典视频| 日韩在线影院| 污污内射在线观看一区二区少妇| 日韩精品一区二区三区老鸭窝| www.91av.cn| 欧美美女一区二区在线观看| 欧美激情视频一区| av中文字幕在线观看第一页| 欧美freesex黑人又粗又大| 午夜精品一区二区三区在线观看| 国产裸体免费无遮挡| www.99热这里只有精品| 你懂的视频在线看| 国产精品久久久久7777按摩| 国产wwwxx| 最新一本之道波多野结衣| 美女网站一区| 中文字幕中文在线不卡住| 精品一区二区三区自拍图片区| 悠悠资源网久久精品| 久久亚洲国产成人| 激情六月天婷婷| 国产叼嘿网站免费观看不用充会员| 女囚岛在线观看| 国产精品入口免费麻豆| 国产精品免费电影| 日韩免费av一区二区| 91香蕉一区二区三区在线观看| 日本视频在线免费| 精品少妇久久久| 日韩精品一区二区三区国语自制| 国产精品国产三级国产专播品爱网| 爱情岛论坛成人| 久久久精品一区二区三区| 亚洲精品少妇久久久久久| www.99re.av| 欧洲成人av| 久久99热这里只有精品| 五月婷婷在线观看| 精品国产乱码久久久久久闺蜜| 26uuu另类亚洲欧美日本一| 性欧美大战久久久久久久| 欧美一级黄色片| 欧美视频一区二| 国产免费一区二区三区四区五区| 精品国产亚洲一区二区三区在线观看| 久久久久久午夜| 极品少妇一区二区三区精品视频| 手机版av在线| 樱花草在线观看www| 97人妻精品一区二区三区软件| 亚洲自拍的二区三区| 国产一区调教| 国产第一页在线视频| 欧美三级日本三级| 禁断一区二区三区在线| 欧美精品乱码久久久久久| 国产69精品久久久久久| 国产婷婷色一区二区三区在线| 先锋影音国产一区| 免费视频观看成人| 亚洲欧美综合7777色婷婷| 日韩激情视频| 日韩av电影在线播放| 日批视频免费在线观看| 亚洲综合精品国产一区二区三区| 欧美日本一区二区视频在线观看| 日韩精品一区二区三区免费观看| 一起操在线视频| 国产精品一二三视频| 欧美日韩精品一本二本三本| 久久久综合激的五月天| 一区二区三区四区日本视频| 免费人成黄页在线观看忧物| 色噜噜狠狠狠综合欧洲色8| 欧美激情三级| 日韩免费不卡av| 日韩欧美亚洲范冰冰与中字| 亚洲国产成人精品女人久久久| 综合五月激情网| 上原亚衣加勒比在线播放| 欧美亚洲在线| 日韩激情免费视频| 国产精品偷伦免费视频观看的| 欧美激情一区二区三区在线视频观看| 国产精品视频yy9299一区| 久久综合图区亚洲综合图区| 欧美猛男性生活免费| 国产高潮呻吟久久| 欧美日韩精品在线一区二区| 黑人巨大精品欧美黑白配亚洲| 波多野结衣50连登视频| 久久综合电影一区| 逼特逼视频在线| 俄罗斯精品一区二区三区| 亚洲第一精品夜夜躁人人躁| 国产麻豆剧果冻传媒观看hd高清| 天天操,天天操| 国产亚洲精品美女久久久久久久久久| 国产原创剧情av| 日韩成人在线观看视频| 日本一区二区视频在线播放| 91影院在线免费观看视频| 国产美女久久久久久| 动漫av在线免费观看| 国产精品久久久久久久久久免费看| 国产免费a视频| 亚洲一二三四视频| 欧美电影免费播放| 99re6热只有精品免费观看| 欧洲视频在线免费观看| 免费看美剧网站| 久久精品综合一区| 亚洲一区二区三区综合| 亚洲视频电影图片偷拍一区| 妖精视频一区二区三区| 亚洲熟妇无码一区二区三区| 欧美精品videos另类日本| 精品一区二区成人精品| 白浆视频在线观看| 国产精品久久久久久久| 欧美精品三级| 国产一区二区三区日韩精品| 黄色污污在线观看| 色8久久人人97超碰香蕉987| 中文字幕一区二区在线观看视频| 日本公妇乱淫免费视频一区三区| 国产福利视频一区二区三区| 久久精品99久久久久久久久| 国产黄色的视频| 在线国产一级| 亚洲人高潮女人毛茸茸| 激情欧美日韩一区| 五月天激情开心网| 午夜精品一区二区三区在线视| 国产伦视频一区二区三区| 亚洲人成精品久久久久久| 亚洲一区二区三区精品在线观看| 李宗瑞系列合集久久| 宅男噜噜噜66国产日韩在线观看| 精品一区毛片| 色一情一区二区三区四区| 亚洲欧美伊人| 呦视频在线一区二区三区| 欧美—级a级欧美特级ar全黄| 五月激情丁香婷婷| 成人黄色理论片| 欧美日韩国产精品成人| 精品国产免费观看一区| 欧美成人午夜77777| 亚洲av人无码激艳猛片服务器| 精品美女在线观看视频在线观看| 精品国产污网站| 欧美人成网站| 91精品视频网| 国产精品人人做人人爽人人添| 久久偷拍免费视频| 久香视频在线观看| 亚洲国产精品ⅴa在线观看| 欧美大片专区| 免费国产黄线在线观看视频| 99国产精品一区二区| caoporen国产精品| 黄频免费在线观看| 激情综合五月婷婷| 日韩免费电影| 亚洲伊人伊成久久人综合网| 给我免费播放片在线观看| 国产精品视频精品| 老太脱裤子让老头玩xxxxx| 污版网站在线观看| 熟女人妇 成熟妇女系列视频| 久久草在线看| 91看片淫黄大片91| 亚洲欧美日韩成人在线| 国产高清av| 精彩视频一区二区| 国产永久免费| 欧美a级免费视频| av一区在线观看| 日韩一区三区| 亚洲精品91天天久久人人| 日本精品久久久久中文字幕| 精品国产区在线| 欧美日韩福利电影| 亚洲电影影音先锋| 欧美性受xxxx免费视频| 国内外成人在线视频| 电影一区电影二区| 2019最新中文字幕| 国产成人愉拍精品久久|