部署雜談:nodejs_負載均衡_redis共享session

2021-01-08 凃老師

#程式設計師#

處理koa中快進的問題

部署

* NodeJs是基於V8解析引擎並執行的,所以不同於其他後端語言,需要先編譯後才能在伺服器運行

* __node是解釋型的語言,本身就能直接運行__

* NodeJs自身又包含伺服器,所以當啟動了NodeJs的程序,就會在使用當前機器的公網IP並監聽埠運行伺服器

* __包含伺服器的node,自己就可以跑__

* __無需單獨編譯和伺服器的支持__

PM2

* 管理node項目,讓其永不關閉的一個容器

* forever(沒有pm2好用)

* 保障伺服器不會掛掉

npm i -g pm2npm2 start ./xxx.js --name projectname

* 其他命令

pm2 examples // 查看常用示例 pm2 [start||restart||stop||delete] all||name||id // 重啟 pm2 show name||id // 查看信息 pm2 list // 查看項目 pm2 flush // 清空日誌 pm2 log name||id // 查看日誌

nginx負載均衡

upstream localhost { ip_hash; # nginx內置的處理 server localhost:8000 weight=1; server localhost:8001 weight=1; } #server {....... location / { proxy_pass http://localhost; }

查看環境變量

* __linux:__ /etc/profile文件中 export 環境變量=值

* 執行壞境變量更新命令 ```source /etc/profile```

* windows我的電腦-> 右鍵屬性 -> 高級系統設置 -> 環境變量

* 或者命令行 set回車

有時IP不是固定的

* ip_hash 是解決通過IP位址來分配不同伺服器的,對不同伺服器以綁定的方式分解壓力。

* 同時又能實現登錄後,還訪問其他伺服器導致登錄狀態不一的解決方案

* 但是其並不是真正的session共享,真正的共享還是在資料庫存儲

redis

* redis資料庫以鍵值對的方式存儲數據,並將數據在__內存__中以快照的方式存儲,一定時間內批量寫入到文件,因此__速度__及性能非常好

* 進入到目錄,啟動伺服器 redis-server

* 安裝windows服務 ```./redis-server –service-install ./redis.windows.conf```

* 運行客戶端 ```redis-cli```* 相關命令* 獲取幫助 ``` help <command>``` * 查詢所有的key ```keys *``` * 添加或更新一個數據 ```SET key value [EX seconds] [PX milliseconds] [NX|XX]``` * ```set test 1 EX 10 NX``` * 表示插入test:1數據 保存10秒 * NX 不存在數據才插入 * XX 存在數據才插入 * 獲取value ```get key``` * 刪除key ```del key``` * 插入數組 * sadd key [...values] * 查看數組數據 * smembers key

相關焦點

  • Nginx+Tomcat實現負載均衡及Session共享
    Tomcat_version:8.5.59 第二部分 Nginx+Tomcat實現負載均衡1、nginx及tomcat的安裝省略2、nginx負載均衡配置:http標籤中定義tomcat集群: } }關於nginx負載均衡的策略
  • 負載均衡中使用 Redis 實現共享 Session
    一、負載均衡負載均衡:把眾多的訪問量分擔到其他的伺服器上,讓每個伺服器的壓力減少。通俗的解釋就是:把一項任務交由一個開發人員處理總會有上限處理能力,這時可以考慮增加開發人員來共同處理這項任務,多人處理同一項任務時就會涉及到調度問題,即任務分配,這和多線程理念是一致的。nginx在這裡的角色相當於任務分配者。
  • spring data redis集成以及session共享
    redis 是一款基於內存存儲的高性能緩存框架,支持多種數據結構如string, hash, list, set、sorted set、bitmap等多種數據類型,也提供了很多高可用功能如rdb和aof備份、哨兵模式和集群模式部署。redis有許多的應用場景,一般用於替代一些資料庫訪問熱點數據操作減少資料庫壓力以及提高性能,也可用於session共享、排行榜等。
  • 如何快速實現鯤鵬彈性雲伺服器的Node.js部署和高可用性?
    但如果伺服器上運行多個項目時,如果只安裝一個全局的node.js版本,則在升級時可能會遇到很多問題。所以我們需要使用 nvm 版本管理器安裝 node.js 多版本,這並不是一個必須的步驟,但是依然值得嘗試。
  • SpringBoot如何用Session共享實現分布式部署?
    ,通過登錄攔截,進行操作但是分布式部署的時候,我們請求的伺服器可能不是同一臺伺服器,那麼我們就必須要面對 session 共享的問題,下面介紹的是在 SpringBoot 實現 session 共享的方式
  • 第一天 負載均衡之高並發發送
    高並發發送:1處:負載均衡2處:資料庫在APP伺服器多臺情況下,如果用戶登錄,session怎麼處理?本文來源:凱哥Java(kaigejava)如下圖:說明:如果用戶登錄的時候負載到01伺服器上,當用戶在操作其他的時候,如果被負載到02機器上。這個時候02機器上面就沒有當前用戶的session。用戶就會被轉跳到登陸頁面。
  • Java應用伺服器之tomcat session server msm搭建配置
    通過這樣的方式,我們可以把用戶的信息共享給其他節點;但是我們需要注意一點後端存儲session的伺服器可能存在單點;常用作為session伺服器的有memcached和redis;它們都是鍵值類型的資料庫,不同的是memcached它的值是流式化類型的數據。什麼意思呢?
  • 提升Node.js 應用性能的 5 個技巧
    Node.js可以替代或增強Java和.NET用於後端應用程式的開發。 Node.js是單線程的,並且使用非阻塞I / O,允許它擴展並支持數以萬計的並行操作。它和NGINX共享這些架構特性,並解決C10K問題——支持超過10000個並發連接——NGINX也可以解 決並行操作問題。 Node.js以它的高性能和高開發效率享譽全球。
  • Apache+MySQL+Redis+nodejs
    Linux+Apache+MySQL+Redis+nodejscentos7.8apache(httpd-2.4.39)Mysql-5.7.29Redis-5.0.7nodejs(node-12.2.0)
  • 在SpringBoot中使用Spring Session解決分布式會話共享問題
    如果我們將Web應用橫向擴展搭建成分布式的集群,然後利用LVS或Nginx做負載均衡,那麼來自同一用戶的Http請求將有可能被負載分發到兩個不同的實例中去,如何保證不同實例間Session共享成為一個不得不解決的問題。最簡單的解決方法就是把Session數據保存到內存以外的一個統一的地方,例如Memcached/Redis中。
  • 分布式集群環境下的Session共享解決方案
    而如果我們把web伺服器搭建成分布式的集群,然後利用LVS或Nginx做負載均衡,那麼來自同一用戶的Http請求將有可能被分發到兩個不同的web站點中去。那麼問題就來了,如何保證不同的web站點能夠共享同一份session數據呢?最簡單的想法就是把session數據保存到內存以外的一個統一的地方,例如Memcached/Redis等資料庫中。
  • 適合ingress-nginx接入外部負載均衡的部署
    問題思考:如果通過nodePort 方式接入外部負載均衡,由於設置`externalTrafficPolicy: Local`導致訪問的node節點無法固定,再加上一旦service重啟埠變化,勢必會影響外部負載均衡無法正確轉發流量。
  • PHP集群session共享
    搭建PHP集群的第一步就是設置負載均衡。如果需要交互,那就涉及到一個session共享的問題。默認情況下PHP是將session存在本地磁碟上的。那這兩臺主機之間如何共享session呢,接下來我們就來解決這個問題。PHP主機之間Session共享之前在網上看到過一種解決方式。
  • 整合JPA、Redis實現分布式的Session共享
    一.SpringBoot整合JPA、Redis實現分布式的Session共享1. 創建web項目我們按照之前的經驗,創建一個web程序,並將之改造成Spring Boot項目,具體過程略。</artifactId> </dependency> <dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-data-redis</artifactId> </dependency>
  • 為高負載網絡優化Nginx和Node.js
    這篇文章假定讀者們使用NginX的HttpProxyModule來為上遊的node.js伺服器充當反向代理。我們將介紹Ubuntu 10.04以上系統sysctl的調優,以及node.js應用與NginX的調優。當然,如果大家用的是Debian系統,也能達到同樣的目標,只不過調優的方法有所不同而已。
  • 用過Redis沒?分布式緩存,頭條君也在用
    場景描述以前是直接使用公司提供的redis集群,只使用不負責維護,因項目用到負載均衡,需要使用redis做session共享,存儲session信息,所以就部署了下,記錄下以便後續能快速部署。解決方案2.1 下載gz包並上傳伺服器http://download.redis.io/releases/redis-5.0.4.tar.gz
  • springboot實現session共享redis中保存
    來源 | urlify.cn/ueiqAz 模擬測試:建立兩個模塊,一個保存session到redis中,一個從redis中獲取session的value值模塊相同部分:</groupId>            <artifactId>spring-session-data-redis</artifactId>        <
  • 使用Node.js的Alexa技巧
    此設置啟動lambda/custom/local-debugger.js。鉤子:包含鉤子腳本的文件夾。亞馬遜提供了兩個鉤子,post_new_hook和pre_deploy_hook.post_new_hook技能創造後執行。InstituteNode.js運行npm install在每一個信息源中skill.jsonpre_deploy_hook在技能部署之前執行。
  • Docker如何高效部署Node應用?看這裡
    一個合理並且高效的部署方案,不僅能夠實現快速升級,平滑切換,負載均衡,應用隔離等部署特性,而且配有一套成熟穩定的監控。[1]❞一個合理並且高效的部署方案,不僅能夠實現快速升級,平滑切換,負載均衡,應用隔離等部署特性,而且配有一套成熟穩定的監控。
  • Node.js結合ProtoBuffer實現redis
     uuid = require('node-uuid');// v1 根據時間戳和隨機數生成的uuidconst creatuuid= uuid.v1()修改Data的pb文件,增加uuid欄位message Data