日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Node.js Up and Runing 学习日记(八)

發布時間:2023/12/13 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Node.js Up and Runing 学习日记(八) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • 連接池
    • 基于
    • 一個簡單的Socker.io服務器

連接池

生產環境通常由多種資源組成: web服務器,緩存服務器和數據庫服務器.
數據庫服務器通常部署在web服務器之外的獨立機器上,這使得面向公眾的網站不必重新配置和修改復雜的數據庫群就可以垂直增長了.

基于

  • 為每一個請求創建一個甚至多個連接會對高流量的網站造成不必要的額額外負擔,也會導致性能下降

    解決方案

  • 在內部緩存池里維護數據庫連接,當某一個連接不再需要時,她會被放回連接池里,這樣就能立刻為下一個進入的請求服務

    通用的連接池- generic-pool

    連接池模式違反了Node的"一個模塊,一個功能"的理念
    該模塊盡可能的防止因為創建新的數據庫連接為而帶來的 開銷

    消息隊列協議

    發布-訂閱模型

    用戶注冊流程中,數據庫調用可以等到用戶受到歡迎之后在進行操作,統計數據可以從程序的主邏輯獨立出去處理,這樣的情況下,你可以選擇生成一條消息,來通知程序的其他部分有新用戶注冊了,這樣的程序也可能完全運行在另外一個服務器上

    請求-回復模型

    請求信息,回饋

  • 消息隊列允許程序員發布時間然后繼續其他操作,通過進程間通信頻道,提高了并發處理的頻率,并實現了更高的擴展性

    RabbitMQ

    消息代理,支持高級消息隊列(AMQP)

    外部模塊

    Socket.IO

    小巧的擴展庫.通過Socket.IO在瀏覽器客戶端與Node服務器之間采用高效的底層socket機制來回發送消息
    瀏覽器和服務器之間共享代碼

var http = require('http'), io = require('socket.io')var server = http.createServer()server.on('request', function(req, res){res.writeHead(200,{'Content-Type':'text/plain'})res.end('hello world')})server.listen(80)var socket = io.listen(server)socket.on('connection', function(client){console.log('client conencted')})
  • 依賴http模塊
  • 其實Socket.io不關心Http服務器做什么,她只是把自帶的事件監聽器包裝在發送到服務器的所有請求上
  • Socket.io是持久性連接,不需要像http服務器處理req,res對象,與使用net類似,需要使用傳入的client對象來與每一個瀏覽器進行通信
  • 新建一個網頁文件,寫入JS代碼
var socket = io.connect('http:/localhost:8080');socket.on('message', function(data){console.log(data);})

一個簡單的Socker.io服務器

var http = require('http'),io = require('socket.io'),fs = require('fs')var sockFile = fs.readFileSync('./socket_io.html')server = http.createServer()server.on('request', function(req, res){res.writeHead(200,{'Content-Type':'text/plain'})res.end(sockFile)})server.listen(8080)var socket = io.listen(server)socket.on('connection', function(client){console.log('client conencted')client.send('welcone client' + client.seesionId)})
  • node服務器會返回一份html文件
  • 同步讀取會堵塞Node的事件循環,知道文件讀取完畢

    命名空間

  • socket.of()函數把socket對象切分成多個獨立的命名空間

轉載于:https://www.cnblogs.com/zhongyan-enter/p/7349025.html

總結

以上是生活随笔為你收集整理的Node.js Up and Runing 学习日记(八)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。