Size: a a a

2021 March 05

JK

Jeka Kovtun in symfony
Иван Горельцев
Всем доброе утро. Кто нибудь знает, можно как-то сделать, чтобы ParamConverter ходил на разные слейвы за данными? Я знаю, что там есть option @ParamConverter("post", options={"entity_manager" = "slave1"}), но тогда он всегда будет ходить на один и тот же.
Тебе нужно настраивать DBAL коннекты а не ParamConverter.

Есть такая штука https://github.com/doctrine/dbal/blob/3.1.x/src/Connections/PrimaryReadReplicaConnection.php
Если его использвоать как враппер соединения, то можно писать в мастер и читать с нескольких слейвов иcпользуя один EM.

Но с ним нужно быть оч. аккуратным и внимательным. Напр, если ранее уже был выбран master, то последующие запросы даже на чтение пойдут в master.

Если не подходит, можно написать свой враппер, со своей логикой выбора.

В любом случае, дока и гугл в помощь.
источник

SK

Sergej Karavajnij in symfony
Коллеги, а подскажите как вы справляетесь в такой ситуации. Есть три симфонийских сервиса (в разных контейнерах), которые работают с одной БД. Админка, рабочее ядро и отчеты. Набор доктриновских ентитей есть в каждом сервисе. При обновлении схемы приходится вручную править ентити в трех местах. Как-то неудобно :/ Какие могут быть варианты? Самбмодули гита? Приватный пакет композера?
источник

BT

Bohdan Turchyk in symfony
сомневаюсь, что кто-то работает в такой ситуации
источник

BT

Bohdan Turchyk in symfony
разные сервисы, работающие с одной БД - антипаттерн
источник

BT

Bohdan Turchyk in symfony
набор сущностей одинаковый?
источник

SK

Sergej Karavajnij in symfony
Bohdan Turchyk
набор сущностей одинаковый?
Практически да. А какой правильный паттерн в такой ситуации?
источник

BT

Bohdan Turchyk in symfony
так практически или одинаковый?
источник

BT

Bohdan Turchyk in symfony
правильный паттерн - либо каждый сервис работает со своей базой (схемой, как минимум), либо сливай их все вместе, т.к. нафиг не сдались микросервисы с общей базой
источник

SK

Sergej Karavajnij in symfony
Bohdan Turchyk
так практически или одинаковый?
в админке полный набор сущностей, в ядре используются не все, но те что используются такие же
источник

SK

Sergej Karavajnij in symfony
слить не получается, т.к. физически на разных серверах расположены
источник

BT

Bohdan Turchyk in symfony
Sergej Karavajnij
слить не получается, т.к. физически на разных серверах расположены
...но зачем?
(риторический вопрос)
источник

BT

Bohdan Turchyk in symfony
я бы делал сабмодуль скорее всего
источник

SK

Sergej Karavajnij in symfony
Bohdan Turchyk
...но зачем?
(риторический вопрос)
возможно и моя ошибка при проектировании, но заказчик сразу пришел с таким требованием, что админка, ядро и отчеты на разных серверах
источник

JK

Jeka Kovtun in symfony
Sergej Karavajnij
слить не получается, т.к. физически на разных серверах расположены
Получится )))
Ну типа сливаешь и выкладываешь на разные серверы. То что на сервере админки будет лежать код Ядра - админке не помешает. )))
Зато кодовая база будет одна.
источник

ЕР

Евгений Ромашкан... in symfony
Sergej Karavajnij
возможно и моя ошибка при проектировании, но заказчик сразу пришел с таким требованием, что админка, ядро и отчеты на разных серверах
И одну кодовую базу на разных серверах разворачивать запретил?
источник

SK

Sergej Karavajnij in symfony
Евгений Ромашкан
И одну кодовую базу на разных серверах разворачивать запретил?
нет :) т.е. более правильный вариант писать один проект, но использовать разные его части получается так?
источник

ЕР

Евгений Ромашкан... in symfony
Sergej Karavajnij
нет :) т.е. более правильный вариант писать один проект, но использовать разные его части получается так?
Ну да, это ж по факту один проект
источник

ЕР

Евгений Ромашкан... in symfony
Они не независимы друг от друга, просто нагрузка распределена по типу
источник

SK

Sergej Karavajnij in symfony
ну на ядро предвидится большая нагрузка (количество запросов), поэтому хотелось его сделать полегче и кодовую базу поменьше ... админка - фигня, отчеты грузят базу как обычно
источник

ЕР

Евгений Ромашкан... in symfony
Sergej Karavajnij
ну на ядро предвидится большая нагрузка (количество запросов), поэтому хотелось его сделать полегче и кодовую базу поменьше ... админка - фигня, отчеты грузят базу как обычно
Насколько большое?
Для чего полегче делать?
источник