OpenResty Mimarisi
ngx_lua'nın LuaJIT'i Nginx istek aşamalarına nasıl gömdüğünü anlayın.
OpenResty Mimarisi, CoddyKit'te ücretsiz bir Lua Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Lua Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Lua Academy kursu toplamda 4 dersten oluşur.
OpenResty Nedir?
OpenResty, LuaJIT'i Nginx içine gömen bir web platformudur. Nginx'i, istekleri Lua kodunun işlediği tam özellikli bir web uygulaması sunucusuna dönüştürür.
ngx_lua Modülü
ngx_lua modülü, LuaJIT'i Nginx'e entegre eder. İstek/yanıt verilerine, zamanlayıcılara, paylaşılan belleğe ve cosocket'lere erişmek için ngx.* API'sini sağlar.
Nginx İstek Aşamaları
OpenResty, Nginx'in istek işleme aşamalarını Lua kancaları olarak sunar: init_by_lua, access_by_lua, content_by_lua, header_filter_by_lua, log_by_lua.
nginx.conf Temelleri
Lua işleyicilerini uygun aşama yönergesini kullanarak nginx.conf içinde yapılandırınız.
# nginx.conf snippet
server {
listen 80;
location /hello {
content_by_lua_block {
ngx.header["Content-Type"] = "text/plain"
ngx.say("Hello from Lua!")
}
}
}İstek Başına Eş Yordam Modeli
Gelen her istek kendi Lua eş yordamını alır. Bir eş yordam askıya alındığında (örneğin bir veritabanını beklerken), Nginx diğer isteklere hizmet verir. Bu, engelleme olmadan yüksek eşzamanlılık sağlar.
ngx API'si
Temel ngx işlevleri: ngx.say(), ngx.print(), ngx.header, ngx.var, ngx.req.*, ngx.status, ngx.exit().
Paylaşılan Bellek Durumu
Worker süreçleri verileri, sabit bellek boyutuyla nginx.conf içinde tanımlanan paylaşılan bir sözlük olan ngx.shared.DICT aracılığıyla paylaşır.
# nginx.conf
lua_shared_dict my_cache 10m;
-- In Lua:
ngx.shared.my_cache:set("key", "value", 60)Cosocket'ler
OpenResty'nin cosocket'leri engellemesiz TCP/UDP ve HTTP sağlar. Nginx'in olay döngüsüyle bütünleşerek Lua'nın worker'ı engellemeden eşzamansız G/Ç işlemleri yapmasına olanak tanır.
Zamanlayıcı API'si
ngx.timer.at(delay, fn), bir Lua işlevinin gecikmeden sonra çalıştırılmasını planlar. ngx.timer.every(interval, fn) ise işlevi düzenli aralıklarla çalıştırır.
Performans Profili
OpenResty, her worker başına on binlerce eşzamanlı bağlantıyı yönetebilir. LuaJIT'in hızı ve Nginx'in kendini kanıtlamış G/Ç çoklama özelliğiyle bir araya geldiğinde, G/Ç ağırlıklı iş yüklerinde Go ve Node.js ile rekabet eder.
Yaygın Kullanım Alanları
- API ağ geçitleri ve hız sınırlama.
- Kimlik doğrulama/yetkilendirme ara yazılımı.
- Dinamik istek yönlendirme.
- Redis ve Memcached önbellekleme katmanları.
OpenResty Sorusu
OpenResty yüksek eşzamanlılığı nasıl sağlar?
Özet: OpenResty Mimarisi
OpenResty, LuaJIT'i Nginx içine gömer. Her istek bir coroutine olarak çalışır. ngx.* API'si istek/yanıt verilerine, paylaşılan belleğe, zamanlayıcılara ve engellemesiz cosocket'lere erişim sağlar.
Sıkça Sorulan Sorular
“OpenResty Mimarisi” dersi ücretsiz mi?
Evet — “OpenResty Mimarisi” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Lua Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Lua Academy kursu toplamda 4 dersten oluşur.
“OpenResty Mimarisi” dersinde ne öğreneceğim?
ngx_lua'nın LuaJIT'i Nginx istek aşamalarına nasıl gömdüğünü anlayın. Lua Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Lua Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Lua Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“OpenResty Mimarisi” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Lua Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Lua Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- OpenResty Mimarisi
- Lua'da HTTP İsteklerini İşleme
- Cosocket'ler ve Engellemesiz TCP
- Paylaşılan Bellek Sözlükleri