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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

面试官:关于负载均衡你了解多少

發布時間:2025/3/20 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 面试官:关于负载均衡你了解多少 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

面試官:關于負載均衡你了解多少,知道哪些常用框架

問題分析:

工作中小編也會經常接觸到 Nginx,比如美團的 Oceanus 框架,是一款 HTTP 服務治理框架,這個框架就是基于 Nginx和 ngx_lua 擴展的,主要提供服務注冊與發現、動態負載均衡功能,日常的開發學習中,如果你想弄懂公司的 Oceanus ,Nginx 知識肯定是必不可少的,我想這也是我在面試中被問及 Nginx 相關知識的原因。

  • Nginx,使用最多最常見的,很多公司自己的負載均衡框架都是基于 Nginx 開發的。

  • LVS

  • HAProxy

  • F5,硬件負載均衡,價格昂貴。

  • 無論使用哪種方案,目的都是要解決同樣的問題,掌握其中一個框架的原理后,再看其它幾個一定不會覺得吃力,接下來就通過 Nginx 實例來學習。

    NGINX-logo-rgb-large

    1.Nginx 簡介

    Nginx(發音同engine x)是異步框架的網頁服器,也可以用作反向代理、負載平衡器和HTTP緩存。該軟件由伊戈爾·賽索耶夫創建并于2004年首次公開發布。[6] 2011年成立同名公司以提供支持。[7]2019年3月11日,Nginx公司被F5 Networks以6.7億美元收購[8]。

    Nginx 官網:http://nginx.org/

    下載列表:http://nginx.org/en/download.html

    ————維基百科

    注意,http://nginx.org/ 區別于 http://nginx.com 前者是開源免費的,后者是企業版收費的

    選擇 Nginx 的理由
  • 軟件成熟,2002年誕生到2019年,經過多年的沉淀和各大互聯網公司的實踐改進,Nginx 已經非常成熟,網上教程豐富,易于開發者維護。

  • 高性能Web服務器,單機能夠支持高達 50,000 個并發連接數的響應。

  • 異步的、非阻塞,使用了epoll和kqueue模型,壓縮請求和相應數據大小,節省寬帶。

  • 優秀的反向代理服務器,隱藏 Server 地址,提高安全性。

  • 支持 Http 緩存

  • 只需要安裝 Nginx 配置好配置文件,就可以是實現 Https 訪問。

    worker_processes 1; events { worker_connections 1024; }http { include mime.types; default_type application/octet-stream;sendfile on;keepalive_timeout 65;server {listen 443;server_name wangzha.tech www.wangzha.tech;ssl on;root html;index index.html index.htm;ssl_certificate /www/server/nginx/conf/1631800_www.wangzha.tech.pem;ssl_certificate_key /www/server/nginx/conf/1631800_www.wangzha.tech.key;ssl_session_timeout 5m;ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_prefer_server_ciphers on;location / {proxy_pass http://47.99.146.163:80;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header Host $http_host;} }server {listen 80;server_name www.wangzha.tech;} }

    2.Nginx 整體架構設計

    nginx架構圖

    Nginx架構圖 ?圖片來自 http://www.aosabook.org/en/nginx.html

    主從模式

    Nginx 啟動后會創建多個進程,一個 Master 進程和多個 Worker 進程,Master 進程主要負責讀取配置文件,管理維護多個 Worker 進程,像是一個大內總管,Master 自身不處理用戶請求,用戶訪問的 web service 都是通過多個 Worker 進程處理,Worker 才是真正干活的,這種 Master Worker的主從設計理念在 。Worker 的數量可以通過配置文件隨時調整,非常靈活。

    Master 主要職責:

  • 讀取 Nginx 配置文件,配置實時生效。

  • 監控 worker 進程運行狀態,管理 worker 的創建與啟動,當 worker 進程出現異常情況,Master 會自動重新啟動 worker 進程。

  • 接收用戶請求,將請求分發給 worker 處理。

  • 而 worker 進程是從 Master 進程 fork 過來的,worker 進程只負責處理請求,從讀取請求,解析請求,處理請求,讀取到服務器返回的 response 數據后,再將數據轉發給客戶端。每個請求只會被一個 worker 進程處理。

    異步非阻塞 I/O

    I/O 分兩種,網絡 I/O,讀取 socket,另一種是磁盤 ?I/O,讀取磁盤數據。我們知道計算機的 CPU 執行代碼的速度極快,然而一旦遇到IO 操作,如讀寫文件、發送網絡數據時,就需要等待IO操作完成。這樣做CPU大部分都是在等待,等待蝸牛般速度的磁盤 IO 操作,這極大的浪費了 CPU 的性能,很顯然,這種設計是不合理的,如果一個進程想要執行一個 read() 或 write() 同步調用,那么進程必須等到硬件完成 I/O 操作后才能進行下一步操作,這叫做同步調用。

    Nginx 為了提供并發能力,避開了這種同步阻塞的設計,采用異步,非阻塞,使用 epoll 多路復用模型,這是 Nginx 支持高并發的靈魂所在,如果讀者對 同步/異步 I/O 為什么會提高程序的響應速度不是很理解,推薦看 IBM 這篇文章:https://www.ibm.com/developerworks/cn/linux/l-async/ ,IO屬于基礎篇,在 Nginx 篇不做過多闡述了。

    模塊化設計

    關于模塊化設計可以簡單的理解一個功能就是一個模塊,類似于設計模式里六大原則之一“單一職責原則”,這種設計的好處就是“高內聚,低耦合”,Nginx 采用模塊化設計繼承了這個特點,且用戶可以根據自己的需要選擇性安裝,具有高度的靈活性。

    Nginx 共有五大類型的模塊:

  • 核心模塊:提供最基本的核心服務,如進程管理,權限控制等。

  • 事件模塊:Nginx 支持事件驅動的核心模塊。

  • 標準 HTTP 模塊:提供 http 相關功能,如代理,轉發,壓縮,加密,負載均衡。

  • Mail 服務模塊:提供基本的郵件發送服務,郵件服務模塊是 Nginx 的特色。

  • 第三方模塊:支持豐富的第三方自定義模塊,

  • 關于上述模塊如何配置使用不必全部記下來,工作中現學現賣就可以,活學活用,記住這些模塊的功能,用的時候再去查找文檔。

    如知道了 Nginx 提供了郵件服務,百度 Google 一下“Nginx 如何配置郵件服務” 就會得到下面的配置:

    mail {server_name mail.myweb.name;auth_http mail.postfix.cn:80/auth.php; #配置了HTTP認證地址imap_capabilities IMAP4rev1 UIDPLUS IDLE LITERAL+ QUOTA;pop3_auth plain apop cram-md5;pop3_capabilities LAST TOP USER PIPELINING UIDL;smtp_auth login plain cram-md5;smtp_capabilities "SIZE 10485760" ENHANCESTATUSCODES 8BITMIME DSN;xclient off;server{listen 25;protocol smtp;}server{listen 110;protocol pop3;proxy_pass_error_message on;}server {listen 143;protocol imap;} }

    3.總結

    本節主要介紹了 Nginx 的特性和架構模型,在大公司,如果你是一名開發人員,你可能不會直接接觸 Nginx 配置,會有專門的運維人員去做這件事,但是這不代表你可以不會,Nginx 的很多設計思想值得每個優秀的開發者學習,使用太廣泛,如果做二次開發,Nginx 可以說架構師必須掌握的基礎知識,面試經常會問 Nginx 如何實現高并發?你需要知道異步,非阻塞,epoll,需要知道 Master Worker 模型,Nginx常見的優化配置?為什么 Nginx 不使用多線程?

    參考資料

  • http://www.aosabook.org/en/nginx.html

  • 《Nginx高性能web服務器詳解》

  • 最后,再附上我歷時三個月總結的?Java 面試 + Java 后端技術學習指南,這是本人這幾年及春招的總結,目前,已經拿到了大廠offer,拿去不謝!

    下載方式

    1.?首先掃描下方二維碼

    2.?后臺回復「Java面試」即可獲取

    總結

    以上是生活随笔為你收集整理的面试官:关于负载均衡你了解多少的全部內容,希望文章能夠幫你解決所遇到的問題。

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