|
|
|
Покритикуйте архитектуру
|
|||
|---|---|---|---|
|
#18+
Оригинал в ветке Оракла - но тут тоже думаю есть кому приложиться так сказать === Выношу на общественный суд предложенную архитектуру системы. Буду признателен за конструктивную критику (немного неконструктивной тоже можно, но в меру). Ограничения: 1. Oracle XE - на первое время 11ГБ хватит за глаза, а там можно на СЕ1 переехать 2. ТОлько локальные диски пока (в перспективе SAN/FCoE/ISCSI) 3. Использование ЕС2 или схожего решения для облачного развертывания Физическая конфигурация: 1. Сервер БД - 1.7G RAM (EC2 small instance) + 2*15GB диски ЕБС (striped with mdadm) для данных OS: Oracle Linux 5/6 2. Веб/сервер приложений: 3.75GB RAM (EC2 medium instance) + 2*10GB диски ЕБС (striped) OS: Oracle Linux 5/6 AppServer/WebServer: Oracle GlassFish 3.1 Дополнительно на этом же сервере: Apache ActiveMQ message broker memcached server Suggested RAM allocation: AS - 2.5GB memcached - 768MB Собственно вопрос: Сайт будет позволять пользователям загружать картинки товаров, думаю не более 20 на пользователя. Картинки предполагается хранить в базе как БЛОБы. Периодически картинки выгружаются из базы на локальный диск и синхронизируются с хранилищем СДН (eg. Amazon CloudFront) Предполагаемый подход: 1. Пользователь загружает картинку 2. Приложение сохраняет ее в базу, поле Extraction_Date = NULL 3. По крону или по планировщику Глассфиша запущаем либо бин либо PL-SQL скрипт для выгрузки невыгруженных картинок на диск 3.1 Допустимо чтобы картинка была выгружена в течение часа. Пользователю, загрузившему картинку, ее можно показать и из базы я думаю. 4. rsync синхронизирует локальный диск с хранилищем CDN 5. Программа генерирует ссылки на кратинке в формате необходимом для CDN Где могут быть узкие места подобного подхода при наличии около 1000 одновременных пользователей в системе (на данном железе)? На чем следует акцентировать внимание при формировании бюджета в будущем? Например за 5 килобаксов купить пролиант с 16ГБ памяти и ССД диски? Буду благодарен опытным архитекторам и просто профессионалам за конструктивную критику и предложения по улучшению. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2012, 09:37:52 |
|
||
|
Покритикуйте архитектуру
|
|||
|---|---|---|---|
|
#18+
Kostya Ilyinovза конструктивную критику мне непонятно, почему столько текста и времени уделено "показу картинки". Это счас трудный вопрос для архитектуры\железа\СУБД? т.е. этот пост не тянет на заголовок: "предложенную архитектуру системы " imho ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2012, 09:46:21 |
|
||
|
Покритикуйте архитектуру
|
|||
|---|---|---|---|
|
#18+
Petro123, Не скажите, коллега. Вот допустим вам нужно определенное время отклика. Есть СДН, есть картинки. А вот как их синхронизировать, будет ли масштабироваться подход с пакетной выгрузкой, или сделать JMS очередь и слушаетеля для выгрузки для скорейшей обработки. Опять же, может букв и много, и громкий заголовок, но из блоков и собирается система, и при так сказать кривизне одного блока, другой должен быть так сказать впуклым :-) Интересует критика и потенциальные узкие места при росте числа пользователей и картинок. Для корпоративного сайта может скорость и не критична, но для пользователей допустим платного сервиса это реальное конкурентное преимущество. Так что пАпрашу Вас пролить свет на недостатки предложенного подхода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2012, 09:56:01 |
|
||
|
Покритикуйте архитектуру
|
|||
|---|---|---|---|
|
#18+
если говорить Только о картинках, то нет Функциональных требований к данной подсистеме из ТЗ. Kostya IlyinovСайт будет позволять пользователям загружать картинки товаров, думаю не более 20 на пользователя. это не из ТЗ на ИС. 4.2 Требования к функциям, выполняемым системой ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2012, 10:00:47 |
|
||
|
Покритикуйте архитектуру
|
|||
|---|---|---|---|
|
#18+
Kostya Ilyinovвремя отклика "сколько будет в граммах?" (с) ЗЫ. Очень часто архитектор и программист сами себе выдумываю задачу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2012, 10:02:20 |
|
||
|
Покритикуйте архитектуру
|
|||
|---|---|---|---|
|
#18+
Petro123, Согласен, мне сейчас сложно оценит такой показатель. Поэтому и интересуют потенциальные проблемы предложенного подхода, чтобы в будущем избежать сложных изменений. Время простоя в будущем будет стоить денег, поэтому хочется определиться раньше нежели чем позже. Если у Вас кроме критики постановки вопроса и отсутствия в задаче некоторых вводных данных нет аргументов, меня это несказанно радует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2012, 10:09:15 |
|
||
|
Покритикуйте архитектуру
|
|||
|---|---|---|---|
|
#18+
Kostya Ilyinov, Согласен, данных для детального разбора подхода может недостаточно, но я поясню что я бы хотел услышать: 1. Предложенный подход будет тормозить доступ к картинкам, т.к. процессы оракла будут соревноваться за доступ к таблице с картинками (это пример, на самом деле гонки не должно быть ввиду хранения картинок допустим в отдельном табличном пространстве от самих данных о картинках - идентификатор товара и т.д.) ИЛИ 2. Предложенный подход гавно, потому что картинки надо хранить на диске, я видел что Ашот так делает и это единственно верное решение и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2012, 10:17:58 |
|
||
|
Покритикуйте архитектуру
|
|||
|---|---|---|---|
|
#18+
Kostya Ilyinov, да я понял, что у вас вопрос про всю линейку картинок от малой системы (ничего не делать, показ прямо из блоб) до одноклассников. Т.е. конкретной задачи от заказчика нет. ОК - подумаем ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2012, 10:19:51 |
|
||
|
Покритикуйте архитектуру
|
|||
|---|---|---|---|
|
#18+
Petro123, Именно коллега, интересует гибкость и масштабируемость подобного подхода. Клиент - сам я, поэтому с формализацией требований в соответствии с действующими регламентами прогресса ожидать сложно - все время идет на разработку прототипа и все связанное с этим. Вводные будут появляться по мере наступления так сказать. Спасибо за потраченное время. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2012, 10:25:42 |
|
||
|
Покритикуйте архитектуру
|
|||
|---|---|---|---|
|
#18+
Что такое 1000 одновременных пользователей? Все тыщу пользователей одновременно гигибайтные картинки грузят? Скорее всего - нет. А раз так, выберите самое простое и дешёвое. Потому что загрузка и просмотр картинок - не самая большая проблема. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2012, 10:30:29 |
|
||
|
Покритикуйте архитектуру
|
|||
|---|---|---|---|
|
#18+
Kostya Ilyinov, - за оракл не беспокойся. Не будет там ничего тормозить (опять же нет кол-ва польз-лей). Просто, сначала будут картинка превью 100х100 пикселей. А вот, если кликнул "на посмотреть", то загрузка уже большой. Те кто кликнут будет в 100 раз меньше чем тех с превью. Ещё лучше, протестировать. Тест займёт _один_ день. Второй критерий, сколько картинок на одной странице. Т.е. в конечном итоге нужно количество запросов в единицу времени на сервер. А потом уже - линейка решений. Так вам её никто не даст. ЗЫ на оракле форума вам правильно уже ответили. Пойдёт ЛЮБОЕ решение. imho Удачи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2012, 10:32:04 |
|
||
|
Покритикуйте архитектуру
|
|||
|---|---|---|---|
|
#18+
Petro123, Т.е. предлагаете при загрузке картинки сразу писать 2 поля - большую и маленькую картинки? И на странице показывать маленькие, а при нажатии - большую? В том то и дело, что из базы хочется брать минимум - скажем так, метаданные. А картинку (любую) рендерить с веб/СДН сервера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2012, 10:45:22 |
|
||
|
Покритикуйте архитектуру
|
|||
|---|---|---|---|
|
#18+
Kostya IlyinovPetro123, Т.е. предлагаете при загрузке картинки сразу писать 2 поля - большую и маленькую картинки? И на странице показывать маленькие, а при нажатии - большую? В том то и дело, что из базы хочется брать минимум - скажем так, метаданные. А картинку (любую) рендерить с веб/СДН сервера. опять же, есть слово - оверхед. Видно что вы - программист. Он (программист) всегда старается сделать в динамике и на лету.))) Но, превью Очень широко используется. Или, взять, тайлы карты от Гугля\яндекса. Случайно там рендерится ЗАРАНЕЕ дерево картинок по 22 штуки на одно место? Т.е. опять без нагрузки флейм бессмысленен. - попробуйте НИЧЕГО не делать, всё налету из БЛОБ и узнаете ограничение. Ну, или попросите подчинённого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2012, 10:55:05 |
|
||
|
Покритикуйте архитектуру
|
|||
|---|---|---|---|
|
#18+
Petro123, Вот это уже дело. Тут еще какая особенность имеется. В РФ скажем так подавляющее большинство целевой интернет-аудитории онлайн проекта сидит в Дефолт-сити или Питере. Тут (в Австралии) все несколько иначе - относительно крупных городов несколько (скажем 4-5), и все хотят быстрый сайт, избалованы фэйсбуком и его СДНами. Поэтому СДН - это скорее данность, он не требует больших затрат, и дает ощутимое преимущество при географическом распределении аудитории. А все из базы тянуть - да, проще, но рано или поздно что-то надо будет делать. Вот я и думаю, предложенное решение вроде навскид решает задачу, и масштабироваться должно неплохо (хехе, без тестов - только в теории). Поэтому и пляшу от СДНа так сказать. Картинки из базы ведь кэшироваться не будут (?), и это опять же дополнительные расходы по трафику и деньгам между узлами в облаке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2012, 11:04:48 |
|
||
|
Покритикуйте архитектуру
|
|||
|---|---|---|---|
|
#18+
Kostya Ilyinov, да его заDDOS-ят с двумя сокетами. Тыж даже админом хер зайдешь в час нагрузки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2012, 11:05:14 |
|
||
|
Покритикуйте архитектуру
|
|||
|---|---|---|---|
|
#18+
mayton, Коллега, поясните пожалуйста. Кого задосят? СДН, сервер приложений или ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2012, 11:14:37 |
|
||
|
Покритикуйте архитектуру
|
|||
|---|---|---|---|
|
#18+
Смотри у тебя БД станет неодступной для новой транзакции когда не сможет создать новый connection при условии что все другие слоты транзакций уже заняты. Это самая распространённая ошибка разработчиков. Они не могут (реально не могут) посчитать сколько же будет соединений одновременно рабоатать. Где-то проскакивала информация о макс. количестве двух сокетов в Oracle XE но сейчас никак не могу найти это в документации. Вобщем смотри сам. Создай на java в цикле макс число коннектов и посчитай сколько выйдет. Только не через connection pool а по настоящему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2012, 11:24:05 |
|
||
|
Покритикуйте архитектуру
|
|||
|---|---|---|---|
|
#18+
mayton, XE будет брать одно ядро по-моему. Допустим. Ну и как же быть в подобной ситуации? Ваши предложения в студию пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2012, 11:26:07 |
|
||
|
Покритикуйте архитектуру
|
|||
|---|---|---|---|
|
#18+
Kostya IlyinovКартинки из базы ведь кэшироваться не будут (?), будет работать кэш сервера. Т.е. сервер отдаст её СРАЗУ в канал на аппСервер. Ничего искать повторно у себя не будет. Потом 2 кэша Хибера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2012, 11:28:26 |
|
||
|
Покритикуйте архитектуру
|
|||
|---|---|---|---|
|
#18+
Kostya Ilyinovmayton, XE будет брать одно ядро по-моему. Допустим. Ну и как же быть в подобной ситуации? Ваши предложения в студию пожалуйста. Да какие предложения. Покупай сразу SE или выше. XE - это только для обучения разрабочиков. Или для систем у которых ну совсем нагрузки нет. И 1 сеанс с ними работает. Ну типа там себе на ноут поставить на "попробовать". Вот и всё. Вобщем почитай тут http://www.oracle.com/technetwork/products/express-edition/overview/index.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2012, 11:34:39 |
|
||
|
Покритикуйте архитектуру
|
|||
|---|---|---|---|
|
#18+
mayton, ты на форуме оракла зря вопрос задал. Это не их вопрос, т.к. выдержит любая БД. Решение на Java = решение на шарпе питоне или ещё чем. Все решения будут работать , но если ты Jav'ист, то APEX - не твоё. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2012, 11:49:18 |
|
||
|
Покритикуйте архитектуру
|
|||
|---|---|---|---|
|
#18+
mayton, упс, аффтару было - не тебе. сорри. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2012, 11:50:17 |
|
||
|
Покритикуйте архитектуру
|
|||
|---|---|---|---|
|
#18+
Kostya Ilyinov, + 1000 за хронение картинок в файловой системе, а не в БД ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2012, 12:14:10 |
|
||
|
Покритикуйте архитектуру
|
|||
|---|---|---|---|
|
#18+
Petro123, Спасибо - буду делать. Как запущу, дам знать. Может на хабрушку чего чиркану если время будет. Спасибо всем откликнувшимся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2012, 12:15:50 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=274&tid=2131168]: |
0ms |
get settings: |
18ms |
get forum list: |
28ms |
check forum access: |
7ms |
check topic access: |
7ms |
track hit: |
48ms |
get topic data: |
25ms |
get forum data: |
6ms |
get page messages: |
106ms |
get tp. blocked users: |
3ms |
| others: | 285ms |
| total: | 533ms |

| 0 / 0 |
