synetworkflowopenrestydpdk
一.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 文件,动态加载。