Разработка высоконагруженных проектов,Что нового?<br />Олег Бунин<br />
Тенденции 2010 года<br />Облачная инфраструктура;<br />NoSQLбазы данных;<br />Новые языки, Erlang;<br />nginxв железе.<br />
Практический пример NoSQL в высоконагруженном проекте<br />
Модели данных<br />Реляционная модель: данные в базе данных представляют собой набор отношений;<br />Иерархическая модель:...
Разработка чата<br />
Постановка задачи<br />Около десяти тысяч одновременных подключений;<br />Доставка сообщения в реальном времени (чат);<br ...
Обычная схема<br />
Вопросы к обычной схеме<br />
Мгновенность доставки<br />Как нам сообщать клиенту о том, что пришло сообщение? <br />Нам нужен event-driven!<br />
Event-driven<br />Нам нужно сообщать в реальном времени клиенту о новых сообщениях!<br />Мгновенную доставку можно решить ...
Event-driven чат<br />Каждый новый клиент, входящий в переписку устанавливает соединение с одним из «быстрых» серверов (ph...
Event-driven чат<br />
Тестирование скоростей<br />
oleg.bunin@ontico.ru<br />
Upcoming SlideShare
Loading in...5
×

Bunin.hiload

217

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
217
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Bunin.hiload

  1. 1. Разработка высоконагруженных проектов,Что нового?<br />Олег Бунин<br />
  2. 2. Тенденции 2010 года<br />Облачная инфраструктура;<br />NoSQLбазы данных;<br />Новые языки, Erlang;<br />nginxв железе.<br />
  3. 3. Практический пример NoSQL в высоконагруженном проекте<br />
  4. 4. Модели данных<br />Реляционная модель: данные в базе данных представляют собой набор отношений;<br />Иерархическая модель: база данных состоит из объектов с указанием отношений родитель ребенок;<br />Сетевая модель: база данных со структурой в виде графа;<br />Объектно-ориентированная модель: база данных, в которой данные представлены в виде моделей объектов.<br />
  5. 5. Разработка чата<br />
  6. 6. Постановка задачи<br />Около десяти тысяч одновременных подключений;<br />Доставка сообщения в реальном времени (чат);<br />Сохранение истории сообщений (переписка);<br />Одновременная переписка с несколькими участниками.<br />
  7. 7. Обычная схема<br />
  8. 8. Вопросы к обычной схеме<br />
  9. 9. Мгновенность доставки<br />Как нам сообщать клиенту о том, что пришло сообщение? <br />Нам нужен event-driven!<br />
  10. 10. Event-driven<br />Нам нужно сообщать в реальном времени клиенту о новых сообщениях!<br />Мгновенную доставку можно решить некоей имитацией длинных незакрытых соединений (WebSockets, FlashSocket, AJAX Long polling, Iframe). <br />
  11. 11. Event-driven чат<br />Каждый новый клиент, входящий в переписку устанавливает соединение с одним из «быстрых» серверов (phpDaemon или Node.js) и от него же будет получать сообщения.<br />При отправке на основной сервер нового сообщения, оно записывается в постоянную базу данных (MySQL), а так же в некую «быструю» базу данных (в данном случае MongoDB), где будет храниться только актуальная переписка, например за последние сутки.<br />MasterMongoDB записывает изменения в коллекцию local.oplog.$main для репликации.<br />«Быстрые сервера» в это время ведут опрос «быстрой» базы на предмет наличия в ней новых сообщений, и, если такие есть, отправляют их тому клиенту, которому они адресованы.<br />
  12. 12. Event-driven чат<br />
  13. 13. Тестирование скоростей<br />
  14. 14. oleg.bunin@ontico.ru<br />
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×