powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / ERP и учетные системы [игнор отключен] [закрыт для гостей] / Архитектуры высокопроизводительных биллингов
51 сообщений из 51, показаны все 3 страниц
Архитектуры высокопроизводительных биллингов
    #32626933
777og
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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). Удивляюсь как им это удалось реализовать при таком количестве клиентов. Не думаю, что там только дело в БД и мощном железе.
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32627119
Фотография Quark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то мне кажется что
автор2хP3-1,2GHz
это все таки слабое железо.
Взять например начинающий провинциальный МТС, дык они сразу начинают с 4-х процессорного Sun большой оперативкой только под биллинг(не считая прочих серверов для роумеров, смс, стандбаев и прочего).
И при том что им на такой конфигурации не разрешают делать Hot billing,
под hot отдельное железо.
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32627513
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Железо действительно слабоватое. А InterSystems (поставщик Cache в России) хвастается, что установка СУБД Cache увеличила производительность по биллингу в 4 раза, и сравнение идет именно с ORACLE. Может быть, действительно имеет смысл с ними связаться?
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32627579
1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
777, а где именно в Oracle у вас тормоза? На каких именно операциях?
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32627937
777og
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
QuarkЧто-то мне кажется что
автор2хP3-1,2GHz
это все таки слабое железо.
Взять например начинающий провинциальный МТС, дык они сразу начинают с 4-х процессорного Sun большой оперативкой только под биллинг(не считая прочих серверов для роумеров, смс, стандбаев и прочего).
И при том что им на такой конфигурации не разрешают делать Hot billing,
под hot отдельное железо.

Garya
Железо действительно слабоватое. А InterSystems (поставщик Cache в России) хвастается, что установка СУБД Cache увеличила производительность по биллингу в 4 раза, и сравнение идет именно с ORACLE. Может быть, действительно имеет смысл с ними связаться?



Не, это всё экстенсивные пути решения :-) Хотелось прежде всего улучшений в идейном плане.
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32627944
Фотография mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот в Германии такая система вообще на InterBase. И, говорят, тянет.
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32628001
777og
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1777, а где именно в Oracle у вас тормоза? На каких именно операциях?

Основные тормоза начинаются при обработке пакетов окончания сессий. Немного информации из предметной области: наша система обрабатывает три типа RADIUS-пакетов
Access-Request - запрос пользователя на вход в сеть. Тут мы проверяем числится ли вообще у нас такой пользователь, есть ли у него деньги на счету, откуда он заходит (из нашей сети или пользуется роумингом), можно ли ему заходить в данный момент времени, предоставлять ему callback и т.д. и т.п. В конечном итоге мы принимаем решение пускать его или нет, плюс переводим его деньги во время, которое он может находиться в сети. Вес этой операции примерно 2-3 балла.

Accounting-Request-Start - свидетельствует о том. что пользователь вошёл в сеть. Это довольно лёгкая оперция с весом 1.

Accounting-Request-Stop - свидетельствует об окончании сессии. При этом мы получаем реальную длительность сессии, пересчитываем время в деньги, обновляем баланс пользователя и т.п. Это самая тяжёлая операция, весит 5-6 баллов.

Наибольшую нагрузку создают Stop-ы. Плюс ещё операторы могут запускать в это время какие-то свои задачи: искать данные, выводить отчёты и т.п.

Получаются интересные эффекты, н.п. если в сети где-то проблемы. Юзер дозванивается и видит что "интернет плохой" тут же отконекчивается и дозванивается снова и таких юзеров начинает перезванивать одномоментно очень много. На биллинг начинает валиться куча запросов, он начинает потихоньку затыкаться. Он ещё более-менее живой и как-то отзывается, но некоторые юзера не дожидаются окончания аутентификации и начинают звонить на HelpDesk - "нельзя доступиться в интернет". Тут ещё подключается и HelpDesk со своими запросами к базе - им надо проверить баланс пользователя, посмотреть историю соединений и выяснить почему этот юзер не может законектиться. Всё, после этого биллинг ложится окончательно.

Плоюс ещё первые числа месяца, когда в эту же базу начинают вносить деньги и распечатывать счета и выписки по "горячим данным" за предыдущий месяц.

Вобщем такие дела.
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32628003
777og
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mvА вот в Германии такая система вообще на InterBase. И, говорят, тянет.

А что за оператор и сколько там юзеров?
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32628032
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Судя по всему, к таблицам, в которых вся эта бодяга находится, прицеплены индексы. Возможно, даже много индексов. Они ускоряют выборку, но замедляют обновление информации.

Что делать?

Вариант 1.

Разбивать информацию на части. В первую часть поступает оперативная информация, в ней желательно избавиться от интдексов, может быть, не от всех, но постараться минимизировать их набор. С определенной периодичностью в промежутки наименьшей загрузки информация из части 1 переливается в часть 2, в которой уже имеются все индексы, которые могут понадобиться. Выборка агрегатов совместно с оперативной информацией осуществляется по совокупности наборов. Поскольку количество информации в части 1 невелико, отрабатывать будет достаточно быстро и без индексов.

