我在BAT學(xué)到的技術(shù)工具-使用nodejs搭建支持高并發(fā)的http服務(wù)

1. 面對(duì)的需求

![tag標(biāo)簽維度](http://7u2g5z.com1.z0.glb.clouddn.com/屏幕快照 2015-01-08 下午5.43.22.png)

  • 接口說(shuō)明
    1. 獲取指定圖片中的tag內(nèi)容
      輸入:objurl,userid
      輸出:tag list

    2. 獲取指定話題(如:"G-SHOCK")下面所有的圖片
      輸入:tagname
      輸出:objurl list,tag desc 等信息

    3. 為某個(gè)圖片添加標(biāo)簽tag
      輸入:objurl, userid, tagname(這個(gè)為了歸一化,前端會(huì)有選擇引導(dǎo))
      輸出:是否成功

2. 可選的技術(shù)方案

2種技術(shù)方案A/B
2種技術(shù)方案A/B
  • php 使用lighty 配置fastcgi模式
  • nodejs使用lighty配置redirect模式
  • 由于搜索核心的流量經(jīng)過(guò)php集群,所以,本次從開(kāi)發(fā)效率,并發(fā)請(qǐng)求支持效率(單機(jī)qps)上考慮使用nodejs搭建后端服務(wù)

3. 基于nodejs的技術(shù)方案

  • nodejs完成連接接入,結(jié)果處理拼裝的工作,其中使用到了幾個(gè)很好用的插件。
    pm2: 類似服務(wù)端的supervise,當(dāng)進(jìn)程意外崩潰后自動(dòng)重啟動(dòng);
    ![示例](http://7u2g5z.com1.z0.glb.clouddn.com/屏幕快照 2015-01-08 下午6.31.43.png)
    由于nodejs是單進(jìn)程模型,pm2支持自動(dòng)部署為多進(jìn)程運(yùn)行,可以更好的利用服務(wù)器cpu;

    redis:支持的nodejs的redis proxy

  • redis
    使用了set作為value類型,犧牲部分性能達(dá)到去除重復(fù)標(biāo)簽的功能。

  • 管理redis的web 工具
    redis-commander
    ![示例](http://7u2g5z.com1.z0.glb.clouddn.com/屏幕快照 2015-01-08 下午6.20.30.png)

4. 效果總結(jié)

  • 實(shí)際壓力測(cè)試,讀寫混合的pv單機(jī)可以在1W qps左右。
  • 總結(jié)nodejs適合應(yīng)用場(chǎng)景:高并發(fā)流量,不是很重的處理邏輯,http服務(wù)層。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容