|
Система электронных платежей
|
|||
---|---|---|---|
#18+
Встала задача реализации системы электронных платежей для оплаты всевозможных служб в пределах города. Система примитивная: профиль пользователя, электронный счет в нашей системе, осуществление операций оплаты со счета и ввода денег на счет. Хочется сделать так: реализовать SOAP/REST over HTTP API и к нему написать несколько "морд": web, desktop, mobile (android, symbian, iOS) Возник ряд вопросов: 1) Балансировка нагрузки/масштабируемость сервиса. Хочется сервисную часть (морда, api) крутить на несколких серверах. Соединения к которым разбрасываются каким-нибудь балансировщиком аппаратным или программным. Кто в теме как это обычно выглядит? Хочется по единому DNS имени попадать на один из серверов эдакого HA (high avail...) кластера, прозрачно дщля пользователя. Т. е. его перекидывает балансировщик сам. 2) Балансировка нагрузки/масштабируемость БД. Что лучше применить? Шардинг какой-нибудь дикий с репликациями? Или кластер предлагаемый той или иной СУБД. Рассматривается использование Oracle или MS SQL. Спасибо. Буду рад любой информации. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2010, 14:16 |
|
Система электронных платежей
|
|||
---|---|---|---|
#18+
Lord British 1) Балансировка нагрузки/масштабируемость сервиса. Хочется сервисную часть (морда, api) крутить на несколких серверах. Соединения к которым разбрасываются каким-нибудь балансировщиком аппаратным или программным. Кто в теме как это обычно выглядит? Хочется по единому DNS имени попадать на один из серверов эдакого HA (high avail...) кластера, прозрачно дщля пользователя. Т. е. его перекидывает балансировщик сам. Хмм... Ну вот так, как Вы описали, так и делается:-) В принципе, можно вообще сделать чисто на уровне TCP/IP. Например, не секрет, что одному имени DNS не обязательно должен соответствовать один адрес. Ну вот хоть yandex попробуйте попинговать и посмотреть на IP-адреса. Ну или nslookup глянуть на ту же тему. Но это такой вариант не очень, если у Вас цель HA кластер. Можно использовать специальный софт какой-нибудь. К примеру, Apache . С аппаратными я хуже знаком, но и там есть решения. Подороже выйдет только, я боюсь. Lord British 2) Балансировка нагрузки/масштабируемость БД. Что лучше применить? Шардинг какой-нибудь дикий с репликациями? Или кластер предлагаемый той или иной СУБД. Рассматривается использование Oracle или MS SQL. Спасибо. Буду рад любой информации. Есть опыт работы с Oracle RAC. Реально решает такую задачу. Единственно что, это совсем не то, что просто на одну машину - и ставиться сложнее и поддерживать сложнее и информации/специалистов меньше. Плюс по-любому тогда нужен SAN. Про MSSQL не знаю, но думаю, что хуже будет, из общих соображений. SAN все равно нужен будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2010, 10:49 |
|
Система электронных платежей
|
|||
---|---|---|---|
#18+
CQRS + ESB + Oчередь сообщений. В nServiceBus или в других аналогах, есть полный комплект для этих целей(WCF,Gateway для доступа по HTTP, балансировщик нагрузок, поддерживаются очереди сообщений основных вендеров). В результате: отказоустойчивость, маштабируемость, минимальные требования к железу. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2010, 11:31 |
|
Система электронных платежей
|
|||
---|---|---|---|
#18+
i, А морда? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2010, 11:35 |
|
Система электронных платежей
|
|||
---|---|---|---|
#18+
Haueri, А морда? WCF = SOAP. Морда может быть любой ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2010, 12:09 |
|
Система электронных платежей
|
|||
---|---|---|---|
#18+
Hauer Есть опыт работы с Oracle RAC. Реально решает такую задачу. Единственно что, это совсем не то, что просто на одну машину - и ставиться сложнее и поддерживать сложнее и информации/специалистов меньше. Плюс по-любому тогда нужен SAN. Про MSSQL не знаю, но думаю, что хуже будет, из общих соображений. SAN все равно нужен будет. У меня был опыт установки Oracle RAC на виртуалки с общим виртуальным хранилищем. Примерно представляю как выглядит. Но к сожалению в продакшне никогда не видел. Работал только со standby/primary. Но это больше относится ко времени восстановления. Кроме того, полагаю, что необходимо придерживаться некоторых требований при написании приложения, чтобы не завалить этот кластер (использование последовательностей например...). Если поделитесь соображениями по этому поводу буду признателен. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2010, 12:57 |
|
Система электронных платежей
|
|||
---|---|---|---|
#18+
iHaueri, А морда? WCF = SOAP. Морда может быть любой Ну так о том и вопрос, кто будет балансировать нагрузку на морду. Или считается, что морда нисколько не нагружается? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2010, 13:32 |
|
Система электронных платежей
|
|||
---|---|---|---|
#18+
Lord BritishHauer Есть опыт работы с Oracle RAC. Реально решает такую задачу. Единственно что, это совсем не то, что просто на одну машину - и ставиться сложнее и поддерживать сложнее и информации/специалистов меньше. Плюс по-любому тогда нужен SAN. Про MSSQL не знаю, но думаю, что хуже будет, из общих соображений. SAN все равно нужен будет. У меня был опыт установки Oracle RAC на виртуалки с общим виртуальным хранилищем. Примерно представляю как выглядит. Но к сожалению в продакшне никогда не видел. Работал только со standby/primary. Но это больше относится ко времени восстановления. Кроме того, полагаю, что необходимо придерживаться некоторых требований при написании приложения, чтобы не завалить этот кластер (использование последовательностей например...). Если поделитесь соображениями по этому поводу буду признателен. Да нет, особых требований никаких к приложениям нет (с чего бы быть каким-то проблемам с последовательностями?). Stanby/primary это все-таки не совсем то, мне кажется. RAC состоит из ноудов, которые в принципе равноценны. Т.е. обращение целиком к кластеру, точно так же. как и к одному серверу (connection string только отличается). ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2010, 13:36 |
|
Система электронных платежей
|
|||
---|---|---|---|
#18+
Ну, тот тоже повторюсь - для платежной системы в пределах города подходят любые прямолинейные решения, нагрузка очень маленькая. При средней доходности системы платежей, в масштабах города Oracle RAC, скорее всего, выйдет за пределы бюджета. Вообще, основное требование к БД для платежной системы - это возможность организовать более-менее осмысленный HA - а тут, в общем, кроме Postgress 9.0 (слишком свежего) и DB2 Express C с годовой поддержкой ничего и нет, увы. Application Layer, в общем, все равно на чем делать - что разработчику знакомо, то и использовать. Нагрузки, как я уже говорил, сравнительно небольшие. Да, кстати, надо отметить, что для целей масштабирования платежной системы RAC малопригоден - так как основная проблема будет, по идее, в масштабировании update, а тут RAC ничем не поможет, если даже не помешает. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2010, 11:27 |
|
Система электронных платежей
|
|||
---|---|---|---|
#18+
DPH3При средней доходности системы платежей, в масштабах города Oracle RAC, скорее всего, выйдет за пределы бюджета. Собственно, я про RAC только исходя из: Lord British Рассматривается использование Oracle или MS SQL. А так, конечно, это огромная нагрузка на бюджет. Хотя.... Местами Oracle может проявить гибкость в плане лицензирования, мне думается. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2010, 11:39 |
|
Система электронных платежей
|
|||
---|---|---|---|
#18+
Hauer Рассматривается использование Oracle или MS SQL. Ну, судя по всему, или с другими не знакомы или проект попильный, денег не считают. Тогда, наверно, Oracle EE - оптимальное решение, дороже уже сложно что-нибудь впихнуть. Где-то за 200+K$ А так, конечно, это огромная нагрузка на бюджет. Хотя.... Местами Oracle может проявить гибкость в плане лицензирования, мне думается. Ну, на таком заказе где-то 30% скидки получить получится. Вот больше, насколько я знаю, уже сложнее. Впрочем, при больших заказах там и 75% скидки бывают и 90% :) Но если проект "откатный", то зачем скидки? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2010, 12:06 |
|
Система электронных платежей
|
|||
---|---|---|---|
#18+
DPH3, Я видел и 70 на не таком уж большом заказе. Но это вариант типа "всё или ничего", т.е. берите 200К и давайте нам, что мы хотим или вообще ничего не купим. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2010, 13:27 |
|
Система электронных платежей
|
|||
---|---|---|---|
#18+
Hauer, Охотно верю. Но тут-то заказ даже по чистым ценам где-то на 200K$, не больше (3 машинки по 2 ядра - две в RAC для локального HA и нормального обновления версий, одна - в другой ДЦ с DataGuard), т.е. 6 лицензий EE. А, еще поддержка, конечно... До аналогичного решения на DB2 (где-то около 12К$ или вообще 4k$ в год) все-таки не дойдет. Да и ручное на Postgress будет подешевле :) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2010, 13:58 |
|
Система электронных платежей
|
|||
---|---|---|---|
#18+
Подскажите расшифоровку сокращению "НА" ? И есть ли более подробное описание решения на PostgreSQL и DB2 ? И какая в этом случае СУБД более подходит ? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2010, 14:26 |
|
Система электронных платежей
|
|||
---|---|---|---|
#18+
Пробегал, HA = High Availability, т.е. высокая доступность. Аналоги Ораклового DataGuard, в общем, все примерно про одно и то же. В DB2 это называется HADR, доступно при покупке годовой поддержки для бесплатной версии DB2 Express C (т.е. 2k$ в год). Описание - на ibm.com, например. В PostrgresSQL в 9ой версии появилось несколько механизмов для обеспечения высокой доступности, аналогичные DataGuard, но в продакшне, насколько я знаю, их еще нет. Я бы для платежной системы использовал бы DB2. Но если уже есть хороший DBA по Postgress - то можно и Postgress. Oracle - только если есть на это деньги (и, опять таки, очень хороший DBA - настройка в оракле DataGuard - вещь очень не простая). ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2010, 14:35 |
|
Система электронных платежей
|
|||
---|---|---|---|
#18+
Lord British2) Балансировка нагрузки/масштабируемость БД. Что лучше применить? Шардинг какой-нибудь дикий с репликациями? Или кластер предлагаемый той или иной СУБД. Рассматривается использование Oracle или MS SQL. Спасибо. Буду рад любой информации.А как возникла идея масштабировать нагрузку БД? Планируются в перспективе миллиарды платежей в день? Зачем вам платить лишнее??? Или просто поучиться? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2010, 16:04 |
|
Система электронных платежей
|
|||
---|---|---|---|
#18+
alexeyvgLord British2) Балансировка нагрузки/масштабируемость БД. Что лучше применить? Шардинг какой-нибудь дикий с репликациями? Или кластер предлагаемый той или иной СУБД. Рассматривается использование Oracle или MS SQL. Спасибо. Буду рад любой информации.А как возникла идея масштабировать нагрузку БД? Планируются в перспективе миллиарды платежей в день? Зачем вам платить лишнее??? Или просто поучиться? Кстати, хороший вопрос предположим, в городе 50 000 000 людей (понаехали) и каждый (включая новорожденных) решил в конце месяца сделать по 100 платежей... получится 5 000 000 000 транзакций... с одной стороны много... с другой стороны - транзакции примитивные, да и понаедут до такого количества платежей явно не в этом десятилетии ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2010, 22:43 |
|
|
start [/forum/topic.php?fid=33&fpage=29&tid=1548168]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
28ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 142ms |
0 / 0 |