Возможно вы искали: 'Sam & Max Freelance Po...'

May 15 2025 19:29:55
  • Как сделать 8Gamers.Ru домашней страницей?
  • Игры
    • База данных по играх
    • Игровые новости
    • Игровая индустрия
    • Обзоры на игры
    • Прохождения игр
    • Гайды к играм
    • Превью о играх
    • Игровые тизеры
    • Игровые арты
    • Игровые обои
    • Игровые скриншоты
    • Игровые обложки
    • Игровые трейлеры
    • Игровое видео
    • Вышедшие игры
    • Ближайшие релизы игр
  • Кино и ТВ
    • База данных по кино
    • Статьи о кино
    • Постеры
    • Кадры из кино
    • Кино трейлеры
    • Сегодня в кино
    • Скоро в кино
  • Комиксы и манга
    • Манга по алфавиту
    • База данных по комиксах
    • Читать онлайн комиксы
    • Читать онлайн манга
    • База персонажей
  • Читы и коды
    • Чит-коды для PC игр
    • Чит-коды для консольных игр
    • Трейнеры
    • Коды Game Genie
  • Моддинг
    • Модификации
    • Карты к играм
    • Программы для моддинга
    • Статьи о моддинге
  • Геймдев
    • Всё о создании игр
    • Список движков
    • Утилиты в помощь игроделу
    • Конструкторы игр
    • Игровые движки
    • Библиотеки разработки
    • 3D-модели
    • Спрайты и тайлы
    • Музыка и звуки
    • Текстуры и фоны
  • Рецензии
    • Игры
    • Кино
    • Аниме
    • Комиксы
    • Мангу
    • Саундтреки
  • Саундтреки
    • Лирика
  • Файлы
    • Патчи к играм
    • Русификаторы к играм
    • Сохранения к играм
    • Субтитры к кино
  • Медиа
    • Видео
    • Фото
    • Аудио
    • Фан-арты
    • Косплей
    • Фото с виставок
    • Девушки из игр
    • Рисунки
    • Рисуем онлайн
    • Фотохостинг
  • Юмор
    • Анекдоты
    • Афоризмы
    • Истории
    • Стишки и эпиграммы
    • Тосты
    • Цитаты
  • Флеш
    • Азартные
    • Аркады
    • Бродилки
    • Гонки
    • Для девочек
    • Для мальчиков
    • Драки
    • Квесты
    • Леталки
    • Логические
    • Мультфильмы
    • Открытки
    • Приколы
    • Разное
    • Спорт
    • Стратегии
    • Стрелялки
Статистика

Статей: 87772
Просмотров: 96111483
Игры
Injustice:  Gods Among Us
Injustice: Gods Among Us
...
Dark Souls 2
Dark Souls 2
Dark Souls II - вторая часть самой хардкорной ролевой игры 2011-2012 года, с новым героем, сюжето...
Battlefield 4
Battlefield 4
Battlefield 4 - продолжение венценосного мультиплеер-ориентированного шутера от первого ли...
Кино
Steins;Gate
Steins;Gate
Любители японской анимации уже давно поняли ,что аниме сериалы могут дать порой гораздо больше пи...
Ку! Кин-дза-дза
Ку! Кин-дза-дза
Начинающий диджей Толик и всемирно известный виолончелист Владимир Чижов встречают на шумной моск...
Обзоры на игры
• Обзор Ibara [PCB/PS2] 18357
• Обзор The Walking ... 18801
• Обзор DMC: Devil M... 19879
• Обзор на игру Valk... 15877
• Обзор на игру Stars! 17764
• Обзор на Far Cry 3 17948
• Обзор на Resident ... 16024
• Обзор на Chivalry:... 17508
• Обзор на игру Kerb... 17981
• Обзор игры 007: Fr... 16619
Превью о играх
• Превью к игре Comp... 17960
• Превью о игре Mage... 14464
• Превью Incredible ... 14721
• Превью Firefall 13479
• Превью Dead Space 3 16334
• Превью о игре SimC... 14730
• Превью к игре Fuse 15442
• Превью Red Orche... 15542
• Превью Gothic 3 16343
• Превью Black & W... 17354
Главная » Статьи » Разное » Принципы разработки биллинговой системы (billing isp)

Принципы разработки биллинговой системы (billing isp)

Ключевые слова: billing, isp, (найти похожие документы)

From: Денис Шергин <http://diesel.sherdart.net/>
Date: Mon, 21 Nov 2005 14:31:37 +0000 (UTC)
Subject: Принципы разработки биллинговой системы





Введение

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

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

