Quantcast
Channel: cc :: somkiat
Viewing all articles
Browse latest Browse all 1997

สวัสดี OpenResty กับลองเขียนภาษา Lua ใช้งาน Redis

$
0
0

ไปอ่าน Slide เรื่อง Scripting Nginx with Lua Introducing OpenRestly
พบว่าน่าสนใจมาก ๆ แต่ไม่รู้เรื่องอะไรเลย
ก็เลยลองหัดทำดูบ้าง โดยสิ่งที่อยากจะเรียนรู้ประกอบไปด้วย

  • OpenResty ต้องติดตั้งอะไรและ config อะไรให้ทำงานได้บ้าง
  • ลองเขียนภาษา Lua ดูนิดหน่อย
  • เชื่อมต่อกับ Redis ที่เป็น Key-value database เพราะว่าใช้งานอยู่แล้ว
  • ลองทำการทดสอบสิ่งที่พัฒนาขึ้นมา

เริ่มต้นในการติดตั้ง เอาง่าย ๆ ก็ใช้ Docker Image ของ OpenResty เลย

โดยใน official image สามารถเขียนภาษา Lua ได้เลย
รวมทั้งมี luarocks สำหรับติดตั้ง module/package ต่าง ๆ เพิ่มเติมได้เลย
ดังนั้นชีวิตง่ายละ

จากนั้นทำการเขียน Hello World ด้วยภาษา Lua
โดยเริ่มง่าย ๆ ด้วยการสร้าง location ในไฟล์ nginx.conf
เพื่อให้รับ request ที่มี query string ชื่อว่า name
แต่ถ้าไม่ส่งมาจะมีค่า default คือ Somkiat.cc
เขียนง่าย ๆ ได้ดังนี้

[gist id="84a43f24cb3558244afe33cd1940878e" file="nginx.conf"]

จากนั้นก็เขียน Dockerfile เพื่อนำไฟล์ nginx.conf เข้าไปใช้งาน

[gist id="84a43f24cb3558244afe33cd1940878e" file="Dockerfile"]

ทำการ build Docker image และ run เป็นอันเสร็จพิธี
ใช้งานได้เลย แถม performance ก็ดีเลย
เขียนง่าย เริ่มง่าย ที่เหลือไปเรียนรู้ภาษา Lua ต่อ

ไปหาดูเอกสารว่า Lua + Nginx มันทำงานอย่างไร

ก็ได้รูปนี้มา

ต่อมาทำการเชื่อมต่อไปยัง Redis ซึ่งเป็น Key-value database

โดยที่ OpenResty ก็มี package lua-resty-redis ให้ใช้งาน
ซึ่งทำการติดตั้งผ่าน luarocks ได้เลย
ดังนั้นก็ไปเพิ่มใน Dockerfile จากขั้นตอนแรกดังนี้

[gist id="84a43f24cb3558244afe33cd1940878e" file="Dockerfile2"]

จากนั้นก็เขียนในไฟล์ nginx.conf เพื่อเพิ่ม location ใหม่
สำหรับทำงานร่วมกับ Redis ไปดูในเอกสารก็ copy มาเลย
ทำการเชื่อมต่อไปยัง Redis server
ซึ่งผมสร้างเป็นอีก container หนึ่ง
ทำการรับ key และ value มา เพื่อจัดเก็บใน Redis แบบง่าย ๆ

[gist id="84a43f24cb3558244afe33cd1940878e" file="nginx2.conf"]

จากการทดสอบแล้วนั้น performance ตกลงไป แต่ไม่มากนัก

ดีมาก ๆ แต่ไว้ต้อง tuning อีกรอบ
แต่คิดว่า มันเขียนง่ายดีนะ
จะให้ดีต้องแยก code ออกมาในไฟล์นามสกุล lua จะจัดการง่ายขึ้น
ถือว่าเป็นก้าวแรกที่น่าสนใจมาก ๆ  มันจบทุกอย่างในตัวเองเลย
น่าลองเอาไปใช้งานจริง ๆ วะแล้ว


Viewing all articles
Browse latest Browse all 1997

Trending Articles