|
Архитектуры высокопроизводительных биллингов
|
|||
---|---|---|---|
#18+
Hi, All! Где можно можно почитать об архитектурах построения высокопроизводительных биллингов для операторов связи? Я работаю в ISP и являюсь одним из авторов нашего биллинга. По функциональности он нас устраивает, но есть проблемы с производительностью. Чувствую, что с ростом числа клиентов наш биллинг начнёт загибаться. Сейчас это построено по следующей схеме: есть сервер, собирающий данные о сессиях клиентов (RADIUS) сервер БД (Oracle) хранит данные о сессиях клиентов, их счета и т.п. рабочие места операторов, с которых заводятся/удаляются клиенты, производится рассылка счетов и т.п. RADIUS принимает данные о сессиях клиентов из сети и преобразовывает их в удобную для дальнейшей обработки хранимой процедурой форму, затем передаёт эти данные в БД. Вся бизнес-логика реализована в виде хранимых процедур (бизнес-логика достаточно сложная, куча проверок на пускать/не пускать пользователя, кучерявые тарифные планы, роуминг и т.п.). Реализован hot-billing (т.к. большинство тарифов - prepaid): сессия клиента обсчитывается сразу по её окончании. Сам RADIUS ресурсов практически не потребляет, а вот Ораклу плохо -- загрузка процессора всегда 99-100%. А нам важна скорость обработки клиента (чтоб человеку не приходилось ждать по 10 секунд прохождения аутентификации при доступе в сеть). Оракл уже тюнинговали, железо достаточно приличное 2хP3-1,2GHz, диски SCSI. У меня складывается такое впечатление, что у нас где-то допущена архитектурная ошибка и строить это надо было несколько иначе. Например ввести буферную лёгкую базку (типа MySQL) для хранения оперативных данных ("сырые" данные для последующего обсчёта) и данных по клиенту, достаточных для его быстрой аутентификации. И отдельную базу для собственно биллинга (проведения всех необходимых расчётов по сырым данным), печати счетов и т.п. Эти базы разнести по разным машинам и обеспечить между ними синхронизацию необходимых данных. Мы даже готовы поступиться hot-billing-ом (хотя и не хотелось бы), но чтобы завершившиеся сессии обрабатывались с задержкой не более скажем 2-х минут. Желательно, чтобы у клиента не было возможности вылезти в отрицательный баланс. Где обо всём этом можно почитать? P.S. Где-то читал короткую заметку, что одна российская компания написала для оператора сотовой связи с несколькими миллионами клиентов биллинг с hot-billing-ом (в качестве БД - Cache). Удивляюсь как им это удалось реализовать при таком количестве клиентов. Не думаю, что там только дело в БД и мощном железе. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2004, 12:39 |
|
Архитектуры высокопроизводительных биллингов
|
|||
---|---|---|---|
#18+
Что-то мне кажется что автор2хP3-1,2GHz это все таки слабое железо. Взять например начинающий провинциальный МТС, дык они сразу начинают с 4-х процессорного Sun большой оперативкой только под биллинг(не считая прочих серверов для роумеров, смс, стандбаев и прочего). И при том что им на такой конфигурации не разрешают делать Hot billing, под hot отдельное железо. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2004, 13:42 |
|
Архитектуры высокопроизводительных биллингов
|
|||
---|---|---|---|
#18+
Железо действительно слабоватое. А InterSystems (поставщик Cache в России) хвастается, что установка СУБД Cache увеличила производительность по биллингу в 4 раза, и сравнение идет именно с ORACLE. Может быть, действительно имеет смысл с ними связаться? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2004, 15:44 |
|
Архитектуры высокопроизводительных биллингов
|
|||
---|---|---|---|
#18+
777, а где именно в Oracle у вас тормоза? На каких именно операциях? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2004, 16:05 |
|
Архитектуры высокопроизводительных биллингов
|
|||
---|---|---|---|
#18+
QuarkЧто-то мне кажется что автор2хP3-1,2GHz это все таки слабое железо. Взять например начинающий провинциальный МТС, дык они сразу начинают с 4-х процессорного Sun большой оперативкой только под биллинг(не считая прочих серверов для роумеров, смс, стандбаев и прочего). И при том что им на такой конфигурации не разрешают делать Hot billing, под hot отдельное железо. Garya Железо действительно слабоватое. А InterSystems (поставщик Cache в России) хвастается, что установка СУБД Cache увеличила производительность по биллингу в 4 раза, и сравнение идет именно с ORACLE. Может быть, действительно имеет смысл с ними связаться? Не, это всё экстенсивные пути решения :-) Хотелось прежде всего улучшений в идейном плане. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2004, 18:14 |
|
Архитектуры высокопроизводительных биллингов
|
|||
---|---|---|---|
#18+
А вот в Германии такая система вообще на InterBase. И, говорят, тянет. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2004, 18:18 |
|
Архитектуры высокопроизводительных биллингов
|
|||
---|---|---|---|
#18+
1777, а где именно в Oracle у вас тормоза? На каких именно операциях? Основные тормоза начинаются при обработке пакетов окончания сессий. Немного информации из предметной области: наша система обрабатывает три типа RADIUS-пакетов Access-Request - запрос пользователя на вход в сеть. Тут мы проверяем числится ли вообще у нас такой пользователь, есть ли у него деньги на счету, откуда он заходит (из нашей сети или пользуется роумингом), можно ли ему заходить в данный момент времени, предоставлять ему callback и т.д. и т.п. В конечном итоге мы принимаем решение пускать его или нет, плюс переводим его деньги во время, которое он может находиться в сети. Вес этой операции примерно 2-3 балла. Accounting-Request-Start - свидетельствует о том. что пользователь вошёл в сеть. Это довольно лёгкая оперция с весом 1. Accounting-Request-Stop - свидетельствует об окончании сессии. При этом мы получаем реальную длительность сессии, пересчитываем время в деньги, обновляем баланс пользователя и т.п. Это самая тяжёлая операция, весит 5-6 баллов. Наибольшую нагрузку создают Stop-ы. Плюс ещё операторы могут запускать в это время какие-то свои задачи: искать данные, выводить отчёты и т.п. Получаются интересные эффекты, н.п. если в сети где-то проблемы. Юзер дозванивается и видит что "интернет плохой" тут же отконекчивается и дозванивается снова и таких юзеров начинает перезванивать одномоментно очень много. На биллинг начинает валиться куча запросов, он начинает потихоньку затыкаться. Он ещё более-менее живой и как-то отзывается, но некоторые юзера не дожидаются окончания аутентификации и начинают звонить на HelpDesk - "нельзя доступиться в интернет". Тут ещё подключается и HelpDesk со своими запросами к базе - им надо проверить баланс пользователя, посмотреть историю соединений и выяснить почему этот юзер не может законектиться. Всё, после этого биллинг ложится окончательно. Плоюс ещё первые числа месяца, когда в эту же базу начинают вносить деньги и распечатывать счета и выписки по "горячим данным" за предыдущий месяц. Вобщем такие дела. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2004, 18:37 |
|
Архитектуры высокопроизводительных биллингов
|
|||
---|---|---|---|
#18+
mvА вот в Германии такая система вообще на InterBase. И, говорят, тянет. А что за оператор и сколько там юзеров? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2004, 18:37 |
|
Архитектуры высокопроизводительных биллингов
|
|||
---|---|---|---|
#18+
Судя по всему, к таблицам, в которых вся эта бодяга находится, прицеплены индексы. Возможно, даже много индексов. Они ускоряют выборку, но замедляют обновление информации. Что делать? Вариант 1. Разбивать информацию на части. В первую часть поступает оперативная информация, в ней желательно избавиться от интдексов, может быть, не от всех, но постараться минимизировать их набор. С определенной периодичностью в промежутки наименьшей загрузки информация из части 1 переливается в часть 2, в которой уже имеются все индексы, которые могут понадобиться. Выборка агрегатов совместно с оперативной информацией осуществляется по совокупности наборов. Поскольку количество информации в части 1 невелико, отрабатывать будет достаточно быстро и без индексов. Вариант 2. Модификация варианта 1. Вместо части 1 и части 2 выступает OLTP- и OLAP-системы с обратной связью. Обратная связь обеспечивает получение агрегатов в OLAP по совокупности OLTP и OLAP-хранилищ. С заданной периодичностью OLAP-кубы процессятся в периоды наименьшей нагрузки. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2004, 18:51 |
|
Архитектуры высокопроизводительных биллингов
|
|||
---|---|---|---|
#18+
777ogAccounting-Request-Stop - свидетельствует об окончании сессии. При этом мы получаем реальную длительность сессии, пересчитываем время в деньги, обновляем баланс пользователя и т.п. Это самая тяжёлая операция, весит 5-6 баллов. Вам действительно необходимо TDR в CDR переводить на лету? Может лучше это отложенным batch'ем обрабатывать? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2004, 18:52 |
|
Архитектуры высокопроизводительных биллингов
|
|||
---|---|---|---|
#18+
ЗЫ. Я не ораклоид, для ясности. Я представляю, как это можно реализовать в MS SQL, но технические подробности по ORACLE разжевать не смогу. Однако, полагаю, что в Oracle наверняка можно сделать не хуже, чем в MS SQL. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2004, 18:53 |
|
Архитектуры высокопроизводительных биллингов
|
|||
---|---|---|---|
#18+
GaryaСудя по всему, к таблицам, в которых вся эта бодяга находится, прицеплены индексы. Возможно, даже много индексов. Они ускоряют выборку, но замедляют обновление информации. Автор меня конечно поправит если я не прав, но только неадекватный проектировщик будет индексировать колонки балансов (а именно они и обновляются). ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2004, 18:55 |
|
Архитектуры высокопроизводительных биллингов
|
|||
---|---|---|---|
#18+
2 777og Вы вообще как тьюнингом занимались? На что смотрели-то? STATS Pack'ом пользовались? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2004, 18:57 |
|
Архитектуры высокопроизводительных биллингов
|
|||
---|---|---|---|
#18+
Whateva 777ogAccounting-Request-Stop - свидетельствует об окончании сессии. При этом мы получаем реальную длительность сессии, пересчитываем время в деньги, обновляем баланс пользователя и т.п. Это самая тяжёлая операция, весит 5-6 баллов. Вам действительно необходимо TDR в CDR переводить на лету? Может лучше это отложенным batch'ем обрабатывать? Нашёл в гугле, что CDR - это Call Detail Record, а TDR - Transaction Data Record. Если Вам не трудно, Вы могли бы объяснить, что обозначают эти термины? Если я понял Ваш вопрос правильно, то имеется в виду нужно ли нам в реальном времени переводить время в деньги по окончании сессии? Вобщем-то говоря это очень желательно, т.к. большинство наших услуг являются предоплачеными и надо не дать пользователю возможности влезть в отрицательный баланс. Скажем если обсчёт завершившихся сессий будет отложен на 5 минут после окончания сессии, то мы либо должны запретить пользователю заходить в течение этих 5 минут (что не устроит пользователей, т.к. есть такие, которые "звонят в интернет" только чтобы проверить почту каждые 2 минуты с длительностью сессий по 40 секунд), либо его пустить и тогда он будет висеть в сети столько, сколько ему захочется (отключить мы его не можем, вернее можем, но не все наши сервера доступа позволяют это делать). Тут ещё есть такой момент - максимально быстро нам нужно обработать первый пакет - Access-Request, это создаст комфорт пользователю - он "быстро войдёт в сеть" и сервер доступа не будет задалбывать биллинг повторными пакетами Access-Request (если наш биллинг с ответом не укладывается в определённое время, то сервер доступа посылает повторный запрос и тем самым укладывает биллинг ещё больше). ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2004, 19:18 |
|
Архитектуры высокопроизводительных биллингов
|
|||
---|---|---|---|
#18+
Whateva GaryaСудя по всему, к таблицам, в которых вся эта бодяга находится, прицеплены индексы. Возможно, даже много индексов. Они ускоряют выборку, но замедляют обновление информации. Автор меня конечно поправит если я не прав, но только неадекватный проектировщик будет индексировать колонки балансов (а именно они и обновляются). Балансы у нас конечно же не проиндексированы :-) Но у нас есть одна огромная таблица SessionLog, в которой хранятся все сессии всех пользователей за последние полтора месяца. С этой таблицей производится довольно много операций и её вклад в тормоза если не наибольший, то ощутимый. Garya подал очень хорошую идею с разделением данных на оперативные и статические. Надо только подумать как впишется разрезание SessuionLog-a в нашу бизнес-логику, нам надо просматривать SessuinLog полностью например для показа статистики пользователю, возможно ещё в нескольких местах. Вобщем надо будет подумать на эту тему. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2004, 19:32 |
|
Архитектуры высокопроизводительных биллингов
|
|||
---|---|---|---|
#18+
Whateva2 777og Вы вообще как тьюнингом занимались? На что смотрели-то? STATS Pack'ом пользовались? Не могу сказать, т.к. я не ораклист. Тюнингом занималась наша DBA, с помощью чего она собирала статистику я узнаю завтра. Надо будет самому почитать что на эту тему советует оракловая документация. Если Вам не трудно, то посоветуйте чем лучше пользоваться и на что обращать особое внимание. Я вот сейчас проверяю хорошо ли стоится нашему ораклу. Активного обмена со свопом нет, да и своп не сильно занят, значит памяти ему хватает. Смотрю iostat-ом распеределение дисковой нагрузки по дискам и разделам. Есть некоторый дисбаланс между дисками: за период в 10сек по одному диску 20 wsec/s, по другому 8 wsec/s при скорости записи 10 vs 3 kb/s. Это можно поправить, но IMHO это не очень большая нагрузка на диски (там SCSI Ultra 160, к тому же на удивление мало чтений, неужели всё в памяти крутится?), так что если я сбалансирую диски, то всё равно сильно ему не полегчает. При этом загрузка процессоров довольно высокая 70-100% ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2004, 19:53 |
|
Архитектуры высокопроизводительных биллингов
|
|||
---|---|---|---|
#18+
777og Whateva 777ogAccounting-Request-Stop - свидетельствует об окончании сессии. При этом мы получаем реальную длительность сессии, пересчитываем время в деньги, обновляем баланс пользователя и т.п. Это самая тяжёлая операция, весит 5-6 баллов. Вам действительно необходимо TDR в CDR переводить на лету? Может лучше это отложенным batch'ем обрабатывать? Нашёл в гугле, что CDR - это Call Detail Record, а TDR - Transaction Data Record. Если Вам не трудно, Вы могли бы объяснить, что обозначают эти термины? Если я понял Ваш вопрос правильно, то имеется в виду нужно ли нам в реальном времени переводить время в деньги по окончании сессии? Вобщем-то говоря это очень желательно, т.к. большинство наших услуг являются предоплачеными и надо не дать пользователю возможности влезть в отрицательный баланс. Скажем если обсчёт завершившихся сессий будет отложен на 5 минут после окончания сессии, то мы либо должны запретить пользователю заходить в течение этих 5 минут (что не устроит пользователей, т.к. есть такие, которые "звонят в интернет" только чтобы проверить почту каждые 2 минуты с длительностью сессий по 40 секунд), либо его пустить и тогда он будет висеть в сети столько, сколько ему захочется (отключить мы его не можем, вернее можем, но не все наши сервера доступа позволяют это делать). Тут ещё есть такой момент - максимально быстро нам нужно обработать первый пакет - Access-Request, это создаст комфорт пользователю - он "быстро войдёт в сеть" и сервер доступа не будет задалбывать биллинг повторными пакетами Access-Request (если наш биллинг с ответом не укладывается в определённое время, то сервер доступа посылает повторный запрос и тем самым укладывает биллинг ещё больше). CDR - грубо говоря результат сессии/звонка (т.е. какой клиент, куда, когда, сколько и т.п.). Одна запись на сессию/звонок. По ним балансы обновляют. TDR - это как проходила сессия/звонок (то что Вы получаете с Radius'а насколько я понимаю). Как минимум две записи (начал, закончил) на сессию/звонок. По ним формируются CDR. Т.е. я предложил рассмотреть построение в очередь запросов на формирование CDR (и соответственно обновление балансов) из TDR (и при возможности разнести их). Риск пустить клиента в минус конечно при этом есть, но Вы же как-то и сейчас проверяете возможные "проблемные" сессии (типа баланс на 5 минут а он висит уже пол часа), не так ли? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2004, 19:59 |
|
Архитектуры высокопроизводительных биллингов
|
|||
---|---|---|---|
#18+
Whateva CDR - грубо говоря результат сессии/звонка (т.е. какой клиент, куда, когда, сколько и т.п.). Одна запись на сессию/звонок. По ним балансы обновляют. TDR - это как проходила сессия/звонок (то что Вы получаете с Radius'а насколько я понимаю). Как минимум две записи (начал, закончил) на сессию/звонок. По ним формируются CDR. Понял, спасибо. Whateva Т.е. я предложил рассмотреть построение в очередь запросов на формирование CDR (и соответственно обновление балансов) из TDR (и при возможности разнести их). Риск пустить клиента в минус конечно при этом есть, но Вы же как-то и сейчас проверяете возможные "проблемные" сессии (типа баланс на 5 минут а он висит уже пол часа), не так ли? Нет таких проверок не проводится, т.к. как я уже писал выше не всё оборудование позволяет принудительно отключать сессию. Эта проблема решается иначе: результатом успешной аутентификации клиента (т.е. мы его пускаем в сеть) является авторизационный пакет, который мы отправляем серверу доступа. В этот пакет мы заносим атрибут Session-Timeout с допустимым временем сессии. Это время мы рассчитываем исходя из имеющегося остатка на счету клиента. По истечении этого времени сервер доступа сам отключает клиента. Поэтому на момент запроса клиентом доступа в сеть нам важно знать его реальный остаток на счету. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2004, 20:24 |
|
Архитектуры высокопроизводительных биллингов
|
|||
---|---|---|---|
#18+
авторА InterSystems (поставщик Cache в России) хвастается, что установка СУБД Cache увеличила производительность по биллингу в 4 раза Был както у них на презентации, слышал подобное). Но как это реализовано - все в секрете). Единственно что удалось внятного получить: для такого ускорения есть возможности писать данные напрямую в память обходя всякие "внутренние проверки" на соотвествие типов итп. То есть вся отвественность ложится на программиста. Представьте что будет если вы запишите в область памяти где int переменную char. В лучшем случае ваш биллинг повиснет выкинув всех пользователей( авторGarya подал очень хорошую идею с разделением данных на оперативные и статические. Надо только подумать как впишется разрезание SessuionLog-a в нашу бизнес-логику, нам надо просматривать SessuinLog полностью например для показа статистики пользователю, возможно ещё в нескольких местах. Вобщем надо будет подумать на эту тему или для начала можно просто добавить отдельных табличек с агрегатами за прошлые периоды. Типа самодельный ROLAP. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2004, 06:11 |
|
Архитектуры высокопроизводительных биллингов
|
|||
---|---|---|---|
#18+
Whateva Вам действительно необходимо TDR в CDR переводить на лету? Может лучше это отложенным batch'ем обрабатывать? Не путайте человека, это все таки более телефонные термины, а не интернетовские. Вот если у ребят есть VoIP, но судя по их словам - нет.. Теперь по сути.. Опираясь на свой опыть могу с увереностью сказать, что задачка очень и очень непростая. В свое врем я был свидетелем и - отчасти - участником многочисленых попыток ускорить это дело, но увы.. Максимальная скорость авторизации, с учетом закрывающихся сессий - 8-10 клиентов в секунду.. Конечно, существенная модернизация железа облегчит вашу участь, но это не панацея, и когда нибудь аппраратные ресурсы тоже кончатся.. С точки зрения архитектуры в свое время возобладала такая точко зрения: модуль авторизации должен жить отдельно, и иметь собственные сведенья об остатках на счетах, достаточные для расчета допустимого времени соединения с высокой точностью. Сам же билллинг должен жить отдельно, там должна проводится подробная тарификация, выписка счетов, поплнеие балансов и прочее.. Такое решение в свое время было признано оптимальным на основе многолетнего опыта разработки билинга и многочисленных экпериментов. К сожалению, до реализации дело не дошло, поэтому я не могу сказать, насколько это решение правильное, но другого пути просто нет, по крайцней мере судя по той информации, которую Вы сообщили. В принципе, анализ структуры базы может показать и дргие пути ускорения работы, но это дело непростое.. Кроме того, если вы готовы оправдать некоторые неудобства для юзеров, то тут тоже можно отыскать пути к экономии ресурсов.. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2004, 14:45 |
|
Архитектуры высокопроизводительных биллингов
|
|||
---|---|---|---|
#18+
Код: plaintext
- Deutche Telecom. На одном серваке примерно по 200 одновременно работающих (конкурирующих) юзеров. Естественно, транзакции очень короткие. ----------------------- Эту информацию стоит рассматривать как рекламу (шутка): ABACS - там описана архитектура комплекса. И, кажется, демка есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2004, 16:03 |
|
Архитектуры высокопроизводительных биллингов
|
|||
---|---|---|---|
#18+
mv Код: plaintext
- Deutche Telecom. На одном серваке примерно по 200 одновременно работающих (конкурирующих) юзеров. Естественно, транзакции очень короткие. Биллинг Deutsche Telecom-а работает на Интербейзе? Вот это да! А ссылочку можно? А то я потыкался в гугле и по словам 'Deutsche Telecom Interbase billing' ничего подробного не нашёл. mv ABACS - там описана архитектура комплекса. И, кажется, демка есть. Спасибо, посмотрю. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2004, 16:43 |
|
Архитектуры высокопроизводительных биллингов
|
|||
---|---|---|---|
#18+
Я читал об этом на сайте у FIB - плюсовцев, кажется. Они там все завернуты на InterBase (и я тоже :-), и, кажется, в прошлом году ездили в Германии - реаламировали свои компоненты доступа. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2004, 16:59 |
|
Архитектуры высокопроизводительных биллингов
|
|||
---|---|---|---|
#18+
Maksim Chak С точки зрения архитектуры в свое время возобладала такая точко зрения: модуль авторизации должен жить отдельно, и иметь собственные сведенья об остатках на счетах, достаточные для расчета допустимого времени соединения с высокой точностью. Сам же билллинг должен жить отдельно, там должна проводится подробная тарификация, выписка счетов, поплнеие балансов и прочее.. Вобщем мы пока решили разделить SessionLog на две части - оперативную и "статическую". Оперативный SL будет неиндексируемым (т.к. в него будут частые инсерты и он будет небольшим), а статический проиндексируем (у него большой объём и из него производятся частые выборки, обновляться он будет редко). Может ещё выиграем что-нибудь за счёт тюнинга. Ещё мне подсказали, что 9-ый и 10-ый ораклы умеют перекомпилировать пакеты в нативный код, это ещё может дать какое-то ускорение. Если высвободившихся ресурсов будет достаточно, то организуем репликацию на другую машину всех таблиц кроме "горячих" (с оперативными данными, таких должно быть немного. Данные из "горячиех" таблиц будут ночью (во время минимальной нагрузки) переноситься в статические таблицы. Репликация должна будет позволить перенести печать отчётов, счетов, выписок и т.п. на другую машину и тем самым ещё больше разгрузить основной (авторизующий) сервер. Вот такие предварительные соображения. Ещё накачал статей с http://citeseer.ist.psu.edu может ещё из них удастся почерпнуть каких-нибудь идей. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2004, 17:30 |
|
Архитектуры высокопроизводительных биллингов
|
|||
---|---|---|---|
#18+
авторGarya подал очень хорошую идею с разделением данных на оперативные и статические. Надо только подумать как впишется разрезание SessuionLog-a в нашу бизнес-логику, нам надо просматривать SessuinLog полностью например для показа статистики пользователю, возможно ещё в нескольких местах. Вобщем надо будет подумать на эту тему. статическую часть разбить на партиции, а вообще это слишком обстрактный разговор. если вы не видете страшных архитектурных ляпов значит тут все таки бОльшая проблема с тюнигом/железом. если вы не тянете RAC но стэндбай же у вас есть ! (если нет то не понятно как вы от сбоев железа защищаетесь) раз есть стендбай - то все отчеты туда. дальше если проблема с хелпдеском - профайлер, не давать хелпдеску грузить проц более чем на 10-20%. а ну и главное - вы должны/обязаны выяснить какие запорсы/процедуры грузят сервер и только после этого решать, а то ведь наверника у вас в 2-3 запросах просто забыли биндингс а вы архитектуру менять ... ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2004, 18:55 |
|
|
start [/forum/topic.php?fid=29&msg=32627944&tid=1528660]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
187ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 308ms |
0 / 0 |