Итак, постараемся подумать над тем, как создать биллинг на базе Linux
и open source ПО.


Задачи

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

* сбор информации о потребляемых услугах (аккаунтинг)
* аутентификация и авторизация абонентов
* контроль денежных средств на счетах абонентов и списание средств в
соответствии c действующей тарифной сеткой
* пополнение счетов абонентов
* внесение изменений в тарифы
* предоставление статистики по операциям (клиентская и операторская
части)


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


Схема системы

Исходя из задач и запросов бизнеса, можно набросать схему системы.
Чтобы не обсуждать какого-то абстрактного сферического коня в вакууме,
будем рассматривать типовой пример оператора связи, продающего трафик
абонентам.

* коллекторы информации о потребленных услугах
* система аутентификации абонентов
* ядро (бизнес-логика)
* многоуровневая БД
* модуль авторизации
* модуль анализа типов трафика (локальный, пиринговый, etc)
* модуль разграничения доступа
* модуль статистики
* административный интерфейс для ручного управления абонентами
* интерфейс управления счетами абонентов и тарифами для отдела
продаж



Рис. 1. Структура биллинговой системы ISP

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


Коллекторы

Услуги могут быть разными (например - VPN-доступ, dial-up пул, обычный
неинкапсулированный трафик, Proxy, VoIP, etc), надо обеспечить
доставку ядру системы в единообразном виде информации о том, какой тип
услуги, какой абонент, в каком объеме и в какое время потребил. В
худшем случае для каждого из типов услуг прийдется разрабатывать свой
коллектор, но если повезет - что-то удастся унифицировать. Технологии,
которые могут помочь при создании коллекторов - SNMP, Radius, NetFlow.


Многоуровневая база данных

Многоуровневая БД нужна для того, чтобы не работать все время с
массивами максимально детальной информации, т.к. это значительно может
снизить быстродействие всей системы.

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

База первого уровня может понадобиться для разрешения спорных моментов
с клиентами. Важно сохранять ее в исходном виде, т.к. возможно будет
необходимо постфактум произвести перерасчет выставленных к оплате
счетов с учетом скорректированных тарифов или, например, уточненных
границ сетей, по которым делится трафик.
Не для каждого сервиса можно получить детализированную информацию о
соединениях, но к этому надо стремиться. По крайней мере, при подсчете
трафика через Web Proxy это решается автоматически, использование
NetFlows тоже позволяет делать полную детализацию. Минусом является
значительный объем, требующийся для хранения всех этих данных. Однако,
т.к. эта информация нужна не очень часто, ее более логично хранить в
виде обычных файлов, а не в базе - это уменьшит нагрузку на ваш сервер
БД и является более компактным способом хранения.

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

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


Бизнес-специфика

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


Учет перспективы

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

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


Погрешность расчетов

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

Помимо всего прочего, есть еще паразитный трафик. Ничего с ним
поделать нельзя, нужно просто помнить о нем, если у вас много реальных
IP-адресов.

Если вы перепродаете трафик, не забудьте при расчетах о том, что ваш
головной ISP может под мегабайтом понимать вовсе не 1048576 байт, а,
например, 1000000, что в результате дает почти 5% расхождения.
Дополнительные проблемы могут составлять направления - некоторые
головные провайдеры выставляют счета за входящий трафик, некоторые -
за исходящий, а в ряде случаев учитывается превышающее направление.


Время реакции системы

Принятие решения о блокировке абонента при окончании средств на его
счету на практике происходит не мгновенно, этот факт тоже надо
учитывать. Например, если блокировка срабатывает раз в минуту - при
скорости соединения 1 Мбит/с абонент может скачать лишних 7,5 мегабайт
в худшем случае.


Устойчивость к сбоям

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


Актуальность данных

При классифицировании трафика необходимо следить за актуальностью
границ сетей, т.к. интернет - динамичная система. Можно использовать
актуальные копии статических списков сетей, с которыми у вашего
головного провайдера заключены пиринговые соглашения (и,
соответственно, трафик, связанный с ними, тарифицируется по-иному),
периодически скачивая их от ISP. Альтернативой может быть
использование протоколов динамической маршрутизации, например - RIP, с
помощью которых можно получать границы пиринговой сети (если ваш
головной ISP предоставляет такую услугу).

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


Статистические отчеты

Помимо классического уже веб-интерфейса к статистической информации о
потребленных услугах и состоянии счета неплохо предоставлять клиентам
услугу рассылки наиболее важной для него информации на e-mail или
посредством SMS.


Отключение абонентов

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


Тарифы

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