Вариант 2.
Модификация варианта 1. Вместо части 1 и части 2 выступает OLTP- и OLAP-системы с обратной связью. Обратная связь обеспечивает получение агрегатов в OLAP по совокупности OLTP и OLAP-хранилищ. С заданной периодичностью OLAP-кубы процессятся в периоды наименьшей нагрузки.
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32628034
Whateva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
777ogAccounting-Request-Stop - свидетельствует об окончании сессии. При этом мы получаем реальную длительность сессии, пересчитываем время в деньги, обновляем баланс пользователя и т.п. Это самая тяжёлая операция, весит 5-6 баллов.


Вам действительно необходимо TDR в CDR переводить на лету? Может лучше это отложенным batch'ем обрабатывать?
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32628037
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗЫ. Я не ораклоид, для ясности. Я представляю, как это можно реализовать в MS SQL, но технические подробности по ORACLE разжевать не смогу. Однако, полагаю, что в Oracle наверняка можно сделать не хуже, чем в MS SQL.
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32628039
Whateva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GaryaСудя по всему, к таблицам, в которых вся эта бодяга находится, прицеплены индексы. Возможно, даже много индексов. Они ускоряют выборку, но замедляют обновление информации.


Автор меня конечно поправит если я не прав, но только неадекватный проектировщик будет индексировать колонки балансов (а именно они и обновляются).
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32628041
Whateva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 777og

Вы вообще как тьюнингом занимались? На что смотрели-то? STATS Pack'ом пользовались?
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32628075
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 (если наш биллинг с ответом не укладывается в определённое время, то сервер доступа посылает повторный запрос и тем самым укладывает биллинг ещё больше).
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32628100
777og
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Whateva GaryaСудя по всему, к таблицам, в которых вся эта бодяга находится, прицеплены индексы. Возможно, даже много индексов. Они ускоряют выборку, но замедляют обновление информации.


Автор меня конечно поправит если я не прав, но только неадекватный проектировщик будет индексировать колонки балансов (а именно они и обновляются).


Балансы у нас конечно же не проиндексированы :-) Но у нас есть одна огромная таблица SessionLog, в которой хранятся все сессии всех пользователей за последние полтора месяца. С этой таблицей производится довольно много операций и её вклад в тормоза если не наибольший, то ощутимый.

Garya подал очень хорошую идею с разделением данных на оперативные и статические. Надо только подумать как впишется разрезание SessuionLog-a в нашу бизнес-логику, нам надо просматривать SessuinLog полностью например для показа статистики пользователю, возможно ещё в нескольких местах. Вобщем надо будет подумать на эту тему.
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32628125
777og
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Whateva2 777og

Вы вообще как тьюнингом занимались? На что смотрели-то? STATS Pack'ом пользовались?

Не могу сказать, т.к. я не ораклист. Тюнингом занималась наша DBA, с помощью чего она собирала статистику я узнаю завтра. Надо будет самому почитать что на эту тему советует оракловая документация. Если Вам не трудно, то посоветуйте чем лучше пользоваться и на что обращать особое внимание.


