|
Service Broker для репликации
|
|||
---|---|---|---|
#18+
Все разобрался ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2020, 00:21 |
|
Service Broker для репликации
|
|||
---|---|---|---|
#18+
Максим Александровитч Вопрос такой.. Например на 1 сервер у меня порт 4022..Этот порт мониторится ,что 1 точка = 1 порт? Проще говоря на другую БД другой порт? нет. жто точка входа на сервер. она одна на весь экземпляр. все сообщения приходят на прослушиватель порта, и потом раскидываются по маршрутам из базы msdb вот сейчас трасса правильная но она только с инициатора, посмотрите такую же на таргете ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2020, 00:46 |
|
Service Broker для репликации
|
|||
---|---|---|---|
#18+
felix_ff Максим Александровитч Вопрос такой.. Например на 1 сервер у меня порт 4022..Этот порт мониторится ,что 1 точка = 1 порт? Проще говоря на другую БД другой порт? нет. жто точка входа на сервер. она одна на весь экземпляр. все сообщения приходят на прослушиватель порта, и потом раскидываются по маршрутам из базы msdb вот сейчас трасса правильная но она только с инициатора, посмотрите такую же на таргете Так..вопрос такой. У меня отключается очередь..почему может такое быть? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2020, 11:24 |
|
Service Broker для репликации
|
|||
---|---|---|---|
#18+
Максим Александровитч, из-за откатов транзакций по ошибке. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2020, 11:31 |
|
Service Broker для репликации
|
|||
---|---|---|---|
#18+
Максим Александровитч felix_ff пропущено... нет. жто точка входа на сервер. она одна на весь экземпляр. все сообщения приходят на прослушиватель порта, и потом раскидываются по маршрутам из базы msdb вот сейчас трасса правильная но она только с инициатора, посмотрите такую же на таргете Так..вопрос такой. У меня отключается очередь..почему может такое быть? это значит что у вас включенна активация на очереди с опцией poison_message_handling (по умолчанию включена) в случае если в процедуре активации будет производится откат транзакции то по достижении 5 откатов подряд очередь автоматически отключится. анализируйте свою процедуру активации на наличие ошибок или явных rollback transaction ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2020, 11:45 |
|
Service Broker для репликации
|
|||
---|---|---|---|
#18+
felix_ff Максим Александровитч пропущено... Так..вопрос такой. У меня отключается очередь..почему может такое быть? это значит что у вас включенна активация на очереди с опцией poison_message_handling (по умолчанию включена) в случае если в процедуре активации будет производится откат транзакции то по достижении 5 откатов подряд очередь автоматически отключится. анализируйте свою процедуру активации на наличие ошибок или явных rollback transaction Да,нашел. Еще вопрос. Полазил по сайтам не нашел инфо такого рода. Нужно ли держать диалог открытым в условиях постоянного обмена сообщениями или же закрывать и открывать каждый раз при отправке? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2020, 09:06 |
|
Service Broker для репликации
|
|||
---|---|---|---|
#18+
Максим Александровитч, зависит от вашей бизнес модели. если вас устраивает что вы в рамках одного диалога обмениваетесь сообщениями то пожалуйста. учтите только что в рамках одного диалога поддержка многозадачности активации на диалоге исключается. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2020, 12:42 |
|
Service Broker для репликации
|
|||
---|---|---|---|
#18+
felix_ff Максим Александровитч, зависит от вашей бизнес модели. если вас устраивает что вы в рамках одного диалога обмениваетесь сообщениями то пожалуйста. учтите только что в рамках одного диалога поддержка многозадачности активации на диалоге исключается. Можно подробнее про многозадачность? насколько трудоемкий процесс для БД открытия и закрытия диалога? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2020, 12:55 |
|
Service Broker для репликации
|
|||
---|---|---|---|
#18+
Максим Александровитч, Очередь - внутренее это таблица. открытие диалога почти тоже самое что добавление строки в таблицу (с оговорками конечно). Для самих диалогов используются внутрение системные таблицы sysdercv sysdesend. ими управляет ядро и вам особого дела до них нет. можно сказать что управление выполнено эффективно: в один момент может быть открыто несколько милионов диалогов и это не будет большой проблемой. Другое дело что если вы не будете своевременно диалоги закрывать они так и будут копиться в таблице, а чем большими данными оперирует сиквел как известно, тем медленней процесс. Под многозадачностью я понимал процесс активации в котором экземпляр процедуры активации может запускаться на очереди в нескольких сессиях подряд. у вас же есть возможность указать в инструкции alter queue опцию MAX_QUEUE_READRES. это собственно и есть контроль количества возможных параллельных сессий которые будут запускать процедуру активации. по умолчаю каждые 5 секунд внутренний монитор на очереди проверяет справляется ли процедура активации с разгребанием сообщений в очереди, если сообщения продолжают поступать он подключает еще один экземпляр хранимки в обработку и так далее до достижения лимита max_queue_readers или пока не наступит момент когда экземпляров процедурок будет хватать. но инструкция receive накладывает блокировку на ключ conversation_hanlde поэтому если у вас к примеру 1000000 сообщений в одном диалоге и вы считаете что сейчас "брокер разгонится и как начнет в 10 сессий вычитывать сообщения из этого диалога" то сильно ошибаетесь, экземпляр процедуры активации действительно запустится в одной сессии и начнет обрабатывать данные этого конкретного диалога, только делать он это будет один, больше экземпляров хранимок не запустится. поэтому если нужно быстро разгрести огромный поток сообщений то лучше организовать отправку в виде пачек к примеру на один диалог 10 сообщений или просто отправить миллион сообщений в миллион диалогов. но здесь четкой рекомендации нет, надо тестировать на каждой отдельно взятой системе. опять таки же все еще зависит от того как написать процедуру активации. есть еще внешняя активация, которая тоже крайне полезна, описывать ее не буду легче нагуглить Service Broker External Activation ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2020, 13:28 |
|
Service Broker для репликации
|
|||
---|---|---|---|
#18+
felix_ff Максим Александровитч, Очередь - внутренее это таблица. открытие диалога почти тоже самое что добавление строки в таблицу (с оговорками конечно). Для самих диалогов используются внутрение системные таблицы sysdercv sysdesend. ими управляет ядро и вам особого дела до них нет. можно сказать что управление выполнено эффективно: в один момент может быть открыто несколько милионов диалогов и это не будет большой проблемой. Другое дело что если вы не будете своевременно диалоги закрывать они так и будут копиться в таблице, а чем большими данными оперирует сиквел как известно, тем медленней процесс. Под многозадачностью я понимал процесс активации в котором экземпляр процедуры активации может запускаться на очереди в нескольких сессиях подряд. у вас же есть возможность указать в инструкции alter queue опцию MAX_QUEUE_READRES. это собственно и есть контроль количества возможных параллельных сессий которые будут запускать процедуру активации. по умолчаю каждые 5 секунд внутренний монитор на очереди проверяет справляется ли процедура активации с разгребанием сообщений в очереди, если сообщения продолжают поступать он подключает еще один экземпляр хранимки в обработку и так далее до достижения лимита max_queue_readers или пока не наступит момент когда экземпляров процедурок будет хватать. но инструкция receive накладывает блокировку на ключ conversation_hanlde поэтому если у вас к примеру 1000000 сообщений в одном диалоге и вы считаете что сейчас "брокер разгонится и как начнет в 10 сессий вычитывать сообщения из этого диалога" то сильно ошибаетесь, экземпляр процедуры активации действительно запустится в одной сессии и начнет обрабатывать данные этого конкретного диалога, только делать он это будет один, больше экземпляров хранимок не запустится. поэтому если нужно быстро разгрести огромный поток сообщений то лучше организовать отправку в виде пачек к примеру на один диалог 10 сообщений или просто отправить миллион сообщений в миллион диалогов. но здесь четкой рекомендации нет, надо тестировать на каждой отдельно взятой системе. опять таки же все еще зависит от того как написать процедуру активации. есть еще внешняя активация, которая тоже крайне полезна, описывать ее не буду легче нагуглить Service Broker External Activation Черт..огонь. Был бы Оскар для форумчан дал бы вам ,без сомнения. Про внешний активатор и не слышал даже.. Скажите,на свой практике вы его использовали? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2020, 14:06 |
|
Service Broker для репликации
|
|||
---|---|---|---|
#18+
Черт..огонь. Был бы Оскар для форумчан дал бы вам ,без сомнения. Про внешний активатор и не слышал даже.. Скажите,на свой практике вы его использовали? использовал. Проблема внутренней активации в том что как я уже написал внутренний таймер мониторинга срабатывает каждые 5 секунд. Это хард-код поведение которое никак не изменить. То есть даже при явном наличии большого пула сообщений внутренняя активация разгоняется до максимального количества одновременно работающих процедур активации относительно небыстро. А вот внешняя активация устроена так что помимо основной очереди, есть еще "следящая" очередь. закидивая сообщения определенного типа в следяющуу очередь можно вызвать "внешний" обработчик очереди в которую поступают сообщения. это может быть ваша собственная самописная программа или уже готовое решение от microsoft (называется ssbeas). оно как раз следит за начилием сообщений в следящей очереди постоянной инструкцией waitfor receive и как только в следящую очередь поступает сообщение вызывает логику которая начинает вычитку сообщений из основной очереди. в этом плане можно легко контролировать кол-во одновременно работающий обработчиков очереди. не хватает к примеру: запулил сразу 10 сообщений в следящую очередь и в тот же момент поднялось 10 внешних приложений которые начали вычитывать сообщения из основной очереди. написал может быть сумбурно немного но лучше качните ssbeas там есть справка в виде вордовского документа, да и на просторах гугла можно найти примеры как реализуется внешняя активация. лично я писал собственную. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2020, 14:26 |
|
Service Broker для репликации
|
|||
---|---|---|---|
#18+
felix_ff Черт..огонь. Был бы Оскар для форумчан дал бы вам ,без сомнения. Про внешний активатор и не слышал даже.. Скажите,на свой практике вы его использовали? использовал. Проблема внутренней активации в том что как я уже написал внутренний таймер мониторинга срабатывает каждые 5 секунд. Это хард-код поведение которое никак не изменить. То есть даже при явном наличии большого пула сообщений внутренняя активация разгоняется до максимального количества одновременно работающих процедур активации относительно небыстро. А вот внешняя активация устроена так что помимо основной очереди, есть еще "следящая" очередь. закидивая сообщения определенного типа в следяющуу очередь можно вызвать "внешний" обработчик очереди в которую поступают сообщения. это может быть ваша собственная самописная программа или уже готовое решение от microsoft (называется ssbeas). оно как раз следит за начилием сообщений в следящей очереди постоянной инструкцией waitfor receive и как только в следящую очередь поступает сообщение вызывает логику которая начинает вычитку сообщений из основной очереди. в этом плане можно легко контролировать кол-во одновременно работающий обработчиков очереди. не хватает к примеру: запулил сразу 10 сообщений в следящую очередь и в тот же момент поднялось 10 внешних приложений которые начали вычитывать сообщения из основной очереди. написал может быть сумбурно немного но лучше качните ssbeas там есть справка в виде вордовского документа, да и на просторах гугла можно найти примеры как реализуется внешняя активация. лично я писал собственную. Под линукс есть? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2020, 15:07 |
|
Service Broker для репликации
|
|||
---|---|---|---|
#18+
felix_ff, интересно, какой бизнес-кейс требует столь интенсивного использования брокера? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2020, 15:26 |
|
Service Broker для репликации
|
|||
---|---|---|---|
#18+
Максим Александровитч, готовое из коробки от мелкомягких только под винду, можно запустить в эмуляторе типа wine или VMware ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2020, 15:35 |
|
Service Broker для репликации
|
|||
---|---|---|---|
#18+
Владислав Колосов felix_ff, интересно, какой бизнес-кейс требует столь интенсивного использования брокера? у нас в основном он используется с целью перевода в асинхронную модель обработки документов тормозной АБС. по бизнес процессу некое начисление должно создать достаточно большой пул документов за относительно короткий промежуток времени. из-за невозможности ни горизонтального масштабирования ни использования параллелизма, модель сообщений подошла как нельзя кстати, при этом инфраструктурных изменений потребовалось минимум. а на прошлых местах работы у нас обработка карточных транзакций была построенна на компоненте, там существенную роль играла гарантия доставки, время от времени канал мог отваливаться и то что SB сам разруливает ситуацию доступности сервиса таргета сильно экономило время и нервы. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2020, 15:55 |
|
Service Broker для репликации
|
|||
---|---|---|---|
#18+
Владислав Колосов felix_ff, интересно, какой бизнес-кейс требует столь интенсивного использования брокера? Например игтеграцию между различными системами..кол-во записей в день 1 сторону около 4 млн ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2020, 18:34 |
|
Service Broker для репликации
|
|||
---|---|---|---|
#18+
felix_ff, Итак. Настраиваю в очередной раз SB. Постоянно какие-то разные траблы Настроил все везд..Отправляю на таргет IF OBJECT_ID('TelemedDBStore..Test', 'U') IS NOT NULL DROP TABLE Test ; create table Test (id int identity(0,1),Test varchar (max)) Получаю Connection handshake failed. The login 'public' does not have CONNECT permission on the endpoint. State 84. Права на логин дал grant send on service::s2Insert to public; grant send on service::s2Update to public; grant send on service::s2Delete to public; Что может быть не так? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2020, 23:19 |
|
Service Broker для репликации
|
|||
---|---|---|---|
#18+
Хм..почему-то пользователю не дались права на точки ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2020, 23:27 |
|
Service Broker для репликации
|
|||
---|---|---|---|
#18+
Максим Александровитч, у Вас текущее сообщение об ошибке это транспортный уровень, вы аутентификацию не по сертификату что ли настроили? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2020, 23:40 |
|
Service Broker для репликации
|
|||
---|---|---|---|
#18+
Добрый день. Никак не пойму в чем проблема. Настроил все,посылаю в очередь. Проверяю запросом Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Скрин ... |
|||
:
Нравится:
Не нравится:
|
|||
10.05.2020, 20:15 |
|
Service Broker для репликации
|
|||
---|---|---|---|
#18+
А до таргета не доходит. Подскажите,что может быть не так? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.05.2020, 20:16 |
|
Service Broker для репликации
|
|||
---|---|---|---|
#18+
У меня соединение не открывается почему-то Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.05.2020, 20:20 |
|
Service Broker для репликации
|
|||
---|---|---|---|
#18+
Максим Александровитч У меня соединение не открывается почему-то Код: sql 1.
Если соединения нет значит накосячили с эндпоинтами, проверьте наличие сертификатов и конечных точек. Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.05.2020, 10:35 |
|
Service Broker для репликации
|
|||
---|---|---|---|
#18+
Дело в том,что я уже настраивал неоднократно..скрины вот На 1-и м 2-м скрине данные по сертификатам из Source сервера. Все норм ... |
|||
:
Нравится:
Не нравится:
|
|||
11.05.2020, 10:56 |
|
Service Broker для репликации
|
|||
---|---|---|---|
#18+
Максим Александровитч, Ну этот скриншот действительно выглядит норм, непонятно правда почему удиалога far_ broker_ instance нулевой. Ну запустите евент- сессию на обоих серверах я тут в этом топике ее код гдето приводил и посмотрите возникающие события. В случае ошибок будут message undeliverable. С телефона не удобно просто писать ... |
|||
:
Нравится:
Не нравится:
|
|||
11.05.2020, 11:54 |
|
|
start [/forum/topic.php?fid=46&msg=39950495&tid=1686135]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
38ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
others: | 16ms |
total: | 149ms |
0 / 0 |