Кроме этого, очень желательно хранить архив тарифов для возможности
восстановления счетов спустя время.


Бухгалтерия

Полезно подумать об интеграции вашего биллинга в общую бухгалтерию
вашей организации, например - с 1С или еще чем-то, что у вас
используется для этих целей.

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

Система должна в идеале позволять работать в кредит.


Лицензирование

Если у вас 100% легальный бизнес, необходимо использовать только
сертифицированные в Министерстве связи РФ решения. Проблема в том, что
иногда они не доступны по цене, выбор их не богат, да и зачастую эти
решения далеки от идеала. В целом, вопрос с наличием лицензии на
биллинг каждый решает для себя сам.


Практический пример

Разберем теперь конкретные варианты технической реализации такой
системы. Например - биллинг для небольшой локальной сети, продающей
трафик.

Один из часто используемых способов простого учета трафика -
использование счетчиков iptables на пограничном маршрутизаторе. Плюсы
такого решения - простота и гибкость, возможность разграничения типов
трафика на уровне правил пакетного фильтра. Минусы - прийдется весь
трафик, который вы хотите учитывать, маршрутизировать через один PC,
что, в общем-то, не сильно критично при небольшой загрузке. В качестве
коллектора в таком случае может выступать небольшой PERL-скрипт,
анализирующий вывод iptables. При этом рекомендую использовать флаг
-Z, который обнуляет счетчики iptables после вывода их значений - так
вы избежите потенциально возможного переполнения счетчиков,
регистрируя лишь разницу между измерениями.


Рис. 2. Структура цепочек правил iptables

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

В случае использования VPN (например, для продажи трафика это одно из
наиболее оптимальных решений, т.к. в сетях, построенных на дешевых
хабах без возможности Port Security, идентификация пользователя по IP
является крайне ненадежным решением) вполне логично интегрировать
модуль авторизации клиентов в скрипты /etc/ppp/ip-up и
/etc/ppp/ip-down, которые вызываются демоном pppd при подъеме и
опускании ppp интерфейса (а зачастую VPN-соединения представляют собой
по сути, соединения, использующие PPP как транспорт для
инкапсулированного трафика). Аналогичным образом можно организовать
авторизацию для dial-up соединений.

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

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


Заключение

Если вы все же решили создать свою собственную биллинговую систему, то
пусть она всегда считает точно, не доставляя вам лишних хлопот.

Статья написана по материалам доклада на семинаре, посвященном
применению Linux и open source ПО, прошедшем 29.10.05 в г. Томске.

PS: автор благодарит TLUG (Tomsk Linux Users Group) за
конструктивные замечания по теме статьи.

Den aka Diesel © 2005
798 Прочтений •  [Принципы разработки биллинговой системы (billing isp)] [08.05.2012] [Комментариев: 0]
Добавил: Ukraine Vova
Ссылки
HTML: 
[BB Url]: 
Похожие статьи
Название Добавил Добавлено
• Принципы разработки биллинговой сис... Ukraine Vova 08.05.2012
Ни одного комментария? Будешь первым :).
Пожалуйста, авторизуйтесь для добавления комментария.

Проект входит в сеть сайтов «8Gamers Network»

Все права сохранены. 8Gamers.NET © 2011 - 2025

Статьи
Рецензия на Pressure
Рецензия на Pressure
Чтобы обратить на себя внимание, начинающие маленькие разработчики, как правило, уходят в жанры, ...
Рецензия на Lost Chronicles of Zerzura
Рецензия на Lost Chron...
Игры, сделанные без любви и старания, похожи на воздушный шар – оболочка есть, а внутри пусто. Lo...
Рецензия на The Bridge
Рецензия на The Bridge
«Верх» и «низ» в The Bridge — понятия относительные. Прогуливаясь под аркой, можно запросто перей...
Рецензия на SimCity
Рецензия на SimCity
Когда месяц назад состоялся релиз SimCity, по Сети прокатилось цунами народного гнева – глупые ош...
Рецензия на Strategy & Tactics: World War 2
Рецензия на Strategy &...
Название Strategy & Tactics: World War II вряд ли кому-то знакомо. Зато одного взгляда на ее скри...
Рецензия на игру Scribblenauts Unlimited
Рецензия на игру Scrib...
По сложившейся традиции в информационной карточке игры мы приводим в пример несколько похожих игр...
Рецензия на игру Walking Dead: Survival Instinct, The
Рецензия на игру Walki...
Зомби и продукция-по-лицензии — которые и сами по себе не лучшие представители игровой биосферы —...
Обратная связь | RSS | Донейт | Статистика | Команда | Техническая поддержка