一.skynet
1. Skynet 的核心架構是什么?簡述其進程與服務模型。
Skynet 采用多進程+多服務架構。主進程負責管理和監控,多個工作進程(worker)負責實際服務運行。每個服務(service)是一個獨立的 Lua 虛擬機,服務之間通過消息隊列通信,互不干擾,實現高并發和高隔離。
?2. Skynet 為什么采用消息驅動模型?優缺點是什么?
消息驅動模型可以避免多線程帶來的鎖競爭,提高并發性能。優點是服務間無共享狀態,易于擴展和維護;缺點是消息隊列可能成為瓶頸,消息處理延遲會影響實時性。
3.Skynet 的服務之間如何通信?支持哪些消息類型??
服務之間通過消息隊列異步通信,支持文本消息、二進制消息、Lua table、C module 消息等。常用消息類型有 call(同步調用)、send(異步發送)。
4. Skynet 如何實現服務隔離?這樣做的好處是什么??
每個服務運行在獨立的 Lua 虛擬機中,互不影響。這樣可以防止單個服務崩潰影響整個系統,提高系統穩定性和安全性。
?二.openresty
1. OpenResty 是什么?它的核心優勢是什么?
OpenResty 是基于 Nginx 的高性能 Web 平臺,集成了 LuaJIT、各種 Lua 庫和第三方模塊,支持用 Lua 腳本擴展 Nginx 功能。核心優勢是高并發、靈活擴展、易于與后端系統集成。
2. OpenResty 與 Nginx 有什么區別??
OpenResty 是對 Nginx 的擴展,內置了 LuaJIT 和大量 Lua 庫,支持用 Lua 腳本處理請求邏輯,而 Nginx 原生只支持配置和 C 模塊開發。
3. OpenResty 如何進行熱更新??
可以通過 reload 配置或平滑重啟 Nginx 實現代碼熱更新,或將業務邏輯拆分為 Lua 文件,動態加載。