Масштабирование между ЦОДами
От: Gattaka Россия  
Дата: 27.07.18 18:19
Оценка:
Коллеги, положим есть приложение. Веб сервис с базой. Задача такая, что нужно смасштабировать его на два ЦОД. Как такое делается? Ведь латенси между ЦОД большой и по тупому сделать репликацию между базами не выйдет. Тогда как?
Re: Масштабирование между ЦОДами
От: kov_serg Россия  
Дата: 27.07.18 20:17
Оценка:
Здравствуйте, Gattaka, Вы писали:

G>Коллеги, положим есть приложение. Веб сервис с базой. Задача такая, что нужно смасштабировать его на два ЦОД. Как такое делается? Ведь латенси между ЦОД большой и по тупому сделать репликацию между базами не выйдет. Тогда как?

Шардинг? Горизонтальный Вертикальный
Re: Масштабирование между ЦОДами
От: Lepsik Индия figvam.ca
Дата: 04.09.18 20:11
Оценка:
Здравствуйте, Gattaka, Вы писали:

G>Коллеги, положим есть приложение. Веб сервис с базой. Задача такая, что нужно смасштабировать его на два ЦОД. Как такое делается? Ведь латенси между ЦОД большой и по тупому сделать репликацию между базами не выйдет. Тогда как?


делайте асинхронную двухстороннюю репликацию.
Re: Масштабирование между ЦОДами
От: itslave СССР  
Дата: 12.09.18 09:05
Оценка:
Здравствуйте, Gattaka, Вы писали:

G>Коллеги, положим есть приложение. Веб сервис с базой. Задача такая, что нужно смасштабировать его на два ЦОД. Как такое делается? Ведь латенси между ЦОД большой и по тупому сделать репликацию между базами не выйдет. Тогда как?

Это зависит от того, какие цели стоят для распределенного деплоймента. Ну и хорошо бы сначала померять, насколько большая лейтенси, может она и не такая и большая.
Re: Масштабирование между ЦОДами
От: GarryIV  
Дата: 13.10.18 15:05
Оценка:
Здравствуйте, Gattaka, Вы писали:

G>Коллеги, положим есть приложение. Веб сервис с базой. Задача такая, что нужно смасштабировать его на два ЦОД. Как такое делается? Ведь латенси между ЦОД большой и по тупому сделать репликацию между базами не выйдет. Тогда как?


Можно взять БД которая умеет географическое распределение изначально: Cassandra, Google Spanner etc.
WBR, Igor Evgrafov
Re: Масштабирование между ЦОДами
От: white_znake  
Дата: 30.10.18 13:31
Оценка:
Здравствуйте, Gattaka, Вы писали:

G>Коллеги, положим есть приложение. Веб сервис с базой. Задача такая, что нужно смасштабировать его на два ЦОД. Как такое делается? Ведь латенси между ЦОД большой и по тупому сделать репликацию между базами не выйдет. Тогда как?


Прежде чем, что-то масштабировать, нужно понять, что же тормозит: сам сервис или бд?
Если тормоза в бд, то профильнуть запросы. Шардирование бд — это когда у вас объем данных как у ФБ. Но я видел когда в таблице порядка 100К записей и в запросах были тормоза, в этом случае ни какое шардирование не поможет.
В бд провести денормализацию данных, заюзать Materialized Views, если не поможет, то кешировать результаты выполнения тяжеловесных запросов. В общем, шардирование бд — это реально последнее, что нужно делать.

Если торомза в сервисе, то посмотреть какая часть сервиса тормозит. Если сервис монолитный, то превратить его в набор микросервисов и тормозящие микросервисы горизонтально масштабировать.
Если же и так микросервисная архитектура, то все проще

А что за СУБД и на чем написан сервис?
Re[2]: Масштабирование между ЦОДами
От: itslave СССР  
Дата: 30.10.18 14:27
Оценка:
Здравствуйте, white_znake, Вы писали:

_>Если тормоза в бд, то профильнуть запросы. Шардирование бд — это когда у вас объем данных как у ФБ. Но я видел когда в таблице порядка 100К записей и в запросах были тормоза, в этом случае ни какое шардирование не поможет.

_>В бд провести денормализацию данных, заюзать Materialized Views, если не поможет, то кешировать результаты выполнения тяжеловесных запросов. В общем, шардирование бд — это реально последнее, что нужно делать.

