官术网_书友最值得收藏!

1.3 組成

OpenResty并不是個“單塊”(Monolithic)的程序,而是由眾多設計精良的組件集合而成的,這些組件可以靈活組裝或拆卸,共同搭建起了完整的高性能服務器開發環境。

核心組件

OpenResty的核心組成部分有四個,分別是:

    ■  Nginx                 :高性能的Web服務器(不熟悉的讀者可閱讀第2章);
    ■  LuaJIT               :高效的Lua語言解釋器/編譯器;
    ■  ngx_lua(http_lua) :處理HTTP協議,讓Lua程序嵌入在Nginx里運行;
    ■  stream_lua           :與ngx_lua類似,但處理的是TCP/UDP協議。

使用這四個核心組件,OpenResty就可以完成相當多的網絡應用開發工作了,但Open-Resty遠不止如此,它還包含了其他一些非常有用的Nginx組件和Lua組件,進一步增加了開發工作的便利。為了敘述方便,本書約定用C語言實現的OpenResty組件名字加“ngx”前綴,用Lua語言實現的OpenResty組件名字加“lua”或“lua-resty”前綴。

Nginx組件

OpenResty里的Nginx組件以C模塊的方式提供,集成在Nginx內部,較常用的有:

    ■  ngx_iconv            :轉換不同的字符集編碼;
    ■  ngx_encrypted        :使用AES-256算法執行簡單的加密運算;
    ■  ngx_echo             :提供一系列“echo”風格的指令和變量;
    ■  ngx_set_misc         :增強的“set_xxx”指令,用來操作變量;
    ■  ngx_headers_more     :更方便地處理HTTP請求頭和響應頭的指令;
    ■  ngx_memc             :支持各種memcached操作;
    ■  ngx_redis2           :支持各種Redis操作;
    ■  ngx_dizzle           :支持各種MySQL操作;
    ■  ngx_postgres         :支持各種PostgreSQL操作。

Lua組件

OpenResty里的Lua組件通常以Lua源碼的方式提供(*.lua),但個別組件為追求效率會以C語言實現,是動態鏈接庫的形式(*.so)。

較常用的Lua組件有:

    ■  lua_core             :OpenResty的核心功能庫;
    ■  lua_cjson            :處理JSON格式的數據,速度很快(使用C語言實現);
    ■  lua_string           :hex/md5/sha1/sha256等字符串功能;
    ■  lua_upload           :流式讀取HTTP的上行數據;
    ■  lua_healthcheck      :后端集群健康檢查;
    ■  lua_limit_traffic    :定制流量控制策略;
    ■  lua_lock             :基于共享內存的非阻塞鎖;
    ■  lua_lrucache         :高效的LRU緩存功能;
    ■  lua_dns              :高效、非阻塞的DNS解析功能;
    ■  lua_websocket        :高效、非阻塞的WebSocket功能;
    ■  lua_redis            :Redis客戶端,用起來比ngx_redis2更靈活;
    ■  lua_memcached        :Memcached客戶端,用起來比ngx_memc更靈活;
    ■  lua_mysql            :MySQL客戶端,用起來比ngx_dizzle更靈活。

注:目前OpenResty發行包暫不含有操作PostgreSQL的Lua組件,但可以通過opm安裝。

輔助工具

核心組件、Nginx組件和Lua組件實現了OpenResty的主要功能,但作為集成開發環境,輔助開發、調試和運維的工具也是必不可少的。OpenResty目前提供的輔助工具有:

    ■  opm                   :類似rpm、npm的管理工具,用來安裝各種功能組件;
    ■  resty-cli            :以命令行的形式直接執行OpenResty/Lua程序;
    ■  restydoc             :類似man的參考手冊,非常詳細。

組件示意圖

綜上可見,OpenResty是一個功能非常完備的服務器開發包,大多數Web應用所需的功能都已經包含在了里面,也就是所謂的“out of box”,我們只需要簡單地在自己的程序里引用,就能夠輕松享用這些高質量的模塊和庫,從而快速實現新的業務。

OpenResty的組成可以用圖1-1來表示:

圖1-1 OpenResty的組成

主站蜘蛛池模板: 安新县| 三河市| 遂川县| 柳河县| 内乡县| 来宾市| 凤山县| 沁源县| 梅州市| 拉孜县| 平乐县| 巨野县| 庐江县| 大连市| 平乡县| 邻水| 汝阳县| 景宁| 华蓥市| 西城区| 淮滨县| 大港区| 遵义市| 扬中市| 大理市| 佳木斯市| 洛浦县| 宁陵县| 扎囊县| 昌吉市| 仪征市| 建宁县| 华容县| 千阳县| 扎鲁特旗| 盐亭县| 深水埗区| 科尔| 赤峰市| 土默特左旗| 若尔盖县|