又拍云Open Talk:OpenResty最佳實(shí)踐

8 月 31 日,由又拍云、OpenResty 社區(qū)主辦的 OpenResty × Open Talk 全國(guó)巡回沙龍·成都站在言幾又·成都凱德店順利落幕,這是系列活動(dòng)的第五站。OpenResty × Open Talk 全國(guó)巡回沙龍旨在促進(jìn) OpenResty 在技術(shù)圈的發(fā)展,增進(jìn) OpenResty 使用者的交流與學(xué)習(xí)。在成都站活動(dòng)現(xiàn)場(chǎng),五位嘉賓分享了自己專業(yè)的觀點(diǎn)和經(jīng)驗(yàn),讓到場(chǎng)的開(kāi)發(fā)者受益匪淺。

又拍云Open Talk:OpenResty最佳實(shí)踐

  成都站活動(dòng)現(xiàn)場(chǎng)合影

OpenResty × Open Talk 全國(guó)巡回沙龍成都站邀請(qǐng)了 OpenResty 軟件基金會(huì)發(fā)起人溫銘、王院生、又拍云系統(tǒng)開(kāi)發(fā)高級(jí)工程師黃勵(lì)博、原貝殼找房基礎(chǔ)架構(gòu)部工程師尹吉峰、奇安信工程師艾菲,分享了包括高性能 API 網(wǎng)關(guān)、云存儲(chǔ)網(wǎng)關(guān)、高性能 Web 應(yīng)用等 OpenResty 相關(guān)技術(shù)應(yīng)用,為近百位現(xiàn)場(chǎng)觀眾和數(shù)千線上觀眾提供了一場(chǎng)技術(shù)盛宴。

又拍云Open Talk:OpenResty最佳實(shí)踐

  言幾又·成都凱德店

說(shuō)起成都大家的第一反應(yīng)肯定是天府之國(guó)、美食之都、火鍋二巨頭之一,總而言之吃就完事了!然而本次活動(dòng)的一大亮點(diǎn)就是在千丈口水中硬生生開(kāi)出一片書(shū)香墨意,這個(gè)獨(dú)具特色的活動(dòng)場(chǎng)地——言幾又·成都凱德店,為技術(shù)分享增添了一絲藝術(shù)氣息,此處書(shū)成墻壁,紙建空間,字畫(huà)風(fēng)情,講師們分享的內(nèi)容化為有血有肉的實(shí)體,讓每一個(gè)人到場(chǎng)者都被知識(shí)所包圍。

如何做 API 網(wǎng)關(guān)的選型、測(cè)試和持續(xù)集成

OpenResty 軟件基金會(huì)發(fā)起人溫銘做了開(kāi)場(chǎng)分享,他是開(kāi)源微服務(wù) API 網(wǎng)關(guān) APISIX 作者,《OpenResty 從入門到實(shí)戰(zhàn)》專欄作者,他以開(kāi)源微服務(wù) API 網(wǎng)關(guān) APISIX 為例,詳細(xì)介紹了 API 網(wǎng)關(guān)的選型和持續(xù)集成實(shí)踐。

又拍云Open Talk:OpenResty最佳實(shí)踐

  OpenResty 軟件基金會(huì)發(fā)起人溫銘

APISIX 是一個(gè)云原生、高性能、可擴(kuò)展的微服務(wù) API 網(wǎng)關(guān),基于 OpenResty 和 etcd 實(shí)現(xiàn),和傳統(tǒng) API 網(wǎng)關(guān)相比,APISIX 增加了包括支持多云和混合云、無(wú)狀態(tài)、隨意擴(kuò)容和縮容等在內(nèi)的諸多功能,能夠更為妥帖的滿足企業(yè)個(gè)性需求的開(kāi)發(fā)。

溫銘介紹了 API 網(wǎng)關(guān)的核心組件包括路由、插件、schema 和存儲(chǔ)等,他通過(guò)對(duì)著四個(gè)組件的合理選擇,使 APISIX 具有了很多獨(dú)有的功能;測(cè)試方面,APISIX 遵循著測(cè)試驅(qū)動(dòng)開(kāi)發(fā)的原則,通過(guò)單元測(cè)試、代碼風(fēng)格測(cè)試和代碼覆蓋率的檢測(cè),使 APISIX 達(dá)到了超高性能;持續(xù)集成方面,APISIX 強(qiáng)依賴 GitHub 和 travis CI,以及 coveralls.io。

溫銘總結(jié)到, APISIX 項(xiàng)目在設(shè)計(jì)與實(shí)現(xiàn)過(guò)程中,面臨著資源少的難題,但是通過(guò)對(duì)現(xiàn)有組件的合理使用,APISIX 的選型、測(cè)試和 CI 都找到了“取巧”和自動(dòng)化的方式,大大提升了項(xiàng)目完成的效率和項(xiàng)目的性能,GitHub 和 SaaS 能提供的,絕對(duì)不要自己造輪子。