Я вот сейчас проверяю хорошо ли стоится нашему ораклу. Активного обмена со свопом нет, да и своп не сильно занят, значит памяти ему хватает. Смотрю iostat-ом распеределение дисковой нагрузки по дискам и разделам. Есть некоторый дисбаланс между дисками: за период в 10сек по одному диску 20 wsec/s, по другому 8 wsec/s при скорости записи 10 vs 3 kb/s. Это можно поправить, но IMHO это не очень большая нагрузка на диски (там SCSI Ultra 160, к тому же на удивление мало чтений, неужели всё в памяти крутится?), так что если я сбалансирую диски, то всё равно сильно ему не полегчает. При этом загрузка процессоров довольно высокая 70-100%
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32628131
Whateva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 минут а он висит уже пол часа), не так ли?
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32628151
777og
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Whateva
CDR - грубо говоря результат сессии/звонка (т.е. какой клиент, куда, когда, сколько и т.п.). Одна запись на сессию/звонок. По ним балансы обновляют.
TDR - это как проходила сессия/звонок (то что Вы получаете с Radius'а насколько я понимаю). Как минимум две записи (начал, закончил) на сессию/звонок. По ним формируются CDR.


Понял, спасибо.

Whateva
Т.е. я предложил рассмотреть построение в очередь запросов на формирование CDR (и соответственно обновление балансов) из TDR (и при возможности разнести их). Риск пустить клиента в минус конечно при этом есть, но Вы же как-то и сейчас проверяете возможные "проблемные" сессии (типа баланс на 5 минут а он висит уже пол часа), не так ли?

Нет таких проверок не проводится, т.к. как я уже писал выше не всё оборудование позволяет принудительно отключать сессию. Эта проблема решается иначе: результатом успешной аутентификации клиента (т.е. мы его пускаем в сеть) является авторизационный пакет, который мы отправляем серверу доступа. В этот пакет мы заносим атрибут Session-Timeout с допустимым временем сессии. Это время мы рассчитываем исходя из имеющегося остатка на счету клиента. По истечении этого времени сервер доступа сам отключает клиента. Поэтому на момент запроса клиентом доступа в сеть нам важно знать его реальный остаток на счету.
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32628330
Фотография Quark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторА InterSystems (поставщик Cache в России) хвастается, что установка СУБД Cache увеличила производительность по биллингу в 4 раза
Был както у них на презентации, слышал подобное). Но как это реализовано - все в секрете).
Единственно что удалось внятного получить: для такого ускорения есть возможности писать данные напрямую в память обходя всякие "внутренние проверки" на соотвествие типов итп.
То есть вся отвественность ложится на программиста. Представьте что будет если вы запишите в область памяти где int переменную char. В лучшем случае ваш биллинг повиснет выкинув всех пользователей(

авторGarya подал очень хорошую идею с разделением данных на оперативные и статические. Надо только подумать как впишется разрезание SessuionLog-a в нашу бизнес-логику, нам надо просматривать SessuinLog полностью например для показа статистики пользователю, возможно ещё в нескольких местах. Вобщем надо будет подумать на эту тему
или для начала можно просто добавить отдельных табличек с агрегатами за прошлые периоды. Типа самодельный ROLAP.
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32629568
Maksim Chak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Whateva Вам действительно необходимо TDR в CDR переводить на лету? Может лучше это отложенным batch'ем обрабатывать?

Не путайте человека, это все таки более телефонные термины, а не интернетовские. Вот если у ребят есть VoIP, но судя по их словам - нет..

Теперь по сути..
Опираясь на свой опыть могу с увереностью сказать, что задачка очень и очень непростая.
В свое врем я был свидетелем и - отчасти - участником многочисленых попыток ускорить это дело, но увы.. Максимальная скорость авторизации, с учетом закрывающихся сессий - 8-10 клиентов в секунду..
Конечно, существенная модернизация железа облегчит вашу участь, но это не панацея, и когда нибудь аппраратные ресурсы тоже кончатся..

С точки зрения архитектуры в свое время возобладала такая точко зрения: модуль авторизации должен жить отдельно, и иметь собственные сведенья об остатках на счетах, достаточные для расчета допустимого времени соединения с высокой точностью. Сам же билллинг должен жить отдельно, там должна проводится подробная тарификация, выписка счетов, поплнеие балансов и прочее..

Такое решение в свое время было признано оптимальным на основе многолетнего опыта разработки билинга и многочисленных экпериментов.
К сожалению, до реализации дело не дошло, поэтому я не могу сказать, насколько это решение правильное, но другого пути просто нет, по крайцней мере судя по той информации, которую Вы сообщили.

В принципе, анализ структуры базы может показать и дргие пути ускорения работы, но это дело непростое..
Кроме того, если вы готовы оправдать некоторые неудобства для юзеров, то тут тоже можно отыскать пути к экономии ресурсов..
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32629793
Фотография mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
А что за оператор и сколько там юзеров?

- Deutche Telecom. На одном серваке примерно по 200 одновременно работающих (конкурирующих) юзеров. Естественно, транзакции очень короткие.


-----------------------

Эту информацию стоит рассматривать как рекламу (шутка):

ABACS - там описана архитектура комплекса. И, кажется, демка есть.
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32629900
777og
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mv
Код: plaintext
А что за оператор и сколько там юзеров?

- Deutche Telecom. На одном серваке примерно по 200 одновременно работающих (конкурирующих) юзеров. Естественно, транзакции очень короткие.


Биллинг Deutsche Telecom-а работает на Интербейзе? Вот это да! А ссылочку можно? А то я потыкался в гугле и по словам 'Deutsche Telecom Interbase billing' ничего подробного не нашёл.

mv
ABACS - там описана архитектура комплекса. И, кажется, демка есть.


Спасибо, посмотрю.
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32629929
Фотография mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я читал об этом на сайте у FIB - плюсовцев, кажется. Они там все завернуты на InterBase (и я тоже :-), и, кажется, в прошлом году ездили в Германии - реаламировали свои компоненты доступа.
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32630008
777og
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maksim Chak
С точки зрения архитектуры в свое время возобладала такая точко зрения: модуль авторизации должен жить отдельно, и иметь собственные сведенья об остатках на счетах, достаточные для расчета допустимого времени соединения с высокой точностью. Сам же билллинг должен жить отдельно, там должна проводится подробная тарификация, выписка счетов, поплнеие балансов и прочее..



Вобщем мы пока решили разделить SessionLog на две части - оперативную и "статическую". Оперативный SL будет неиндексируемым (т.к. в него будут частые инсерты и он будет небольшим), а статический проиндексируем (у него большой объём и из него производятся частые выборки, обновляться он будет редко). Может ещё выиграем что-нибудь за счёт тюнинга. Ещё мне подсказали, что 9-ый и 10-ый ораклы умеют перекомпилировать пакеты в нативный код, это ещё может дать какое-то ускорение.

Если высвободившихся ресурсов будет достаточно, то организуем репликацию на другую машину всех таблиц кроме "горячих" (с оперативными данными, таких должно быть немного. Данные из "горячиех" таблиц будут ночью (во время минимальной нагрузки) переноситься в статические таблицы. Репликация должна будет позволить перенести печать отчётов, счетов, выписок и т.п. на другую машину и тем самым ещё больше разгрузить основной (авторизующий) сервер.

Вот такие предварительные соображения. Ещё накачал статей с http://citeseer.ist.psu.edu может ещё из них удастся почерпнуть каких-нибудь идей.
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32630133
Yo!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Yo!
Гость
авторGarya подал очень хорошую идею с разделением данных на оперативные и статические. Надо только подумать как впишется разрезание SessuionLog-a в нашу бизнес-логику, нам надо просматривать SessuinLog полностью например для показа статистики пользователю, возможно ещё в нескольких местах. Вобщем надо будет подумать на эту тему.

статическую часть разбить на партиции, а вообще это слишком обстрактный разговор. если вы не видете страшных архитектурных ляпов значит тут все таки бОльшая проблема с тюнигом/железом. если вы не тянете RAC но стэндбай же у вас есть ! (если нет то не понятно как вы от сбоев железа защищаетесь) раз есть стендбай - то все отчеты туда.
дальше если проблема с хелпдеском - профайлер, не давать хелпдеску грузить проц более чем на 10-20%.

а ну и главное - вы должны/обязаны выяснить какие запорсы/процедуры грузят сервер и только после этого решать, а то ведь наверника у вас в 2-3 запросах просто забыли биндингс а вы архитектуру менять ...
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32630598
Aion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 777og:
Привет!
777og
Где можно можно почитать об архитектурах построения высокопроизводительных биллингов для операторов связи?

Думаю врядли найдети что-то стоющее.
Либо это будет системы >1M-10M$, либо "что-то еще".
Ладно, это так.
Поискать можно, скорее нужно, чтоб посмотреть "как у других".
Смотрите case studies, кто-что использовал и что им это дало и за сколько :-)

Тепер по порядку.
1) Тут уже было сказано, что лучьше логи хранить на отдельном серваке.
Абсолютно согласен. Это нетолько разгрузит основной сервер базы данных, но позволит Вам в дальнейшем организовать archive-сервера...
2) По самой бизнес-логике:
777og
Вся бизнес-логика реализована в виде хранимых процедур

