1. 程式人生 > 其它 >Nacos服務心跳和健康檢查原始碼介紹,mybatis面試題2021

Nacos服務心跳和健康檢查原始碼介紹,mybatis面試題2021

1、什麼是Nginx,談談個人都理解,專案中是否用到,為什麼要用,有什麼優點?

Nginx ,是一個 Web 伺服器和反向代理伺服器用於 HTTP、HTTPS、SMTP、POP3 和 IMAP 協議。

主要功能如下:

1、正向、反向代理
2、負載均衡、分流
3、虛擬主機(繫結host)

優點:

跨平臺、配置簡單,非阻塞、高併發連線、記憶體消耗小、成本低廉。

2、正向代理和反向代理的區別是什麼?

正向代理是一個位於客戶端和原始伺服器之間的伺服器,為了從原始伺服器取得內容,客戶端向代理髮送一個請求並指定原始伺服器,然後代理向原始伺服器轉交請求並將獲得的內容返回給客戶端。代理伺服器和客戶端處於同一個區域網內。

比如說fanqiang。我知道我要訪問谷歌,於是我就告訴代理伺服器讓它幫我轉發。

反向代理實際執行方式是代理伺服器接受網路上的連線請求。它將請求轉發給內部網路上的伺服器,並將從伺服器上得到的結果返回給網路上請求連線的客戶端 。代理伺服器和原始伺服器處於同一個區域網內。

比如說我要訪問taobao,對我來說不知道圖片、json、css 是不是同一個伺服器返回回來的,但是我不關心,是反向代理 處理的,我不知道原始伺服器。

3、Nginx如何處理HTTP請求的?

它結合多程序機制(單執行緒)和非同步非阻塞方式。

1、多程序機制(單執行緒)

伺服器每當收到一個客戶端時,就有 伺服器主程序 ( master process )生成一個 子程序( worker process )出來和客戶端建立連線進行互動,直到連線斷開,該子程序就結束了。

2、非同步非阻塞機制

每個工作程序 使用 非同步非阻塞方式 ,可以處理 多個客戶端請求 。運用了epoll模型,提供了一個佇列,排隊解決。

當某個 工作程序 接收到客戶端的請求以後,呼叫 IO 進行處理,如果不能立即得到結果,就去 處理其他請求 (即為 非阻塞 );而 客戶端 在此期間也 無需等待響應 ,可以去處理其他事情(即為 非同步 )。

當 IO 返回時,就會通知此 工作程序 ;該程序得到通知,暫時 掛起 當前處理的事務去 響應客戶端請求 。

4、Nginx的master和worker是如何工作的?

這跟Nginx的多程序、單執行緒有關。(一個程序只有一個主執行緒)。

為什麼要用單執行緒?

採用單執行緒來非同步非阻塞處理請求(管理員可以配置Nginx主程序的工作程序的數量),不會為每個請求分配cpu和記憶體資源,節省了大量資源,同時也減少了大量的CPU的上下文切換,所以才使得Nginx支援更高的併發。

簡單過程:

主程式 Master process 啟動後,通過一個 for 迴圈來 接收 和 處理外部訊號 ;

主程序通過 fork() 函式產生 worker 子程序 ,每個子程序執行一個 for迴圈來實現Nginx伺服器對事件的接收和處理 。

詳細過程:

1、Nginx 在啟動後,會有一個 master 程序和多個相互獨立的 worker 程序。
2、master 接收來自外界的訊號,先建立好需要 listen 的 socket(listenfd) 之後,然後再 fork 出多個 worker 程序,然後向各worker程序傳送訊號,每個程序都有可能來處理這個連線。
3、所有 worker 程序的 listenfd 會在新連線到來時變得可讀 ,為保證只有一個程序處理該連線,所有 worker 程序在註冊 listenfd 讀事件前搶佔 accept_mutex ,搶到互斥鎖的那個程序註冊 listenfd 讀事件 ,在讀事件裡呼叫 accept 接受該連線。
4、當一個 worker 程序在 accept 這個連線之後,就開始讀取請求、解析請求、處理請求,產生資料後,再返回給客戶端 ,最後才斷開連線。

5、Nginx 常用命令有哪些?

  • 啟動 nginx 。
  • 停止 nginx -s stop 或 nginx -s quit 。
  • 重啟 nginx -s reload 或 service nginx reload 。
  • 過載指定配置檔案 .nginx -c /usr/local/nginx/conf/nginx.conf 。
  • 檢視 nginx 版本 nginx -v 。

6、nginx中500、502、503、504 有什麼區別?

500

Internal Server Error 內部服務錯誤,比如指令碼錯誤,程式語言語法錯誤。

502

Bad Gateway錯誤,閘道器錯誤。比如伺服器當前連線太多,響應太慢,頁面素材太多、頻寬慢。

503

Service Temporarily Unavailable,服務不可用,web伺服器不能處理HTTP請求,可能是臨時超載或者是伺服器進行停機維護。

504

Gateway timeout 閘道器超時,程式執行時間過長導致響應超時,例如程式需要執行20秒,而nginx最大響應等待時間為10秒,這樣就會出現超時。

最後

看完上述知識點如果你深感Java基礎不夠紮實,或者刷題刷的不夠、知識不全面

小編專門為你量身定製了一套<Java一線大廠高崗面試題解析合集:JAVA基礎-中級-高階面試+SSM框架+分散式+效能調優+微服務+併發程式設計+網路+設計模式+資料結構與演算法>

針對知識面不夠,也莫慌!還有一整套的<Java核心進階手冊>,可以瞬間查漏補缺

全都是一丟一丟的收集整理純手打出來的

更有純手繪的各大知識體系大綱,可供梳理:Java築基、MySQL、Redis、併發程式設計、Spring、分散式高效能架構知識、微服務架構知識、開源框架知識點等等的xmind手繪圖~

本文已被CODING開源專案:【一線大廠Java面試題解析+核心總結學習筆記+最新講解視訊+實戰專案原始碼】收錄