Hackconf 2016 - Да пишем код за хиляди сървъри
-
Upload
nikolay-stoitsev -
Category
Engineering
-
view
231 -
download
8
Transcript of Hackconf 2016 - Да пишем код за хиляди сървъри
![Page 1: Hackconf 2016 - Да пишем код за хиляди сървъри](https://reader037.fdocument.pub/reader037/viewer/2022102720/5871d62f1a28ab423c8b69db/html5/thumbnails/1.jpg)
Да пишем код за хиляди сървъри
@stoitsev
![Page 2: Hackconf 2016 - Да пишем код за хиляди сървъри](https://reader037.fdocument.pub/reader037/viewer/2022102720/5871d62f1a28ab423c8b69db/html5/thumbnails/2.jpg)
![Page 3: Hackconf 2016 - Да пишем код за хиляди сървъри](https://reader037.fdocument.pub/reader037/viewer/2022102720/5871d62f1a28ab423c8b69db/html5/thumbnails/3.jpg)
![Page 4: Hackconf 2016 - Да пишем код за хиляди сървъри](https://reader037.fdocument.pub/reader037/viewer/2022102720/5871d62f1a28ab423c8b69db/html5/thumbnails/4.jpg)
Backend или Сървърна част
![Page 5: Hackconf 2016 - Да пишем код за хиляди сървъри](https://reader037.fdocument.pub/reader037/viewer/2022102720/5871d62f1a28ab423c8b69db/html5/thumbnails/5.jpg)
![Page 6: Hackconf 2016 - Да пишем код за хиляди сървъри](https://reader037.fdocument.pub/reader037/viewer/2022102720/5871d62f1a28ab423c8b69db/html5/thumbnails/6.jpg)
MVC Структура
ORM
Библиотека за тестове
Миграции за СУБД
Библиотека за шаблони
Библиотека за кеширане
Превод и локализация
Scaffolding
Logging
Сигурност
Валидация на форми
![Page 7: Hackconf 2016 - Да пишем код за хиляди сървъри](https://reader037.fdocument.pub/reader037/viewer/2022102720/5871d62f1a28ab423c8b69db/html5/thumbnails/7.jpg)
![Page 8: Hackconf 2016 - Да пишем код за хиляди сървъри](https://reader037.fdocument.pub/reader037/viewer/2022102720/5871d62f1a28ab423c8b69db/html5/thumbnails/8.jpg)
Мащабируемост или scalability
![Page 9: Hackconf 2016 - Да пишем код за хиляди сървъри](https://reader037.fdocument.pub/reader037/viewer/2022102720/5871d62f1a28ab423c8b69db/html5/thumbnails/9.jpg)
![Page 10: Hackconf 2016 - Да пишем код за хиляди сървъри](https://reader037.fdocument.pub/reader037/viewer/2022102720/5871d62f1a28ab423c8b69db/html5/thumbnails/10.jpg)
Вертикално
![Page 11: Hackconf 2016 - Да пишем код за хиляди сървъри](https://reader037.fdocument.pub/reader037/viewer/2022102720/5871d62f1a28ab423c8b69db/html5/thumbnails/11.jpg)
![Page 12: Hackconf 2016 - Да пишем код за хиляди сървъри](https://reader037.fdocument.pub/reader037/viewer/2022102720/5871d62f1a28ab423c8b69db/html5/thumbnails/12.jpg)
Хоризонтално скалиране
![Page 13: Hackconf 2016 - Да пишем код за хиляди сървъри](https://reader037.fdocument.pub/reader037/viewer/2022102720/5871d62f1a28ab423c8b69db/html5/thumbnails/13.jpg)
Хоризонтално скалиране
![Page 14: Hackconf 2016 - Да пишем код за хиляди сървъри](https://reader037.fdocument.pub/reader037/viewer/2022102720/5871d62f1a28ab423c8b69db/html5/thumbnails/14.jpg)
Разпределена система“Разпределена система е група от самостоятелни сървъри, които работят заедно и отвън изглеждат
като една цялостна система”
![Page 15: Hackconf 2016 - Да пишем код за хиляди сървъри](https://reader037.fdocument.pub/reader037/viewer/2022102720/5871d62f1a28ab423c8b69db/html5/thumbnails/15.jpg)
![Page 16: Hackconf 2016 - Да пишем код за хиляди сървъри](https://reader037.fdocument.pub/reader037/viewer/2022102720/5871d62f1a28ab423c8b69db/html5/thumbnails/16.jpg)
120 сървъра=
1 сървър на месец
![Page 17: Hackconf 2016 - Да пишем код за хиляди сървъри](https://reader037.fdocument.pub/reader037/viewer/2022102720/5871d62f1a28ab423c8b69db/html5/thumbnails/17.jpg)
1200 сървъра=
1 сървър на 15 дни
![Page 18: Hackconf 2016 - Да пишем код за хиляди сървъри](https://reader037.fdocument.pub/reader037/viewer/2022102720/5871d62f1a28ab423c8b69db/html5/thumbnails/18.jpg)
12000 сървъра=
1 сървър на 7.5 часа
![Page 19: Hackconf 2016 - Да пишем код за хиляди сървъри](https://reader037.fdocument.pub/reader037/viewer/2022102720/5871d62f1a28ab423c8b69db/html5/thumbnails/19.jpg)
![Page 20: Hackconf 2016 - Да пишем код за хиляди сървъри](https://reader037.fdocument.pub/reader037/viewer/2022102720/5871d62f1a28ab423c8b69db/html5/thumbnails/20.jpg)
![Page 21: Hackconf 2016 - Да пишем код за хиляди сървъри](https://reader037.fdocument.pub/reader037/viewer/2022102720/5871d62f1a28ab423c8b69db/html5/thumbnails/21.jpg)
Няма stackoverflow
![Page 22: Hackconf 2016 - Да пишем код за хиляди сървъри](https://reader037.fdocument.pub/reader037/viewer/2022102720/5871d62f1a28ab423c8b69db/html5/thumbnails/22.jpg)
Децентрализирани алгоритми
1. Никоя машина няма информация за състоянитето на цялата система.
2. Всяка машина решава спряло локалната си информация.
3. Повреда е една машина не разваля целия алгоритъм.
4. Не се предполага че съществъва глобален часовник.
![Page 23: Hackconf 2016 - Да пишем код за хиляди сървъри](https://reader037.fdocument.pub/reader037/viewer/2022102720/5871d62f1a28ab423c8b69db/html5/thumbnails/23.jpg)
Gossip based membership
![Page 24: Hackconf 2016 - Да пишем код за хиляди сървъри](https://reader037.fdocument.pub/reader037/viewer/2022102720/5871d62f1a28ab423c8b69db/html5/thumbnails/24.jpg)
![Page 25: Hackconf 2016 - Да пишем код за хиляди сървъри](https://reader037.fdocument.pub/reader037/viewer/2022102720/5871d62f1a28ab423c8b69db/html5/thumbnails/25.jpg)
![Page 26: Hackconf 2016 - Да пишем код за хиляди сървъри](https://reader037.fdocument.pub/reader037/viewer/2022102720/5871d62f1a28ab423c8b69db/html5/thumbnails/26.jpg)
![Page 27: Hackconf 2016 - Да пишем код за хиляди сървъри](https://reader037.fdocument.pub/reader037/viewer/2022102720/5871d62f1a28ab423c8b69db/html5/thumbnails/27.jpg)
1. Няма централизирано знание
2. Всеки сам има списък 3. Ако една машина се
повреди, алгоритъма си работи
4. Няма глобален часовник
![Page 28: Hackconf 2016 - Да пишем код за хиляди сървъри](https://reader037.fdocument.pub/reader037/viewer/2022102720/5871d62f1a28ab423c8b69db/html5/thumbnails/28.jpg)
КонсистентностConsistency
![Page 29: Hackconf 2016 - Да пишем код за хиляди сървъри](https://reader037.fdocument.pub/reader037/viewer/2022102720/5871d62f1a28ab423c8b69db/html5/thumbnails/29.jpg)
ДостъпностAvailability
![Page 30: Hackconf 2016 - Да пишем код за хиляди сървъри](https://reader037.fdocument.pub/reader037/viewer/2022102720/5871d62f1a28ab423c8b69db/html5/thumbnails/30.jpg)
Репликация
![Page 31: Hackconf 2016 - Да пишем код за хиляди сървъри](https://reader037.fdocument.pub/reader037/viewer/2022102720/5871d62f1a28ab423c8b69db/html5/thumbnails/31.jpg)
Репликация
![Page 32: Hackconf 2016 - Да пишем код за хиляди сървъри](https://reader037.fdocument.pub/reader037/viewer/2022102720/5871d62f1a28ab423c8b69db/html5/thumbnails/32.jpg)
Разделяне на мрежатаPartition tolerance
![Page 33: Hackconf 2016 - Да пишем код за хиляди сървъри](https://reader037.fdocument.pub/reader037/viewer/2022102720/5871d62f1a28ab423c8b69db/html5/thumbnails/33.jpg)
100 лв.
![Page 34: Hackconf 2016 - Да пишем код за хиляди сървъри](https://reader037.fdocument.pub/reader037/viewer/2022102720/5871d62f1a28ab423c8b69db/html5/thumbnails/34.jpg)
100 лв. 100 лв.
![Page 35: Hackconf 2016 - Да пишем код за хиляди сървъри](https://reader037.fdocument.pub/reader037/viewer/2022102720/5871d62f1a28ab423c8b69db/html5/thumbnails/35.jpg)
CAP Теорема
![Page 36: Hackconf 2016 - Да пишем код за хиляди сървъри](https://reader037.fdocument.pub/reader037/viewer/2022102720/5871d62f1a28ab423c8b69db/html5/thumbnails/36.jpg)
ДоказателствоSeth Gilbert and Nancy Lynch. 2002. Brewer's conjecture and the feasibility of consistent, available,
partition-tolerant web services.
![Page 37: Hackconf 2016 - Да пишем код за хиляди сървъри](https://reader037.fdocument.pub/reader037/viewer/2022102720/5871d62f1a28ab423c8b69db/html5/thumbnails/37.jpg)
![Page 38: Hackconf 2016 - Да пишем код за хиляди сървъри](https://reader037.fdocument.pub/reader037/viewer/2022102720/5871d62f1a28ab423c8b69db/html5/thumbnails/38.jpg)
![Page 39: Hackconf 2016 - Да пишем код за хиляди сървъри](https://reader037.fdocument.pub/reader037/viewer/2022102720/5871d62f1a28ab423c8b69db/html5/thumbnails/39.jpg)
Консистентност Или
Достъпност
![Page 40: Hackconf 2016 - Да пишем код за хиляди сървъри](https://reader037.fdocument.pub/reader037/viewer/2022102720/5871d62f1a28ab423c8b69db/html5/thumbnails/40.jpg)
Кворум
PH PDC
TSTS
![Page 41: Hackconf 2016 - Да пишем код за хиляди сървъри](https://reader037.fdocument.pub/reader037/viewer/2022102720/5871d62f1a28ab423c8b69db/html5/thumbnails/41.jpg)
“A distributed system is one in which the failure of a computer you didn't even know existed can render your own computer unusable.”
![Page 42: Hackconf 2016 - Да пишем код за хиляди сървъри](https://reader037.fdocument.pub/reader037/viewer/2022102720/5871d62f1a28ab423c8b69db/html5/thumbnails/42.jpg)
Ресурси
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//archive/gfs-sosp2003.pdf
![Page 43: Hackconf 2016 - Да пишем код за хиляди сървъри](https://reader037.fdocument.pub/reader037/viewer/2022102720/5871d62f1a28ab423c8b69db/html5/thumbnails/43.jpg)
Въпроси?