Для того чтоб проверить
777og
запрос пользователя на вход в сеть. Тут мы проверяем числится ли вообще у нас такой пользователь, есть ли у него деньги на счету, откуда он заходит (из нашей сети или пользуется роумингом), можно ли ему заходить в данный момент времени, предоставлять ему callback и т.д. и т.п. В конечном итоге мы принимаем решение пускать его или нет,

Нет необходимости вызывать sp. Здесь должено быть просто, на столько, на сколько это возможно. Типа 1 SELECT => знаем: можно или нет.
Так как правило, много "левых" запросов, а их нужно очень быстро отбивать.

777og
, плюс переводим его деньги во время, которое он может находиться в сети.
Это дорогостоющая операция.
Кроме как memory cache на accounting server'e (radius -> acc.server <- db )
Вам не даст ощутимый прирост производительности. Конечно, тут придеться позаботиться о синхронизации memory <- db...
Можно еще смотреть в сторону полной денормализации тарифов, чтоб легче по ним было искать и считать, но это частный случай и не факт, что он даст выигрыш.

777og
Accounting-Request-Stop - свидетельствует об окончании сессии. При этом мы получаем реальную длительность сессии, пересчитываем время в деньги, обновляем баланс пользователя и т.п. Это самая тяжёлая операция, весит 5-6 баллов.

Аналогия c деньги -> время.
Плюс, можно еще по думать о messaging server'e (a-ля WebSphere MQ или другое). Это может стать гарантом, что у Вас будет определенный performance на подсчет (типа 50 request/second), а также невызовет overflow всей системы.
Просто radius "отдаст" информацию в очередь messasing server'у, а уже другая прога по своей возможности будет "брать и считать" и разблокирует клиента.

Вообщем, "место для разгона" есть, только конечно многое зависит от людских и технических ресурсов, времени и т.д.

Но начинать, imho, надо с простых вещей.
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32632079
c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SEMA { http://www.boardwatch.com/document.asp?doc_id=37521 }

Rating ~ 6 [ max 10]

Use ~2500 concurrent transactions : 4 500 000 clients 3D rateplan tree


Basic:: Oracle 8i
Antenne :: Oracle 9i & Sybase



Ещё мне подсказали, что 9-ый и 10-ый ораклы умеют перекомпилировать пакеты в нативный код, это ещё может дать какое-то ускорение.
WELL!!

Можно еще смотреть в сторону полной денормализации тарифов, чтоб легче по ним было искать и считать, но это частный случай и не факт , что он даст выигрыш
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32632767
Wireless
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 777og:
1. Какая реальная нагрузка на ваш сервер - сколько запросов на авторизацию/минуту,
сколько accounting-запросов/минуту ?
2. Можете дать краткие характеристики самых тяжелых таблиц, к которым обращаются ваши SP в момент авторизации? Информация вида - размер на диске, число записей, число индексов, наличие триггеров и пр.
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32633283
777og
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Wireless2 777og:
1. Какая реальная нагрузка на ваш сервер - сколько запросов на авторизацию/минуту,
сколько accounting-запросов/минуту ?
2. Можете дать краткие характеристики самых тяжелых таблиц, к которым обращаются ваши SP в момент авторизации? Информация вида - размер на диске, число записей, число индексов, наличие триггеров и пр.


1. Померял за 30минут: получается около 20авторизаций/минуту и 34 акаунтингов/минуту (без разбивки на старт/стоп). Но это не показательная статистика, т.к. народ сейчас действительно вяло работает - отпуска, каникулы и т.п. Сервер сейчас загружен где-то только наполовину.

2. Из больших таблиц в аторизации учавствуют SessionLog (~600тыс. записей) - в основном выборка/обновление/вставка, user_totals (~160тыс.) - в основном выборка/обновление, таблица юзеров (~30тыс.) - в основном выборка. Деталей по поводу размера на диске, триггеров и индексов, честно говоря, не знаю. Выяснение деталей у нашего DBA имеет свои м-м-м, скажем так, свои сложности.

Даже глядя на эти цифры (пускай даже если их и умножить на 3) видно, что объёмы не очень серьёзные. И реального прироста производительности можно добиться, как правильно заметил Aion простыми вещами типа грамотной организации данных, индексов и т.п. Осталось в этом убедить нашего DBA :-)
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32634386
Maksim Chak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
777og Деталей по поводу размера на диске, триггеров и индексов, честно говоря, не знаю. Выяснение деталей у нашего DBA имеет свои м-м-м, скажем так, свои сложности.