又拍云基于 OpenResty 實(shí)現(xiàn)的云存儲(chǔ)網(wǎng)關(guān)

又拍云系統(tǒng)開(kāi)發(fā)高級(jí)工程師黃勵(lì)博,在又拍云主要負(fù)責(zé)私有容器平臺(tái)、云存儲(chǔ)、云處理相關(guān)的架構(gòu)設(shè)計(jì)和開(kāi)發(fā)工作,熟悉 Python/Lua/Go 等語(yǔ)言,在 Docker 容器方面擁有豐富的實(shí)踐經(jīng)驗(yàn),在 ngx_lua 和 OpenResty 方面有著豐富的模塊開(kāi)發(fā)和維護(hù)經(jīng)驗(yàn)。他在現(xiàn)場(chǎng)介紹了又拍云基于 OpenResty 實(shí)現(xiàn)的云存儲(chǔ)網(wǎng)關(guān),設(shè)計(jì)索引、存儲(chǔ)、分塊、負(fù)載均衡、流量控制等功能的實(shí)現(xiàn)與使用方法。

又拍云Open Talk:OpenResty最佳實(shí)踐

  又拍云系統(tǒng)開(kāi)發(fā)高級(jí)工程師黃勵(lì)博

黃勵(lì)博從數(shù)據(jù)拆分、路由配置、存儲(chǔ)常用的增刪查改和擴(kuò)容四個(gè)方面,詳細(xì)介紹了 OpenResty 在又拍云存儲(chǔ)中的實(shí)際應(yīng)用。

黃勵(lì)博講到,又拍云存儲(chǔ)是分布式存儲(chǔ),而分布式存儲(chǔ)的優(yōu)勢(shì)為高可用、易擴(kuò)展和易維護(hù)。而又拍數(shù)據(jù)的拆分是由 OpenResty 來(lái)進(jìn)行的三次拆分,拆分后又將 OpenResty 作為路由層并詳述了路由的配置規(guī)則。然后介紹了又拍云存儲(chǔ)系統(tǒng)中,以 OpenResty 的限制模塊為基礎(chǔ)開(kāi)發(fā)的 token bucket 的方法,向大家完整的分享又拍云存儲(chǔ)體系。

特別地,又拍云作為深度應(yīng)用 OpenResty 的企業(yè),正在不斷為 OpenResty 社區(qū)輸出開(kāi)源能力,目前已經(jīng)開(kāi)源了以下項(xiàng)目:

