172 похожих чатов

Текушая ситуация: Имеется 40+ информационных систем, со своими базами данных postgres. Большая

часть (30) развернута посредством трех докеров: nginx, app and db.
Но есть и такие (10), которые работают на хосте (виртуальной машине).
Конфигурации виртуалок раличные, мониторим вручную поддерживая утилизацию по cpu и ram на уровне <70%.
Сейчас системы разрознены, работают каждая сама по себе, интеграции практически нет.
Идем в сторону сервис-ориентированной архитекуры.

Железо получаем от провайдера и имеем ограничения на виртуалки (на странность ограничений просьба не обращать внимания): max cpu = 54, max ram = 64Gb
Оптимизацию запросов делаем постоянно, для упрощения задачи будем считать, что все запросы максимально оптимизированы.

Задумываеся на общей архитектурой построения с точки зрения баз данных. Предполагаем, что имеется как минимум два пути:
1. Оставить как сейчас - каждый сервис со своей базой данных.
2. Смотреть на базу данных как на сервис - выделить энное количество серверов на общую базу данных, разделять доступы на уровне схем.


Смоторим на плюсы/минусы этих решений.
В первом варианте - вроде так привыкли уже, программисты сами что-то там ваяют, системы крутятся, делать бэкапы несложно (размеры баз не такие большие)...
Но беспокоит разрозненнсть систем, нет понимания, как горизонтально расширять системы, когда такая необходимость возникнет (кол-во клинетов растет и необходимость не за горами).


Во втором варианте - есть мнение, что одна большая база данных, расположенная на мощных серверах - лучше, потому что один админ следит кластером, может как-то оптимизировать ее, "раскидав" по дискам, например.
Но экспертизы не достаточно, нет понимания, как это все делать и самое главное:

Вопрос 1 - лучше ли одна база данных, чем множество (совокупный размер на данный момент - 16ТБ, потенциальный рост - до 2ПБ?)?
Вопрос 2 - имеет ли значение указанные выше ограничения на виртуалку по cpu/ram?

Холивары на тему - это уже не микро-сервис можно не заводить :-)

9 ответов

4 просмотра

Это по-моему не имеет ничего общего с первоначально заданным вопросом.

Alfred- Автор вопроса
Sergey Bezrukov
Это по-моему не имеет ничего общего с первоначальн...

Да я написал, что неправильно был поставлен вопрос.

Оставить разрозненные, разумеется. Масштабирование СУБД вверх -- это боль, тлен, бабло и IBM. Если у вас исторически сложылось такое замечательное шардирование по сервисам -- то его и оставляйте. Единое управление только введите -- там, деплой виртуалки с базой одной кнопкой, выгрузка из бэкапа другой, одна группа админов на все базы, списки репликацыи в цэнтральном репозитории, вот это всё. Общие данные можно сваливать в какие

Alfred
Да я написал, что неправильно был поставлен вопрос...

Централизация БД плоха тем, что одно приложение скорее всего сможет положить вам весь инстанс БД и, как следствие, все остальные приложения лягут. Децентрализация - ну вы тут всё сами правильно написали. Для чего может понадобиться 56 ЦПУ на одном хосте - я, честно сказать, затрудняюсь представить. А вот куда можно девать 64 Гб RAM и даже больше - легко 😊

Общие данные можно сваливать в какие-то новые общие базы, могут быть в том числе и какие-то единые для нескольких сервисов базы, в которые что-то загружается только лишь из других баз (каким методом -- триггером, триггером+pull, чисто сервисом -- это третий вопрос).

предпочитаем работать так: - избегаем LVM/ceph/docker (и прочая виртуализация), т.к. это лишняя административная прослойка, ни к чему - лучше иметь хороший выделенный сервер под N баз, чем N серверов под каждую базу — сильно проще админить - в сумме, N баз на одном сервере потребуют меньше ресурсов, чем на N серверах - если какая-то база сильно отрывается по нагрузке и сервер перестаёт тянуть — отселяем на отдельное железо (как правило, к такому моменту можно позволить) - RO нагрузку стараемся максимально отселять на реплики, которые есть всегда - стараемся по максимуму использовать pgbouncer: меньше сессий к базе, возможность поставить на паузу для работ на базе или же перенаправить трафик на другой сервер

Виктор Егоров
предпочитаем работать так: - избегаем LVM/ceph/doc...

а в чем LVM виноват если не секрет? :) Управлять чисто блочными устройствами менее практично и удобно же, особенно отталкиваясь от позиции ниже по удобству администрирования :)

Roman Kozlov
а в чем LVM виноват если не секрет? :) Управлять ч...

тут 2 варианта работы: - сервер настраивают инженеры компании по своим внутренним практикам и предоставляют нам для настройки базы, тут работаем с тем, что есть. как правило, это in premise железо - сервер дают нам. в таком случае просто выделяем все диски под базу без всяких LVM, если места не хватит, то скорее всего надо будет ехать на другой сервер. как правило, это что-то вроде EC2 (и аналогов) на NVMe дисках против LVM-а ничего не имею, но в наших реалиях он не нужен.

Виктор Егоров
тут 2 варианта работы: - сервер настраивают инжене...

Ок, понял, я просто думал есть что-то в LVM сверх ужасающее о чем я не знал))

Похожие вопросы

Обсуждают сегодня

Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
База данных не поможет. Шифрование не поможет. Какие там ещё варианты? Накидывайте.
КТ315
20
А табстоп это сообщение от окна или от элемента управления?
The Bird of Hermes
18
А как лучше конвертировать физический адрес в виртуальный при маппинге? В случае ядра у меня, например, direct mapping, первые 768МБ я как есть мапплю в higher half, а остальн...
Evg Resh
26
Открыл свой двухкилобайтный экзешник в x32dbg, а тут какая-то хрень. Смущает кнопка "выполнить до пользовательского кода", а что ещё может быть в файле помимо него ?
НѣкъиⰘижєжєиꙁъвьсєсвѣтьноѣсѣтиѥсть•
11
Мне были интересны дишные хаки и я нашёл любопытный способ на форуме через __traits, что-то вроде int delegate(int) fac = (int n) => n == 0 ? 1 : n * __traits(parent, {})(n - ...
Constantin F.
1
Вопрос тем кто смотрит видео и слушает подкасты - как вы потом ищете нужную вам информацию? Вот статью я прочитал, потом могу искать нужную мне часть банальным поиском. Пропус...
Aleksandr Druzhinin
4
Всем привет, подскажите/посоветуйте пожалуйста. Фаердак компоненты, имею одно место где бизнес хочет видеть при открытии формы список всех клиентов, это порядка 30к. Мои дово...
Sasha Sch
14
Ребят, если кто в курсе - скажите, а в загранке такое же засилье маркетплейсов? или там простые сермяжные интернет-магазины живут попроще?
Андрей [aharito] Харитонов
14
Коллеги, доброе утро. Запустил на удаленном хосте приложение (ручками зашел туда по ssh и запустил, не командой удаленно). Создал потом ssh-туннель, и с моей машины приложение...
Δημήτηρ
9
Карта сайта