Даже глядя на эти цифры (пускай даже если их и умножить на 3) видно, что объёмы не очень серьёзные. И реального прироста производительности можно добиться, как правильно заметил Aion простыми вещами типа грамотной организации данных, индексов и т.п. Осталось в этом убедить нашего DBA :-)

Грм.. Объем действительно не слишком велик.. Оптимизация запросов если и не спасет отца русской демократии, то сильно ему поможет :-)
А вот то, что Вашего DBA надо в этом убеждать.. Это очень плохо.
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32634436
Ekuku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем..
Тут в форума прошла реплика, что МТС на начальном уровне ставит "тяжелое" железо. Я думаю, это из-за того, что они ставят ПО от CBOSS, а оно у них действительно "тяжелое" из-за сильной денормализации... В качестве советов для Оракла, я еще не встретил тут высказаваний по поводу применения partition table. Это ведь тоже может дать определенный выигрыш при правильной стратегии ее построения..
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32634616
Aion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет.

2 777og
Те данные, которые Вы тут привели (характуристики системы, железо и т.д.), наводит (точнее доводит) мои мысли до следующего:
- та техника, что у Вас имееться должна справляться с поставлеными задачами
- большие проблемы не толко в организации данных но и в их обработки

конечно, я могу и ошибаться... :-)
А вообщето неплохо бы посчитать стоимость одной единицы.
Т.е. сделать некий простой тест, который Вам даст результаты (сурогатные) типа: мах производительность, сколько нужно времени для обработки одной единицы (если с системой никто неработает, работают 10/100/1000 пользователей).
Это еще может Вам дать аргумент для админа, типа: "Вот видишь, наш Oracle обрабатывает 1 request в секунду!!! Если в системе будут 100 пользователей, то 100-й пользователь будет ждать антификации 40 секунд!!!!" :-))))

2 Ekuku
partition table - это да, действительно может помочь, тот же SessionLog хранить в сегментах разделеные по месяцам (или как там это правильно в Oracle называеться)

В вот по поводу MTC, думаю здесь больше вопрос в том что, система начинает себя оправдывать при 500 000 calls per day(как пример). Ну или типа того.
Это как: "Если хотите одновреммено возить 1 т или 15 т апельсинов на одной машине, то нужно Вам именно фура, а не микробас" :-)
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32634934
777og
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AionВсем привет.

2 777og
Те данные, которые Вы тут привели (характуристики системы, железо и т.д.), наводит (точнее доводит) мои мысли до следующего:
- та техника, что у Вас имееться должна справляться с поставлеными задачами
- большие проблемы не толко в организации данных но и в их обработки


Согласен. Будем исправлять.

Aion
А вообщето неплохо бы посчитать стоимость одной единицы.
Т.е. сделать некий простой тест, который Вам даст результаты (сурогатные) типа: мах производительность, сколько нужно времени для обработки одной единицы (если с системой никто неработает, работают 10/100/1000 пользователей).
Это еще может Вам дать аргумент для админа, типа: "Вот видишь, наш Oracle обрабатывает 1 request в секунду!!! Если в системе будут 100 пользователей, то 100-й пользователь будет ждать антификации 40 секунд!!!!" :-))))


Вот по этому поводу я и думал. Хочется вокруг нашего биллинга построит систему мониторинга, отображающую качество обработки поступающих запросов. Я имею в виду следующее:
скорость обработки одного запроса (Dt) - время между приходом пакета на интерфейс и уходом пакета с ответом на пришедший запрос. Можно получить Dt_auth, Dt_start, Dt_stop. Dt_auth имеет смысл разбить на Dt_accept и Dt_reject, т.к. Reject пакеты имеет смысл задерживать (увеличивать Dt_reject) намеренно для защиты от флуда пакетами н.п. с подбором пароля, а борьба за минимизацию Dt_accept для нас имеет очень важное значение :-) Аналогично с Dt_start и Dt_stop, они являются показателями качества алгоритмов обработки и настроек базы, с одной стороны, и позволяют правильно выбрать время для ретрансмита пакетов на серверах доступа с другой стороны.

количество поступивших на обработку пакетов (N_access, N_start, N_stop) - с этип понятно.

некую относительную характеристику (dt_accept, dt_start, dt_stop) - аналогичную первой, но учитывающую количество поступивших запросов.

Имеется в виду следующее: если к нам поступает 3 пакета в течение 3 минут (DT = 3 мин) с интервалом в 20 секунд, то даже на самом хилом железе и на криво настроенной базе мы их сможем обработать с Dt_accept = 1сек. Если к нам за DT=3мин приходит 30 пакетов, то мы их можем обработать скажем за Dt_accept = 1,5сек, в случае 300 пакетов Dt_accept = 5сек. Поскольку DT=const, хилость_железа=const, то полученные Dt_accept(300) - Dt_accept(3) = 5 - 1 = 4 сек являются показателем неадаптированости алгоритмов обработки и настроек базы к данной нагрузке (чего нам собственно говоря и хочется узнать). Смотреть на график Dt_auth(t) и совмещать его с N_auth(t) неудобно, поэтому хочется относительную характеристику dt_accept(t) и аналогичные ей. Только я не могу придумать как её определить.


