OptimizingWebApps

Damjan Georgievski edited this page Oct 28, 2018 · 1 revision

Скалирање на Web апликации

Архитектура на Web апликациите

  • (слика)
  • http (tcp/ip) - request - response
  • response-от може да биде било кој content, текст, слика, видео (но не измешано!)
  • статички и динамички content
    • динамичките содржини може да има различни периоди на менување
  • web сервер - статички содржини
  • php (код)
  • DB mysql (податоци и операции врз нив)

Проблеми и тесни грла

  • hardware
    • cpu (брзина, multi-core/cpu)
    • cache
    • меморија (брзина, количина, латенција)
    • disk (storage, bandwidth, iops)
    • мрежни перформанси (bandwidth, iops, latency)
  • OS
    • swap
    • scheduler
  • apache/php
    • process/thread, ресурси
    • број на истовремени конекции, slow clients
    • алгоритми
  • база на податоци,
    • lock на табели,
    • read/write contention,
    • комплексни query-ја,
    • лоши index-и...
    • трансакции
    • алгоритми
    • конекции
    • TPS
    • not so web парадигма

Стратегии за избегнување

  • scalability - особина на системот да биде спремен да расте заедно со потребата
  • scale up - вертикално скалирање (повеќе рам, повеќе/побрзи cpu, повеќе мрежни карти, подобри/повеќе дискови, различни компјутери)
    • грубо и лимитирано
  • scale out - хоризонтално скалирање (load balancing, sharding, partitioning...)
    • поинтелигентно, покомплицирано
  • дијагонално скалирање (комбинација на другите)
    • сѐ е компромис

Решенија

  • RAID-0/1, multi-core, RAM...
  • storage
  • http сервер (nginx, lighttpd, cherokee)
  • http proxy, load balancer (nginx, squid, varnish)
  • proxy + http cache (squid, ncache (nginx), varnish)
  • proxy + cache + ESI (Edge Side Includes) (squid, varnish)
  • reliability - ucarp, vrrp
  • Oracle RAC "shared-everything" (посебно маните)
  • Shared nothing architecture
  • MySQL master/slave, master/master итн.
  • mysql proxy (sharding/partitioning, load balancing)
  • CouchDB, Tokyo Cabinet, Facebook's Cassandra (anti-SQL)
  • memcache (дистрибуиран key->value storage) - за content или query-ја или други пресметки
  • Federation (Google Wave, OpenID, jabber, итн)
  • Akamai, Amazon S3

Предизвици

  • contention/загушување (db, cpu, bus, memory, cache, disk ...)
  • session affinity
  • Parallelism
  • конзистентност
  • ажурност
  • reliability

ВАЖНО

  • Мерење
  • Тестови
  • Трендови
  • Анализа

Ресурси

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.