Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Tornado ve Ölçeklenebilirlik

Mehmet Köse
November 21, 2013

Tornado ve Ölçeklenebilirlik

Yüksek trafik altındaki web sitelerinin ölçeklendirilmesi, örnek senaryo. NGINX & MONGODB & PYTHON/TORNADO
http://www.ozgurwebgunleri.org.tr/2013/etkinlik-programi/

Tornado & Scalability in Turkish

Mehmet Köse

November 21, 2013
Tweet

More Decks by Mehmet Köse

Other Decks in Programming

Transcript

  1. “ “DOĞRU ARAÇLARLA BAŞLARSANIZ, ÖLÇEKLENEBİLİRLİK DOĞRU ARAÇLARLA BAŞLARSANIZ, ÖLÇEKLENEBİLİRLİK SİZİN

    İÇİN LEGO OYNAMAK KADAR KOLAY OLACAKTIR” SİZİN İÇİN LEGO OYNAMAK KADAR KOLAY OLACAKTIR”
  2. BAŞLARKEN PROBLEM : CONCURRENT 10 000 (C10K) Bir sunucunun eşzamanlı

    10k bağlantıdan fazlasını karşılayamaması problemi. ASENKRON PROGRAMLAMA class AsyncHandler(RequestHandler): @tornado.web.asynchronous def get(self): http_client = tornado.httpclient.AsyncHTTPClient() http_client.fetch("http://example.com", callback=self.on_fetch) def on_fetch(self, response): do_something_with_response(response) self.render("template.html")
  3. TORNADO HELLO WORLD import tornado.ioloop import tornado.web class MainHandler(tornado.web.RequestHandler): def

    get(self): self.write("Hello, world") application = tornado.web.Application([ (r"/", MainHandler), ]) if __name__ == "__main__": application.listen(8888) tornado.ioloop.IOLoop.instance().start()
  4. NGINX LOAD BALANCING http { upstream myproject { server 127.0.0.1:8888

    weight=1; server 127.0.0.1:8889; server 127.0.0.1:8890; server 127.0.0.1:8891; } server { listen 80; server_name www.domain.com; location / { proxy_pass http://myproject; } } }