количество необработанных запросов (N_access_dropped, N_start_dropped, N_stop_dropped) - количество тех пакетов, на которые сервер вообще не ответил.

По полученным данным можно потом ещё строить гистограммы/распределения вида:
- количество обработанных запросов N за определённый Dt. В идеале эти распределения должны иметь вид дельта-функций :-)
- Dt от количества запросов и т.п.

Может мне не стоит изобретать велосипед, и уже есть ряд ТТХ, характеризующих подобные системы? Где об этом можно почитать?

Мне это нужно для того, чтобы можно было определить эффективность тех или иных мероприятий по оптимизации биллинга и что бы можно было строить прогнозы на предмет того сколько ещё пользователей можно добавить без существенной потери в производительности и без апрейта железа.
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32635837
Полуэкт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
радует сколько народа интересуется биллингами..

почитав всю бодягу могу сказать автору треда следующее - купите другой биллинг.

я в свое время написал и продал десяток биллингов под Вокалтек на сиквеле и оракле. оракл отрабатывал до 200 запросов в секунду (больше не могу сказать так как не было нагрузок выше) без видимых задержек. железо было - компак сервер 1.2 / 512 рам / скази диск зеркало. с твоей нагрузкой и железом все должно летать.. остальное - просто теория хорошая для форумов "оракл" и "сиквел".

если ты не в курсе что сидиар есть то писать свой биллинг - предприятие безуспешное даже расчитывая на русские дешевые ресурсы.

на крайняк заплати умельцам пусть поставят что то ломанное типа майнда. я не рекомендую но другие ставят и вроде работает но у меня лично от майнда зубы болят.
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32635931
Zh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
777og

Снимите трейс со стопа/старта и много вопрос сразу отпадет (там наверное и про неразделенный loqsession будет написано :)
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32636398
Aion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 777og

Рекомендовать что-то из "monitoring tools for billing solutions" не могу, так как сам толком ничего и ничитал из этого. Да и нужно ли это? Написать monitoring систему, которая умело то-и-все, это можно сказать сделать 2-ой биллинг :-)))

Если у Вас есть проблемы - решайте их. Если Вы проектируете систему - думайте о проблемах...

2 Полуэкт
Купить дело хорошее, но слабо я верю что "они" найдут то что нужно.
Почему-то у меня такое впечатления складываеться.
Либо это будет приемлемо по деньгам - но лажа по features,
либо это будет то что надо - но $$$ :-)

То что "они" мало знают что-есть-что - вопрос времени. Биллинг уже свой-то сделали :-)

А MIND дело хорошее, только вот если ломаный вариант почему-то перестанет работать - бизнес можно закрывать :-)))
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32659798
Полуэкт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не согласен. радиус-биллинг можно купить за штуку-две-три сегодня. при нынешних ценах на программистов даже в россии это уже не слишком большая цена для нормального бизнеса т.к. потери на биллинге могут составить эти же самые 2-3 штуки уже за месяц. я например написал биллинг свой именно потому что черные братья вставили меня на 900 баксов на том что последний звонок не завершался по истчении баланса и негритята быстро это скоцали и звонили на последнюю минуту по часу а потом терялись.

майнд даже если встанет что вполне вероятно то есть много вариантов. 1. найти того кто его продал и заставить поднять. 2. поставить другой биллинг и слить клиентов из майнда т.к. он на оракле и там в принципе ничего сложного нет выцепить юзеров и балансы. так что ничего катастрофического нет..

уверен что за тот год что я вышел из воип бизнеса уже есть и другие более приятные софты с возможностью поломать. есть несколько людей специализирующихся на ломании воип софтин включая биллинги. один из них из латвии кстати ;) Андриус. второй из .. не скажу откуда т.к. это мой кореш :) но сам к краку отношения иметь не хочу :)
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32659870
Фотография killed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
777ogHi, All!


Где можно можно почитать об архитектурах построения высокопроизводительных биллингов для операторов связи?

Я работаю в ISP и являюсь одним из авторов нашего биллинга. По функциональности он нас устраивает, но есть проблемы с производительностью. Чувствую, что с ростом числа клиентов наш биллинг начнёт загибаться.


Сейчас это построено по следующей схеме:
есть сервер, собирающий данные о сессиях клиентов (RADIUS)

сервер БД (Oracle) хранит данные о сессиях клиентов, их счета и т.п.

рабочие места операторов, с которых заводятся/удаляются клиенты, производится рассылка счетов и т.п.




Вы случайно не на Рязанке сидите? Где-то я уже про этот набор слышал...
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32659877
Фотография killed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
777og Maksim Chak
С точки зрения архитектуры в свое время возобладала такая точко зрения: модуль авторизации должен жить отдельно, и иметь собственные сведенья об остатках на счетах, достаточные для расчета допустимого времени соединения с высокой точностью. Сам же билллинг должен жить отдельно, там должна проводится подробная тарификация, выписка счетов, поплнеие балансов и прочее..



