Önce soracağım mevzunun çıkış noktası
- php ile kodlanmış bir restful api yapısı var.
- bu api yapısı, ip kısıtlaması ile sadece yetki verilen başka sunucular üzerinden gelen taleplere cevap veriyor.
- talep gönderen sunucu ip'si filtreyi geçebiliyorsa bu sefer başka authentication filtreleri devreye girip talep işleniyor ve cevap veriliyor.
- gelen talepler farklı farklı sitelerden de olsa hepsi tek bir veri havuzu üzerinden hem genel data hemde sadece kendi scope'una lazım olan data'yı çekiyor
işlemler biraz karışık olsa da aslında api'nin yaptığı temel şey veritabanından datayı çekip json olarak basmak.
bu yapı şuan için hali hazırda çalışıyor.
ee derdin ne dostum derseniz şöyle bir durum var; mevcut data'nın bir kısmı üzerinde tüm sitelerin işlem yapma hakkı var.
anlaşılması için en basitinden örneklersem bu datayı bir x ve y olarak düşünün. x makale okunma sayısı ve y de toplam makale sayısı olsun. x makalesine her talep geldiğinde mantıken okunma sayısı 1 artar. her yeni eklenen makaleden sonra da y adedi artar.
x sayısı için sorun yok adam sayfayı açtığında datayı çekip sayfaya basıyoruz. başka sitelerden görüntüleme gelmiş ve x sayısı artmış önemli değil ziyaretçi bunu görmesede olur ama sitelerde birde jquery ile long pooling yapan bir kısım var. o da 30 saniyede bir api üzerinden sürekli makale sayısı y'nin durumunu sorup duruyor.
hesabı en düşüğünden yapayım 50 site olsa her sitede anlık 5 kişi olsa ilk anda 250 sorgu, bunlar sayfayı açık bıraksalar ve ilerleyen dakikalarda yeni ziyaretçiler gelmeye devam etse long pooling sayesinde oluşacak trafiği siz düşünün.
şimdilik tekleyen yada sıkıntı çıkartan bir taraf yok. darboğaza girmeden önce kafa rahatken hem yeni birşeyler öğrenip hemde çıkması muhtemel sorunu çözecek neler yapabilirim diye düşünüyorum.
bu konuda ilk aklıma gelen api kısmını nodejs'ye çevirmek oldu. daha önceden merak ederek her yerde bahsi geçen basit haliyle chat zımbırtılarını denemiştim ama vakit bulupta geliştirecek birşeyler yapmadım.
whatsapp'ın sunumlarından birinde erlang'ı anlata anlata bitiremediklerini gördüm.
bazı kaynaklarda nodejs ile erlang'ı kıyaslamaya bile sokmayın, biri elma diğeri armut gibi diye baya celallenen insanlar var.
keza scala ve frameworklerini övenlerde var.
backend kısım için non-blocking bir yapı kursak, hem güvenlikli olsa hem sunucuyu şişirmese, hem de güncelleme olduğunda bunu tarayıcılara push etse
bu dillerle uğraşıp kolaylığını yada zorluğunu yaşamış tecrübesi olan birisi ne tavsiye eder yada bunların bir birlerine üstünlüğü yada eksikleri nelerdir
değerlendirme olmaz ise gönlüm erlang'dan yana olsa da nodejs ile işe girişicem sanırım.
NodeJs, Erlang, Scala vs.
8
●592
- 03-04-2015, 17:43:16Nodejs'e bir ara takmıştım ama ben de çok ilerleme kaydedemedim, diğerlerini bilmiyorum. Örneğinizdeki gibi sadece makale okunma sayısını arttıracaksanız, php yapınızı bozmadan nodejs ile bu tür işlemler yapabilirsiniz. Sayfaya herhangi bir js dosyası ekler gibi, nodejs ile çalışacak olan socket.io'yu script tagı ile sisteme dahil edebilirsiniz. Ama daha önemli işlemlerde bu yöntem güvenlik zafiyetine sebep olur. Bu durumda da php yapısını editleyerek portlar aracılığıyla php ve nodejsnin haberleşmesini sağlayabilirsiniz.
Daha bilgili arkadaşlar umarım konuya katkıda bulunur. Takipteyim. - 03-04-2015, 18:11:45verdiğim örnek durumun en basit hali. bazı yerlerde işin içine çeşitli matematiksel işlemler falanda giriyor, transaction ile db kayıt işlemleri falan yapılıyor bazı kısımlarda memcache devreye giriyor, loglamada mongo işin içinde. sistem yürüyor ama aslında işin mimarisi tam bir tersine piramitcodeksper adlı üyeden alıntı: mesajı görüntüle

