lua、Canal實現廣告緩存原理分析

lua是什麼

Lua [1] 是一個小巧的腳本語言。它是巴西里約熱內盧天主教大學(Pontifical Catholic University of Rio de Janeiro)裏的一個由Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo三人所組成的研究小組於1993年開發的。 其設計目的是爲了通過靈活嵌入應用程序中從而爲應用程序提供靈活的擴展和定製功能。Lua由標準C編寫而成,幾乎在所有操作系統和平臺上都可以編譯,運行。Lua並沒有提供強大的庫,這是由它的定位決定的。所以Lua不適合作爲開發獨立應用程序的語言。Lua 有一個同時進行的JIT項目,提供在特定平臺上的即時編譯功能。

簡單來說:

Lua 是一種輕量小巧的腳本語言,用標準C語言編寫並以源代碼形式開放, 其設計目的是爲了嵌入應用程序中,從而爲應用程序提供靈活的擴展和定製功能。
OpenResty介紹

OpenResty(又稱:ngx_openresty) 是一個基於 nginx的可伸縮的 Web 平臺,由中國人章亦春發起,提供了很多高質量的第三方模塊。

OpenResty 是一個強大的 Web 應用服務器,Web 開發人員可以使用 Lua 腳本語言調動 Nginx 支持的各種 C 以及 Lua 模塊,更主要的是在性能方面,OpenResty可以 快速構造出足以勝任 10K 以上併發連接響應的超高性能 Web 應用系統。

360,UPYUN,阿里雲,新浪,騰訊網,去哪兒網,酷狗音樂等都是 OpenResty 的深度用戶。

OpenResty 簡單理解成 就相當於封裝了nginx,並且集成了LUA腳本,開發人員只需要簡單的其提供了模塊就可以實現相關的邏輯,而不再像之前,還需要在nginx中自己編寫lua的腳本,再進行調用了。

canal

canal可以用來監控數據庫數據的變化,從而獲得新增數據,或者修改的數據。

canal是應阿里巴巴存在杭州和美國的雙機房部署,存在跨機房同步的業務需求而提出的。

阿里系公司開始逐步的嘗試基於數據庫的日誌解析,獲取增量變更進行同步,由此衍生出了增量訂閱&消費的業務。



原理相對比較簡單:

  1. canal模擬mysql slave的交互協議,僞裝自己爲mysql slave,向mysql master發送dump協議
  2. mysql master收到dump請求,開始推送binary log給slave(也就是canal)
  3. canal解析binary log對象(原始爲byte流)

canal需要使用到mysql,我們需要先安裝mysql,給大家發的虛擬機中已經安裝了mysql容器,但canal是基於mysql的主從模式實現的,所以必須先開啓binlog.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章