Вобщем мы пока решили разделить SessionLog на две части - оперативную и "статическую". Оперативный SL будет неиндексируемым (т.к. в него будут частые инсерты и он будет небольшим), а статический проиндексируем (у него большой объём и из него производятся частые выборки, обновляться он будет редко). Может ещё выиграем что-нибудь за счёт тюнинга. Ещё мне подсказали, что 9-ый и 10-ый ораклы умеют перекомпилировать пакеты в нативный код, это ещё может дать какое-то ускорение.

Если высвободившихся ресурсов будет достаточно, то организуем репликацию на другую машину всех таблиц кроме "горячих" (с оперативными данными, таких должно быть немного. Данные из "горячиех" таблиц будут ночью (во время минимальной нагрузки) переноситься в статические таблицы. Репликация должна будет позволить перенести печать отчётов, счетов, выписок и т.п. на другую машину и тем самым ещё больше разгрузить основной (авторизующий) сервер.

Вот такие предварительные соображения. Ещё накачал статей с http://citeseer.ist.psu.edu может ещё из них удастся почерпнуть каких-нибудь идей.

Мой вам совет, отложить какие-либо дополнительные архитектурные решения до того момента, когда вы будете четко представлять в чем заключаются ваши текущие проблемы с производительностью. Поверьте, за семь лет я насмотрелся на таааакие кульбиты со стороны разработчиков в разных компаниях. В результате там, где нужно было сделать всего лишь точечные действия, строились такие небоскребы, которые в конечном счете из простой, стройной системы делали неповоротливых монстров. Через пару лет уже кто-либо вообще боялся трогать некоторые модули, поскольку разобраться зачем и для чего накручены разные навороты уже никто не мог.
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32661399
Aion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Полуэкт

Хм.
Сами говорите типа за 1-2 K можно купить, а пишите все-таки свое :-)

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

А по поводу MIND не MIND, это уже дело каждого кто-и-за-что использует.
:-)
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32705146
Алексей Буйницкий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Партицировать таблицу по дню, доступ будет быстрее в разы. Индексы тоже быстро будут обновляться.
2. Внимательно посмотреть все запросы. Всегда есть один запрос, который грузит сервак на 100% на полчаса, а после небольшой переделки он уже грузит на 25% и на 10-15 сек :)
3. Обработку, по крайней мере начальную, производить не на оракле, а в памяти. Написать простейшую прожку на плюсах, которая "держит" балансы абонентов и дает быстрые ответы "брать, на сколько/не брать".
4. Обновления и т.д. делать по rowid, запись искать, как Том Кайт завещал, по наличию в индексе, по окончанию обработки из индекса выкидывать (null значение соотв. полю)
5. В принципе тарифные планы и т.д. я бы тоже рекомендовал загрузить в прожку на плюсах, чтобы она делала маленький select записи, ее тарифицировало и делало пару маленьких update-ов
Вроде все, Удачи!
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32705149
Алексей Буйницкий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, и еще...
Оракл разработчикам-таки учить надо, особенно разработчикам hot-биллингов.
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32708522
Oracle XPert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По-моему, лучше не на плюсах, а создать JBean на PK ( сведения о клиенте
он держит в ОЗУ ).
Да, использование ODBC дает дополнительные тормоза, не забывайте.
Больше использовать об'екты. Вообще, не замедляйте работу БД Oracle стилем
запросов ( SQL92 ).
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32730094
DiHalt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Внимательно посмотреть на:
1. materialized view on prebuilt partitioned table (для SessionLog) + materialized view log
2. TimesTen®/Cache – Real-Time Dynamic Data Caching System (TimesTen/Cache (Cache) includes in-memory database and data exchange technologies. Together, they enable applications to combine the real-time performance of TimesTen with the large storage capacity of an RDBMS (currently Oracle) www.timesten.com - очень сильная вещь.
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32731398
Полуэкт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aion2 Полуэкт
Сами говорите типа за 1-2 K можно купить, а пишите все-таки свое :-)

За это деньги, биллинг будет - г...о (извеняюсь за выражение)
Хотя конечно, если кому-то в нынешнии времена нужно посчитать минутный тариф на длительность и все, то можно конечно и так.
ну вопервых я написал его тогда когда был один Майнд на рынке и стоил он 350 штук (мне со скидкой для совка предлагали его за 200). так что выбора не было и поломать его тогда еще никто не догадался.

а что делают современные биллинги? просто интересно. что считается последним писком моды? я когда уходил - народ остро нуждался в надстройках для реселлеров - что бы биллинг считал по трем тарифам - клиент, терминирующий партнер и реселлер (тот кто снимает копейку с клиента). а что нонче ценится?
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32749175
Aion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну вопервых я написал его тогда когда был один Майнд на рынке и стоил он 350 штук (мне со скидкой для совка предлагали его за 200). так что выбора не было и поломать его тогда еще никто не догадался.

Понятно.


а что делают современные биллинги? просто интересно. что считается последним писком моды? я когда уходил - народ остро нуждался в надстройках для реселлеров - что бы биллинг считал по трем тарифам - клиент, терминирующий партнер и реселлер (тот кто снимает копейку с клиента). а что нонче ценится?