bende piramit bir yöne yatmadan güvenliği sağlayarak birşeyler yapma gayretindeyim.
hocam normalde mysql idi fakat tüm sitelerin datalarını postgresql üzerinde tek bir veri tabanı içine topladım.ylv adlı üyeden alıntı: mesajı görüntüle
loglama kısmında da mongo kullanılıyor.
bu arada php api gelen talepleri her siteye özel kriptolayıp json basıyor, talep yapan site de bu kriptoyu geri çözüp datayı kullanıyor.
yani girişeceğim sistemde güvenlik kısmı da ön planda olmalı, ön plandan kastım auth kısımlarını kafama göre değiştirip elden geçirebileceğim şekilde esneklik tanımalı - 03-04-2015, 18:55:08Üyeliği durduruldusizin sisteminizde giriş çıkışlar tek bir çatı altında mı? master slave yapılandırması var mı? nodejs,erlang vs istediğinizi kullanın sizin sisteminiz cevap veremedikten sonra bir önemi yok bunların. makale okunma sayısını nasıl artırıyorsunuz, her gelen istekte direk güncelleme vs yapmıyorsunuzdur umarım.Haplo adlı üyeden alıntı: mesajı görüntüle
konuyla alakalı nodejs,erlang vs bunlarla ilgilenmiyorum ben, ben sistemizin maksimum performans vermesi için gereken yapı ile ilgileniyorum. - 03-04-2015, 19:08:26hocam en çok canımı sıkan noktalardan birine parmak bastınızylv adlı üyeden alıntı: mesajı görüntüle

db kısmı master, slave ilişkisi olan iki farklı sunucu kullanıyor, web app içinde üçüncü sunucu var.
bir yandan maliyetleri düşürmem gerek ama data kaybına tahammül yok eee bu durumda ben slave'i nasıl iptal edicem
al sana doluyu dolduramama ve doluyu boşaltamama ikilemi.
şimdiye kadar rest apinin çalıştığı db kısmında bir aksama yaşanmadı. web app kısmında nadiren sıkıntılar oluşuyor onun da %90 sebebi sayfa boyutlarının ortalama 1.2 mb kadar olması.
dediğim gibi maliyetler açısından bu işi iki sunucu üzerinden halledebilsem süper olur.
bu arada makale sayısının anında güncellenmesi ve diğer sitelere de bunun sunulması gerekiyor malesef.
maksat hem yeni birşeyler öğrenebilmek hem kendimi geliştirebilmek hemde sistemi daha kararlı hale getirmek - 03-04-2015, 19:45:46Üyeliği durdurulduünide bu konuları ilgilendiren bir ders var. buna benzer yapı için hoca ile tartışma yaşamıştık. genel olarak biz şu an senin yaptığın yapıya benzer bir yapı üzerinde durup desteklesek de hoca bu yapıya karşı çıktı ve şöyle birşey söyledi.Haplo adlı üyeden alıntı: mesajı görüntüle
adam gelip senden hizmet alıcaksa senin adama vericeğin panel üzerinden sana taleplerini ileticek. (şu makelenin sayısı, yeni makale gönder ve bunların zaman aralıkları) makelenin sayısı 5 sn de bir gönder bana, yeni makaleleri saat başı gönder gibi. bu bilgiler doğrultusunda karşı tarafın sunucusuna istek göndericeksin. alan adam ne yaparsa yapsın gerisi bizi ilgilendirmiyor.
iki taraf açısından düşününce aslında en mantıklısı bu.
master slave yapısı yapıldıysa sizde farkındasınızdır sistem yetersiz kalabilir slave sunucu ekleyerek hızlı bir çözüm getiriyim diye düşünüyoruz. şimdi direk masraf olmasın diyorsunuz ama masraftan kaçış yok istediğiniz yapı için.
slave sunucu sayısı arttıkça bunları kontrol vs baya bir uğraş giricek.
hocanın söylediğini bir düşünün derim
- 03-04-2015, 20:19:48hocanın düşüncesi istisnai bir durum ile patlıyor
çünkü veriyi sunan da benim alan da benim
ben datayı verdim gerisine karışmam diyemiyorum. iki tarafı da yapmam lazım. veriyi talep eden kısımda yapabileceğim fazla bir şey yok. o yüzden rest api servisi kısmında birşeyler yapmam lazım. bu haliyle bıraksam şu an sıkıntı yok ama bu sayede popüler bir dili öğrensem fena olmaz.
dediğim gibi nodejs ağır basıyor şuan - 03-04-2015, 20:51:26Üyeliği durduruldusisteminiz veritabanı yönünden sıkıntı yaşarsa benimle iletişime geçebilirsiniz. senin yapın gibi yoğun isteğe maruz kalıcak yapılara meraklıyım ilgileniyorum. sistemin şu an haline ve nodejs kullandıktan sonra ki haline mümkünse benchmark yapıp sonuçlarını paylaşır mısınız?Haplo adlı üyeden alıntı: mesajı görüntüle
misal dakika da 5000 istek gelse ortalama 0.012 saniye başı istek eder. 10000 de 0.006 sn gibi bir süre çıkar ki sistem kaldırabilecek mi? bir slave sunucu ne ort. ne kadar isteğe cevap veriyor, hesaplanızda fayda var.
kolay gelsin