[1] upyun/slardar (https://github.com/upyun/slardar)

[2] upyun/lua-resty-checkups (https://github.com/upyun/lua-resty-checkups)

[3] upyun/lua-resty-limit-rate (https://github.com/upyun/lua-resty-limit-rate)

如何使用 OpenResty 搭建高性能 Web 應(yīng)用

原貝殼找房基礎(chǔ)架構(gòu)部工程師尹吉峰,多語(yǔ)言愛(ài)好者,偏向異步和函數(shù)式編程,酷愛(ài)原型搭建,先后在貝殼使用 OpenResty 搭建了 WebBeacon、圖片處理、短連接服務(wù)等。他在現(xiàn)場(chǎng)介紹了如何使用 OpenResty 做外部框架寫服務(wù),算是一種比較小眾的用法。

又拍云Open Talk:OpenResty最佳實(shí)踐

  原貝殼找房基礎(chǔ)架構(gòu)部工程師尹吉峰

尹吉峰認(rèn)為過(guò)早優(yōu)化是萬(wàn)惡之源,一個(gè)好的服務(wù)絕對(duì)不是優(yōu)化出來(lái)的,架構(gòu)決定了一個(gè)服務(wù)的基準(zhǔn)。有很多 Web 服務(wù)實(shí)際上是不適合做水平伸縮的,因此也要高性能。他介紹 Web 應(yīng)用絕大多數(shù)都是 IO 密集型,通過(guò)異步編程、事件驅(qū)動(dòng)的方式可以提高性能。

尹吉峰提到,OpenResty 是 Nginx 和 Lua 的有機(jī)完美結(jié)合,Nginx 是一流的反向代理服務(wù)器,在一線的互聯(lián)網(wǎng)公司已經(jīng)是一個(gè)標(biāo)配,因此在引入 OpenResty 風(fēng)險(xiǎn)很低;而 Lua 是小巧靈活的編程語(yǔ)言,支持 Coroutine,LuaJIT 性能強(qiáng)大,支持 FFI。之后,他詳細(xì)介紹了過(guò)去使用 OpenResty 構(gòu)建高性能 Web 應(yīng)用服務(wù)的實(shí)踐。

那些你可能不知道的 OpenResty 特性

奇安信服務(wù)端開(kāi)發(fā)艾菲,網(wǎng)名河馬大俠,《 OpenResty 最佳實(shí)踐 》貢獻(xiàn)者,前 OpenResty 軟件基金會(huì)成員。2013 年加入奇虎 360,擅長(zhǎng)使用 OpenResty 完成各種網(wǎng)關(guān)和緩存行為。他在現(xiàn)場(chǎng)介紹了 OpenResty 中具有重要意義的一些模塊、命令、API 和框架等。

又拍云Open Talk:OpenResty最佳實(shí)踐

  奇安信工程師艾菲

艾菲首先介紹了 OpenResty 作為 Web 服務(wù)器,提供了豐富的 Lua API,包括 ngx.say、ngx.resp.get_header、body_filter_by_*、ngx.exit() 等,讓我們可以去操縱 HTTP 的 request和 response 等基本元素,從而靈活控制整個(gè) HTTP 的請(qǐng)求和響應(yīng)體。如果遇到業(yè)務(wù)代碼,可以用 Lua 的方式編輯,開(kāi)發(fā)效率是無(wú)可比擬的。

艾菲介紹了定時(shí)器 ngx.timer.at 用法,可以實(shí)現(xiàn)延遲運(yùn)行的任務(wù)邏輯,甚至于通過(guò)一些特殊的調(diào)用方法實(shí)現(xiàn)定時(shí)任務(wù)的功能,這個(gè) API 還有一個(gè)“非凡”意義,可以實(shí)現(xiàn)跨作用域。他在分享最后介紹了一些 HTTPS 的性能問(wèn)題以及避免的方式。

高性能 API 網(wǎng)關(guān)實(shí)踐

OpenResty 軟件基金會(huì)發(fā)起人王院生,《OpenResty 最佳實(shí)踐》作者,開(kāi)源微服務(wù) API 網(wǎng)關(guān) APISIX 作者,在 OpenResty x Open Talk 上海站的活動(dòng)上,他詳細(xì)介紹了 APISIX 如何做到高性能及實(shí)現(xiàn)的技巧,本次分享,他介紹即將發(fā)布的APISIX 0.7 版本路由將會(huì)支持插件化,同時(shí)將會(huì)超 80% 的代碼覆蓋率。

又拍云Open Talk:OpenResty最佳實(shí)踐

  OpenResty 軟件基金會(huì)發(fā)起人王院生

王院生在現(xiàn)場(chǎng)分享了一些通用的 OpenResty 編程技巧,他將 radixtree 和 r3 做了對(duì)比解釋了 APISIX 選擇 radixtree 的原因,匹配模式簡(jiǎn)單、高效,支持遍歷、回調(diào)等;ngx.var 能使項(xiàng)目性能提速,最簡(jiǎn)單的方式是用 iresty/lua-var-nginx-module 的倉(cāng)庫(kù),可以有 5% 的性能提升;當(dāng)遇到 fail to json encode 的情況時(shí),他的做法是強(qiáng)制對(duì) cdata、userdata 等進(jìn)?編碼,在有循環(huán)嵌套時(shí)依然可以打印。

除此之外,王院生還向在場(chǎng)的開(kāi)發(fā)者推薦了他自己寫的靜態(tài)代碼檢查工具,能幫助解決很多代碼風(fēng)格的問(wèn)題。apisix/core 也是一個(gè)非常值得學(xué)習(xí)的基礎(chǔ)庫(kù),幫助大家了解一些非常實(shí)用的庫(kù)的實(shí)現(xiàn)。

極客網(wǎng)企業(yè)會(huì)員

免責(zé)聲明:本網(wǎng)站內(nèi)容主要來(lái)自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請(qǐng)進(jìn)一步核實(shí),并對(duì)任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對(duì)有關(guān)資料所引致的錯(cuò)誤、不確或遺漏,概不負(fù)任何法律責(zé)任。任何單位或個(gè)人認(rèn)為本網(wǎng)站中的網(wǎng)頁(yè)或鏈接內(nèi)容可能涉嫌侵犯其知識(shí)產(chǎn)權(quán)或存在不實(shí)內(nèi)容時(shí),應(yīng)及時(shí)向本網(wǎng)站提出書(shū)面權(quán)利通知或不實(shí)情況說(shuō)明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實(shí)情況證明。本網(wǎng)站在收到上述法律文件后,將會(huì)依法盡快聯(lián)系相關(guān)文章源頭核實(shí),溝通刪除相關(guān)內(nèi)容或斷開(kāi)相關(guān)鏈接。

2019-09-09
又拍云Open Talk:OpenResty最佳實(shí)踐
8 月 31 日,由又拍云、OpenResty 社區(qū)主辦的 OpenResty × Open Talk 全國(guó)巡回沙龍·成都站在言幾又&

長(zhǎng)按掃碼 閱讀全文