Считают они, что им больше делать ;-)
По "писком моды" - даже и незнаю что и сказать.
Все цениться, чем больше всего, тем лучше, типа: навороты в подсчетах, "куча мола" цифр (коэф.,тиков,пиков,тарифов,шагов...) , из который появляеться суммы :) ; интерфейс пользователя (репорты,графики) и т.д. и т.д.
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32749420
Фотография killed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EkukuПривет всем..
Тут в форума прошла реплика, что МТС на начальном уровне ставит "тяжелое" железо. Я думаю, это из-за того, что они ставят ПО от CBOSS, а оно у них действительно "тяжелое" из-за сильной денормализации... В качестве советов для Оракла, я еще не встретил тут высказаваний по поводу применения partition table. Это ведь тоже может дать определенный выигрыш при правильной стратегии ее построения..

Чтобы это дало хороший результат, приложение должно быть изначально спроектировано с учетом partitioning'a.
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32749453
Зл0й
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разруха - в головах (С) Проф. Преображенский.

Если разработчик системы не может внятно сформулировать что и как происходит в БД и где именно возникают проблемы производительности, то мы имеем дело с проблемой не технического характера, а организационного. Разработчик биллинговой (или любой другой "тяжелой" по БД) системы должен прежде всего хорошо разбираться в "родной" СУБД. Особенно в случае если бизнес-логика реализована в виде хранимых процедур (правильное решение, кстати). Сначала писать приложение а потом его тюнить - нездоровый подход. Производительность должна быть с самого начала заложена в дизайн и протестирована на прототипе.

Проблемы с производительностью у данной конкретной системы могут быть по миллиону причин:
- неадекватность железяки задаче (не поможет никакая СУБД)
- неоптиальная логическая структура БД
- неоптиальная физическая структура БД
- неоптимально или бездумно спроектированные транзакции
- ...

Когда тюнингом занимаются DBA а резработчики не в курсе что конкретно делают DBA, мне лично все ясно. Это называется раздрай, и переход с Оракла на что-то другое не улучшит ситуацию. Ибо проблема - не в Оракле.
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32749461
(0deHunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток
возможно я не очень подробно прочитал но я не увидел о каком типе билинга идет речь prepay (карточный) или repayment (по сроку)
у обоих типов принципиально разная логика и разные слабые места
поэтому их по разному нужно оптимизировать
в принципе общей проблемой для обоих типов являеться агрегирование входящей информации и обработка тарифных планов
для prepay требуеться оптимизация обработки тарифных планов и генератор скриптов соединения а для repayment агрегирование входящей информации
ну у меня есть такие рекомендации для repayment пишеться агрегирующий фильтр который подготавливает набор данных для инсерта в оперативную таблицу это приведет к тому что уменьшеться число инсертов да и количество входящих данных
затем данные агрегируясь переходят в ращетную таблицу где уже обрабатываються с учетом тарифных планов

а для prepay единственной пока рекомендацией есть такая рекомендация генератторы скриптов дозвона (соединения) выносяться во внешние процедуры с возможностью fork`а чтоувеличит число транзакций но даст возможность справиться с пиковой нагрузкой звонков

если что пинайте icq:117356538 может чем помогу
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32751520
Cobalt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
QuarkБыл както у них на презентации, слышал подобное). Но как это реализовано - все в секрете).
Единственно что удалось внятного получить: для такого ускорения есть возможности писать данные напрямую в память обходя всякие "внутренние проверки" на соотвествие типов итп.
То есть вся отвественность ложится на программиста. Представьте что будет если вы запишите в область памяти где int переменную char. В лучшем случае ваш биллинг повиснет выкинув всех пользователей(
Нет, там не совсем так - есть один-единственный тип данных - строка.И "более сложная строка" - список (типа дин. массива.). Плюс многомерные разреженные массивы.
А ко всему этому - классовые обёртки - очень удобно.
Но для быстроты можно что-то (конечно, это надо толково вписать в архитектуру) можно сделать ручками.

Алексей Буйницкий3. Обработку, по крайней мере начальную, производить не на оракле, а в памяти. Написать простейшую прожку на плюсах, которая "держит" балансы абонентов и дает быстрые ответы "брать, на сколько/не брать".
4. Обновления и т.д. делать по rowid, запись искать, как Том Кайт завещал, по наличию в индексе, по окончанию обработки из индекса выкидывать (null значение соотв. полю)
5. В принципе тарифные планы и т.д. я бы тоже рекомендовал загрузить в прожку на плюсах, чтобы она делала маленький select записи, ее тарифицировало и делало пару маленьких update-ов
Вроде все, Удачи!
Такую-вот вещь можно сделать на встроенном языке Cache' - довольно-таки богатые возможности у него.
...
Рейтинг: 0 / 0
Архитектуры высокопроизводительных биллингов
    #32757957
oracle_yzhas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
777og
авторУ меня складывается такое впечатление, что у нас где-то допущена архитектурная ошибка и строить это надо было несколько иначе. Например ввести буферную лёгкую базку (типа MySQL) для хранения оперативных данных ("сырые" данные для последующего обсчёта) и данных по клиенту, достаточных для его быстрой аутентификации


Хм . Помню делали биллинг где как раз использовалась буферная база для Radius.
Radius настроили так, чтобы он сам обращался к этой БД для обработки AuthRequest, для записи данных о сессии и т.д.
...
Рейтинг: 0 / 0
51 сообщений из 51, показаны все 3 страниц
Форумы / ERP и учетные системы [игнор отключен] [закрыт для гостей] / Архитектуры высокопроизводительных биллингов
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]