Это сильно зависит от нагрузки. Если данных относительно немного, но постоянная нагрузка и на чтение и на запись — то ни денормализация, ни кеширование не помогут.
Re[3]: Масштабирование между ЦОДами
От: white_znake  
Дата: 30.10.18 15:01
Оценка:
Здравствуйте, itslave, Вы писали:

I>Это сильно зависит от нагрузки. Если данных относительно немного, но постоянная нагрузка и на чтение и на запись — то ни денормализация, ни кеширование не помогут.


Денормализация не зависит от объема данных вообще. Как пример: у тебя есть чаты, и тебе нужно для каждого пользователя хранить кол-во непрочитанных сообщений, вместо нормализации и подсчета кол-ва непрочитанных сообщений, можешь хранить кол-во непрочитанных сообщений.

Обычно больше read запросов (80%), чем write (20%), поэтому кеширование может зайти хорошо (но как всегда, есть проблема с инвалидацией кэша, поэтому его использовать, когда оптимизация запросов не помогла). Но тут опять же, не зная предметной области ни чем не поможешь. Может у него реально модель где 80% write операций, а 20% read.

Тут просто ТС хочет шардирование для бд, мне кажется, что у него нет столько данных, что бы нормальная бд: Postgre, Oracle или даже MS SQL — не справелись бы. Скорее всего проблема с оптимизацией.
Re[4]: Масштабирование между ЦОДами
От: itslave СССР  
Дата: 30.10.18 15:43
Оценка:
Здравствуйте, white_znake, Вы писали:

_>Денормализация не зависит от объема данных вообще. Как пример: у тебя есть чаты, и тебе нужно для каждого пользователя хранить кол-во непрочитанных сообщений, вместо нормализации и подсчета кол-ва непрочитанных сообщений, можешь хранить кол-во непрочитанных сообщений.

Я в курсе, просто это не всегда помогает.

_>Обычно больше read запросов (80%), чем write (20%), поэтому кеширование может зайти хорошо (но как всегда, есть проблема с инвалидацией кэша, поэтому его использовать, когда оптимизация запросов не помогла). Но тут опять же, не зная предметной области ни чем не поможешь. Может у него реально модель где 80% write операций, а 20% read.

Отош
_>Тут просто ТС хочет шардирование для бд, мне кажется, что у него нет столько данных, что бы нормальная бд: Postgre, Oracle или даже MS SQL — не справелись бы. Скорее всего проблема с оптимизацией.
У меня украли миелофон и телепаты ушли в отпуск.
Re: Масштабирование между ЦОДами
От: VladiCh  
Дата: 01.12.18 05:35
Оценка: 3 (1)
Здравствуйте, Gattaka, Вы писали:

G>Коллеги, положим есть приложение. Веб сервис с базой. Задача такая, что нужно смасштабировать его на два ЦОД. Как такое делается? Ведь латенси между ЦОД большой и по тупому сделать репликацию между базами не выйдет. Тогда как?


С чего это не выйдет? Репликация асинхронная конечно нужна, ну и приложения надо писать так чтобы особенности этого учитывались.
Почитай вообще книжку Designing Data-Intensive Applications, ну или русский перевод тут (хотя в отзывах пишут что фигово перевели — "Высоконагруженные приложения. Программирование, масштабирование, поддержка" Мартина Клепмана) — там обсуждается вопрос репликации между дата центрами довольно подробно.
Re[3]: Масштабирование между ЦОДами
От: VladiCh  
Дата: 01.12.18 05:38
Оценка:
Здравствуйте, itslave, Вы писали:

I>Здравствуйте, white_znake, Вы писали:


_>>Если тормоза в бд, то профильнуть запросы. Шардирование бд — это когда у вас объем данных как у ФБ. Но я видел когда в таблице порядка 100К записей и в запросах были тормоза, в этом случае ни какое шардирование не поможет.

_>>В бд провести денормализацию данных, заюзать Materialized Views, если не поможет, то кешировать результаты выполнения тяжеловесных запросов. В общем, шардирование бд — это реально последнее, что нужно делать.

I>Это сильно зависит от нагрузки. Если данных относительно немного, но постоянная нагрузка и на чтение и на запись — то ни денормализация, ни кеширование не помогут.


Репликация спасет, но пострадает доступность (availability). По условиям CAP теоремы что-то должно пострадать в любом случае, или consistency или availability.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.