Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Hackconf 2016 - Да пишем код за хиляди сървъри

380 views

Published on

Много често, когато искаме да станем по-добри backend програмисти се опитваме да научим различни езици за програмиране и съответните библиотеки. Проблема е че в Rails, Express.js, Django или Zend Framework има горе долу едни и същи концепции. Ако искаме да се научим как да пишем код за големи системи, които скалират добре и се справят сами с различни грешки и неочаквани ситуации, трябва да овладеем един друг дял от човешкото познание, който се нарича разпределени системи. В моята презентация ще видим защо трябва да задълбаем в тях и какви са основните принципи като консистентност(consistency), достъпност(availability) и издръжливост на разделения(partition tolerance). Също, ще разгледаме стъпки, които всеки може да направи за да научи повече по темата и да получава нови и актуални знания.

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

Hackconf 2016 - Да пишем код за хиляди сървъри

  1. 1. Да пишем код за хиляди сървъри @stoitsev
  2. 2. Backend или Сървърна част
  3. 3. MVC Структура ORM Библиотека за тестове Миграции за СУБД Библиотека за шаблони Библиотека за кеширане Превод и локализация Scaffolding Logging Сигурност Валидация на форми
  4. 4. Мащабируемост или scalability
  5. 5. Вертикално
  6. 6. Хоризонтално скалиране
  7. 7. Хоризонтално скалиране
  8. 8. Разпределена система “Разпределена система е група от самостоятелни сървъри, които работят заедно и отвън изглеждат като една цялостна система”
  9. 9. 120 сървъра = 1 сървър на месец
  10. 10. 1200 сървъра = 1 сървър на 15 дни
  11. 11. 12000 сървъра = 1 сървър на 7.5 часа
  12. 12. Няма stackoverflow
  13. 13. Децентрализирани алгоритми 1. Никоя машина няма информация за състоянитето на цялата система. 2. Всяка машина решава спряло локалната си информация. 3. Повреда е една машина не разваля целия алгоритъм. 4. Не се предполага че съществъва глобален часовник.
  14. 14. Gossip based membership
  15. 15. 1. Няма централизирано знание 2. Всеки сам има списък 3. Ако една машина се повреди, алгоритъма си работи 4. Няма глобален часовник
  16. 16. Консистентност Consistency
  17. 17. Достъпност Availability
  18. 18. Репликация
  19. 19. Репликация
  20. 20. Разделяне на мрежата Partition tolerance
  21. 21. 100 лв.
  22. 22. 100 лв. 100 лв.
  23. 23. CAP Теорема
  24. 24. Доказателство Seth Gilbert and Nancy Lynch. 2002. Brewer's conjecture and the feasibility of consistent, available, partition-tolerant web services.
  25. 25. Консистентност Или Достъпност
  26. 26. Кворум PH PDC TSTS
  27. 27. “A distributed system is one in which the failure of a computer you didn't even know existed can render your own computer unusable.”
  28. 28. Ресурси https://en.wikipedia.org/wiki/Fallacies_of_distributed_computing https://www.goodreads.com/book/show/405614.Distributed_Systems https://www.coursera.org/specializations/cloudcomputing http://the-paper-trail.org/blog/consensus-protocols-paxos/ http://dl.acm.org/citation.cfm?id=564601 https://www.cs.cornell.edu/projects/ladis2009/papers/lakshman- ladis2009.pdf http://static.googleusercontent.com/media/research.google.com/en//archi ve/gfs-sosp2003.pdf
  29. 29. Въпроси?

×