• <strike id="fdgpu"><input id="fdgpu"></input></strike>
    <label id="fdgpu"></label>
    <s id="fdgpu"><code id="fdgpu"></code></s>

  • <label id="fdgpu"></label>
  • <span id="fdgpu"><u id="fdgpu"></u></span>

    <s id="fdgpu"><sub id="fdgpu"></sub></s>

    阿里云 OCS SDK for NodeJS介紹

    2014-08-12 15:34:54   作者:   來(lái)源:aliyun.com   評論:0  點(diǎn)擊:


    • 運行 Javascript

      雖然讓 Javascript 運行于服務(wù)器端不是 NodeJS 的獨特之處,但卻是其一強大功能。不得不承認,瀏覽器環(huán)境限制了我們選擇編程語(yǔ)言的自由。任何服務(wù)器與日益復雜的瀏覽器客戶(hù)端應用程序間共享代碼的愿望只能通過(guò) Javascript 來(lái)實(shí)現。雖然還存在其他一些支持 Javascript 在服務(wù)器端 運行的平臺,但因為上述特性,Node發(fā)展迅猛,成為事實(shí)上的平臺。

    • 阿里云 OCS SDK for NodeJS

      阿里云 OCS 服務(wù)采用的是基于 SASL 認證的 Memcached 二進(jìn)制傳輸協(xié)議。實(shí)現該協(xié)議的 NodeJS 開(kāi)源模塊很少,有一些模塊如 memjs 雖然實(shí)現了 SASL 認證和 Memcached 二進(jìn)制傳輸協(xié)議,但是不支持命令隊列即在一個(gè)命令返回數據之前無(wú)法執行新的命令,這在實(shí)際項目開(kāi)發(fā)中是無(wú)法接受的。因此,阿里云 OCS SDK for NodeJS 基于 memjs 增加了命令隊列,異常處理,自動(dòng)重新連接等功能,使 NodejS 開(kāi)發(fā)者快速接入阿里云 OCS 服務(wù)成為可能。

      該開(kāi)源項目代碼托管在 https://github.com/aliyun-UED/node_memcached ,歡迎有興趣的同學(xué)貢獻代碼。

      另外,一定會(huì )有人問(wèn)到 Redis 的問(wèn)題。Redis 是一種常用的開(kāi)源內存鍵值存儲系統,可支持有序集合和列表等數據結構。Redis 在 NodeJS 社區中比較常見(jiàn),而且也有很多成熟的模塊支持。在阿里云 OCS 服務(wù)后續集成 Redis 后開(kāi)發(fā)者可以自行選擇 Memcached 或者 Redis 作為存儲系統,我們屆時(shí)也會(huì )將 Redis SDK 集成到阿里云 SDK for NodeJS 中。不過(guò)對于開(kāi)發(fā)者來(lái)說(shuō)在代碼開(kāi)發(fā)方式上,Memcached 與 Redis 非常相似,只不過(guò)所需要調用的接口不同而已。

      使用阿里云 OCS SDK 開(kāi)發(fā) web 應用

      在文章開(kāi)始我們介紹了 OCS SDK 的最基本用法,比如我們想記錄 web 應用的總訪(fǎng)問(wèn)量,可以在 OCS 中使用一個(gè) key 代表這個(gè)總訪(fǎng)問(wèn)量,每當產(chǎn)生用戶(hù)訪(fǎng)問(wèn)的時(shí)候,可以從 OCS 中讀取 key 的值 value,將 value + 1 后再保存到 key。在這個(gè)場(chǎng)景中使用 OCS 在合適不過(guò)了,因為我們可能有多個(gè) ECS 實(shí)例作為 web server,它們可以向同一個(gè) OCS 做讀寫(xiě)操作;另外也不用擔心 ECS 實(shí)例掛掉后總訪(fǎng)問(wèn)量這個(gè)數據消失的問(wèn)題;最后, OCS 的高性能也保證了我們的業(yè)務(wù)需求。

      除此之外,使用 OCS 最合適的地方就是 session 存儲了。在 web 服務(wù)器上的 session 可以存儲在

    • 內存
    • 磁盤(pán)文件系統
    • 數據庫

      Memcached 等緩存系統

      從性能,可用性角度考慮,存儲在 Memcached 是最好的選擇。那么在 NodeJS 中該如何實(shí)現呢。

      一般來(lái)說(shuō),開(kāi)發(fā) NodeJS web 應用需要選擇一個(gè)合適的 web 框架,我們以目前最流行的 web 框架 Express 舉例。

      Express 框架內建了對 session 處理的支持,它默認的 session 存儲機制是內存存儲,而將其他 session 存儲機制作為可擴展選項。如下代碼所示:

      // 創(chuàng )建一個(gè) express 實(shí)例
      var app = require(“express”);
      // 內存存儲 session
      var session = require(‘express-session’)
      // 使用 express 的 session 處理,并使用內存存儲機制
      app.use(session({ secret: ‘keyboard cat’, cookie: { maxAge: 60000 }}))
      // 處理 HTTP 請求,req 代表請求對象,res 代表返回對象
      app.use(function(req, res) {
      // sess 即為該請求所對應的用戶(hù)的 session,不用擔心,express 已經(jīng)幫你分析請求所帶的 cookie
      // 并將該 cookie 所對應的 session 從存儲中找到并提供給你
      var sess = req.session
      // 下面是對 session 對象的處理
      if (sess.views) {
      sess.views++
      res.setHeader(‘Content-Type’, ‘text/html’)
      res.write(‘<p>views: ‘ + sess.views + ‘</p>’)
      res.write(‘<p>expires in: ‘ + (sess.cookie.maxAge / 1000) + ‘s</p>’)
      res.end()
      } else {
      // 更新后的 session 會(huì )在請求處理結束后自動(dòng)寫(xiě)回到 session 的存儲中
      sess.views = 1
      res.end(‘welcome to the session demo. refresh!’)
      }
      })

      從上面的代碼中可見(jiàn),我們只需要實(shí)現 session 的存儲機制,便能夠和 express 完美的結合了。

    分享到: 收藏

    專(zhuān)題

    亚洲精品网站在线观看不卡无广告,国产a不卡片精品免费观看,欧美亚洲一区二区三区在线,国产一区二区三区日韩 金华市| 涞源县| 广汉市| 海兴县| 谢通门县| 临沂市| 桐庐县| 错那县| 金山区| 理塘县| 顺义区| 富锦市| 庆元县| 黄山市| 蛟河市| 天峨县| 罗平县| 渝北区| 城口县| 盐城市| 赤城县| 元阳县| 蓬莱市| 泰来县| 措美县| 婺源县| 宁蒗| 溆浦县| 朔州市| 汕头市| 乡宁县| 阳西县| 东港市| 蒙阴县| 扶沟县| 黎平县| 花莲县| 临江市| 湘阴县| 昌黎县| 梅河口市| http://444 http://444 http://444 http://444 http://444 http://444