|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
Пользователь tygraЯ таки скажу: нельзя ли огласить задачу, которая требует n серверов приложений или n sql серверов? Не теоретическую, а именно ту, которая сейчас использует эти n. Мне просто интересно - что это может быть. Вот смотрю на загрузку нашего сервера и думаю, чего нужно, чтобы не хватило этого и надо было поставить 10 серверов??? Не могу придумать. :) -- Tygra's -- 2 процессора - 4 гига оперативки - вся база под 10 гиг - и тормозит - если больше 10 клиентов - и что теперь - новый сервер покупать? Теперь нужно нанять специалиста, знающего досконально Вашу СУБД, обязательно с прямыми ручками, и заняться оптимизацией БД и запросов. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2005, 17:12 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
авторТеперь нужно нанять специалиста, знающего досконально Вашу СУБД, обязательно с прямыми ручками Вот именно. Иногда даже помогает банальный просмотр логов выполнения SQL-операторов. Иногда просто взягляд со стороны. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2005, 17:42 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
Calm авторТеперь нужно нанять специалиста, знающего досконально Вашу СУБД, обязательно с прямыми ручками Вот именно. Иногда даже помогает банальный просмотр логов выполнения SQL-операторов. Иногда просто взягляд со стороны. Это подход самоделкинов, для тиражных продуктов - никто не будет ковырятся - проще и надежней - если имеется масштабируемость на уровне железа - Другое дело - что масштабировать SQL сервера - и в теории почти невозможно. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2005, 19:16 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
Из серии: Я купил новую машину, мне сказали, что она мощная. Однако я умею переключать только на первую скорость и машина едет медленно. Вывод - куплю-ка я машину помощнее, тогда на первой скорости она обгонит мою нынешнюю машину ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2005, 22:24 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
ASCRUSИз серии: Я купил новую машину, мне сказали, что она мощная. Однако я умею переключать только на первую скорость и машина едет медленно. Вывод - куплю-ка я машину помощнее, тогда на первой скорости она обгонит мою нынешнюю машину в такой терминологии - на машинах ездят люди - 99% которых не знает и не хочет знать устройство автомобиля и если хочет ездить быстрее - естественно покупает другой автомобиль. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2005, 08:58 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
автори если хочет ездить быстрее - естественно покупает другой автомобиль. Сами-то верите в то что пишите? Продолжая аналогию: Мой приятель недавно научился регулировать инжектор. Теперь он расходует меньше топлива. Видимо, это спасло его от приобретения нового автомобиля с более экономичными характеристиками? Думаю, скоро он научится настраивать еще лучше и сэкономит стоимость еще одного автомобиля. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2005, 09:05 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
Пользователь Это подход самоделкинов, Не, ну как же так? А если всё тормозит какой-нибудь несчастный один отчёт, из-за того что там плохой запрос? Или просто надо настроить SQL-сервер? Пользовательдля тиражных продуктов - никто не будет ковырятся - проще и надежней - если имеется масштабируемость на уровне железа - Это не очень хорошо говорит об этих самых тиражных продуктах :) Что лучше, поковыряться немного в своём тиражном продукте, или чтобы тысячи клиентов разорились на новый сервер? Пользователь Другое дело - что масштабировать SQL сервера - и в теории почти невозможно. Ну, есть репликации там всякие... И потом, ну, 4 гига оперативки. Ну, 2 процессора. Это не исчерпывающая характеристика сервера. А данные на чём сидят? Кстати, не может ли быть такого, что Вы упёрлись в потолок возможностей MS SQL (здесь я не особо представляю, о чём говорю, но, может, надобно оракл или дб2)? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2005, 10:05 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
авторЭто не очень хорошо говорит об этих самых тиражных продуктах :) Молодец, тактично сказал! Я вот мужественно сдериваюсь, чтобы не высказаться о таких продуктах. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2005, 10:07 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
Пользователь 2 процессора - 4 гига оперативки - вся база под 10 гиг - и тормозит - если больше 10 клиентов - и что теперь - новый сервер покупать? Обратный пример - самописная учетная система - типичная 2-х звенка, вся логика в хранимых процедурах, MSSQL, 600 одновременных пользователей, 300Gb база, 300млн. проводок, перелезли с 8хXEON700+8Gb RAM на 8xITANIUM2+8Gb RAM , потому что стало подтормаживать - теперь снова летает. Но, конечно, система вылизывалась достаточно долго. Сервер масштабируется до 24 процессоров и 32Gb RAM, поэтому лет на 10-20 хватит. При этом года 3-4 назад vs активно игрались с MTS и DCOM. Переписали основную бизнес-логику по проведению проводок на С++, оформили как DCOM объект под MTS, запустили на тестирование. Может, конечно, у нас руки росли не оттуда, но там, где справлялся 1 MSSQL-сервер нужно было ставить десяток MTS-серверов, чтобы добиться той же производительности при 300 одновременных коннектов. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2005, 11:44 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
Мне кажется руки у вас росли нормально. DCOM - медленная штука. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2005, 13:17 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
Дмитрию Сорокину На ТЗ взглянуть нельзя ? С уважением, Владимир. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2005, 14:01 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
CalmМне кажется руки у вас росли нормально. DCOM - медленная штука. Э... а причем здесь ДКОМ? ДКОМ это всего лишь инфраструктура для удаленных вызовов. В данном решении оно всего лишь что-то вроде транспорта между клиентами и серверами приложений. К вопросам масштабирования имеет отношение связка сервера приложений-МТС-MS SQL. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2005, 14:04 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
Дмитрий Сорокин[quot Пользователь ] При этом года 3-4 назад vs активно игрались с MTS и DCOM. Переписали основную бизнес-логику по проведению проводок на С++, оформили как DCOM объект под MTS, запустили на тестирование. Может, конечно, у нас руки росли не оттуда, но там, где справлялся 1 MSSQL-сервер нужно было ставить десяток MTS-серверов, чтобы добиться той же производительности при 300 одновременных коннектов. А вы действительно видели факт масштабирования? Или просто нужно было еще 10 аппсерверов чтобы получить производительность близкую к двухзвенке? Соответственно, потянула бы такая система 600 клиентов при соответственно 20-30 апп серверах? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2005, 14:24 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
авторДКОМ это всего лишь инфраструктура для удаленных вызовов. В данном решении оно всего лишь что-то вроде транспорта между клиентами и серверами приложений. Разве я сказал что-то, что противоречило бы этому? Подзреваю, что при 300 одновременных пользователей ДКОМ будет недостаточно быстрым транспортом. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2005, 14:39 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
Calm авторДКОМ это всего лишь инфраструктура для удаленных вызовов. В данном решении оно всего лишь что-то вроде транспорта между клиентами и серверами приложений. Разве я сказал что-то, что противоречило бы этому? Подзреваю, что при 300 одновременных пользователей ДКОМ будет недостаточно быстрым транспортом. ОК, признаю тормоз мог быть и на стыке клиент-аппСервер. Но 30 клиентов на АппСервер все таки не выглядит той цифрой на которой это могло произойти. Скорее всего тормоз все таки на стыке АппСервера-МТС-БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2005, 16:18 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
Ну вот, тут ужо без меня ответили. В общем, если руки прямые - проблем нет никаких. Если обратное - хоть трехзвенка, хоть хрен знает что, толку не будет Пользователь2 процессора - 4 гига оперативки - вся база под 10 гиг - и тормозит - если больше 10 клиентов - и что теперь - новый сервер покупать? Нет, лучше 10 (десять) нод под трехзвенку Серьезно - путем все сделать, запросы подправить, блокировки - и все будет хорошо. -- Tygra's -- ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2005, 17:55 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
ВМоисеевДмитрию Сорокину На ТЗ взглянуть нельзя ? С уважением, Владимир. ТЗ? Их тысячи! Эта информационная система начинала создаваться в 1995г! на MSSQL 4.2. Насчет MTS - вот, что тестировалось: Был написан СОМ-класс на С++ (насколько я помню - использовалась ATL, где есть готовый template для таких штук, но я могу ошибаться), в котором было 2 метода - подтверждение и отмена проводок. Логика была практически один к одному перенесена из аналогичных хранимых процедур. Конечно, совсем один к одному не получилось из-за отсутстыия в С++ таких вещей, например, как временные таблицы:), но вся логика и весь flow были сохранены. Класс регистрировался на MTC - серверах (характеристики машин сейчас не помню, вроде 2-х процессорные XEON 700 c 2 GB памяти) и проводились масштабные испытания - на тестовой базе тестовая программа открывет поток за потоком, каждый поток создавал инстанцию класса и проводил тестовые проводки. На самом деле у нас стандартизирован набор разнообразных тестов - разные типы проводок, проводки сегодняшней датой, проводки задним числом и т.д. Потом меряется среднее кол-во проводок в секунду для возрастающего количества соединений. Вообщем, деталей уже не помню, но как мы ни вылизывали сишный код - результат был на порядок хуже прямой работы с MSSQL. Потом мы пробовали просто создавать DCOM-обертки над хранимыми процедурами. Т.е. создается некий функциональный класс, в котором в виде методов описывались хранимые процедуры, а в коде методов эти процедуры вызывались. Результат был конечно лучше, чем вначале, но все равно хуже, чем при прямом использовании хранимых процедур - особенно на таких "быстрых" процедурах, как проведение проводок - там быстродействие доходит до сотен проводок в сек. Но все бы ничего, и было бы интересно навесить "классовую" обертку на хранимые процедуры, но эта невозможность в MTS использовать т.н. stateful объекты! Т.е. значения свойств между вызовами объекта не сохраняются (чтобы их сохранить, надо было извернуться через одно место - либо использовать сессии, либо - таблицы БД либо сам придумай что), в результате чего подобные классы выраждаются в простые библиотеки функций, ничем не лучше хранимых процедур, т.е. ни о каком нормальном ООП в случае таких классов-оберток речи нет. Может, конечно, в DCOM что и изменилось с тех пор - не знаю. Теперь мы делаем что-то похожее на .NET - логика остается на хранимых процедурах, но создаются классы-обертки, генерирущиеся автоматом на основе метаданных о структуре и взаимосвязях таблиц, вьюх, хранимых процедур и т.п. Аналогично есть визуальные классы (для создания интерфейса, пока - win32), генерящиеся тоже на основе метаданных. на самом деле, это, конечно, не просто обертки - там и свой механизм локов и своя система авторизации и механизм раннего оповещения об изменении данных и свое кеширование и ..... Но бизнес-логика остается в хранимых процедурах. Речь не идет о переносе бизнес-логики куда-то на средний слой. Речь идет лишь о том, что вместо набора таблиц, вьюх и процедур программист (а в дальнейшем и продвинутый пользователь) работает с классами, свойствами и методами, т.е. использует объектную библиотеку, являющуюся интерфейсом к БД. В принципе ничто не запрещает использовать эти интерфейсные объекты, например, при написании скриптов на каком нибудь vbscript или С# с последующим запуском локально или на некоем дот-нетовском scripting host. Типа - вот вам и сервер приложений... ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2005, 21:14 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
Дмитрию Сорокину. Спасибо за информацию. Вы правы относительно проводок. Операции диск-память значительно быстрее диск-память-сеть-память. Я больше занимаюсь задачами построением выборок от многих клиентов и их предварительными обработками (некоторая математика, сжатие и шифрование). В этих задачах нет каскадного обращения к другим таблицам базы. Здесь сиьнее загружен процессор, а не тракты ввода/вывода. Хотя многоуровневая модель не отказывается от хранимых процедур. С уважением, Владимир. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2005, 10:19 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
Дмитрию Сорокину Молодцы! Вот это я понимаю, люди грамотные работают. Я еще ни разу не слышал, чтобы кто-то подобное разрабатывал, да что разрабатывал, хотя бы придумал такое. Я такую систему спроектировал для .NET (доберусь ли до реализации не знаю), только я не собираюсь создавать по классу .NET для каждого класса в базе. Один единственный класс .NET, который предоставляет доступ к коллекции атрибутов и к коллекции методов. Набор атрибутов и методов класс получает из метаданных сервера. -------------------- Не учи отца и баста! ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2005, 11:19 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
На данный момент у меня есть реализация этого механизма на Дельфи. Из интерфейса самой программы создаете метаданные, т.е. регистрируете класс, добавляете атрибуты, создаете методы с кодом на T-SQL, затем компилируете и получаете таблицы и процедуры и данный класс уже готов к использованию в системе. Интерфейс даже проектировать не нужно. Сам подхватывает все описания и предоставляет формы. -------------------- Не учи отца и баста! ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2005, 11:24 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
Дмитрию Сорокину. >В принципе ничто не запрещает использовать эти интерфейсные объекты, ... Именно это и сделал на C#. Плюс прозрачная схема доступа клиента к .Net Remote сервисам промежуточных слоев локальной сети из инета через IIS. С уважением, Владимир. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2005, 13:05 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
Old NickНа данный момент у меня есть реализация этого механизма на Дельфи. Из интерфейса самой программы создаете метаданные, т.е. регистрируете класс, добавляете атрибуты, создаете методы с кодом на T-SQL, затем компилируете и получаете таблицы и процедуры и данный класс уже готов к использованию в системе. Интерфейс даже проектировать не нужно. Сам подхватывает все описания и предоставляет формы. -------------------- Не учи отца и баста! У нас несколько по другому. Уже существующие таблицы, вьюхи, хранимые процедуры и т.п. описываются в метаданных - поля - это свойства объекта, ссылки - это тоже свойства, но типа "объект", методы объекта - хранимые процедуры или откомпилированный .NET код (давай, вычисляй свои частные производные!). Можно создавать вычисляемые поля, составные свойства (типа структур - например валютная сумма и обозначение валюты), JOIN можно делать по нескольким полям, есть альтернативные ключи, и т.д. Плюс наследование и полиморфизм, плюс сам объект выступает не только как "одна запись" в БД, но и несет в себе методы навигации и интерфейсы, позволяющие ему работать как источник данных. Плюс свой транзакционный механизм - все изменения накапливаются, а потом одним махом сохраняются в БД. Плюс свои локи. Плюс своя security. Для создания интерфейсов есть понятие визуализаций, которые тоже являются обладают всеми характеристиками объектов, и которые тоже описываются в метаданных (но можно и самим поизвращаться, сделав уникальную визуализацию). Пока разработана WIN32 визуализация, начали работать над WEB. Кое что еще не доделано - надо доделать workflow, когда вводится понятие состояний объекта, в разных состояниях видны лишь определенные свойства и методы, и при этом различные методы в зависимости от их результата переводят объект в другие состояния (вообщем - почти конечный автомат). Не доделан механизм "раннего" оповещения об изменениях в БД (читай-серверные события) и механизм "кеширования" данных, когда лишь часть данных с сервера грузится на клиента, что очень важно для, например, WEB-интерфейса. Вообще мы пытались построить полностью объектно-ориентированный интерфейс к БД со всеми аттрибутами ООП. ИМХО, такой подход позволяет достаточно быстро и, главное, с умом, создавать новые приложения и "рефакторить" старые наработки, когда существующая бизнес-логика и структуры просто описываются в метаданных. Но все это не имеет ничего общего с общепринятой сейчас трехзвенной архитектурой и принудительного выноса бизнес-логики на средний слой. Да, при подобном подходе создается некая объектная оболочка над базой данных, но тут нет ничего общего с N-tier архитектурой SAPа или J2EEшных приложений. Однако мне такой подход кажется более "приближеным к жизни", что-ли. Для меня главным преимуществом многозвенки является возможность "красиво организовать" свое приложение, работать не с таблицами и процедурами, а с объектами. Все таки (ИМХО) ООП по сравнению с классическим "функциональным" программированием имеет кучу преимуществ. Пусть за объектом стоят таблицы и хранимые процедуры - не важно. Важно, что наружу все это выглядит гораздо красивее. Плюс, что не маловажно - инкапсуляция (лучше иметь дело с объектом, чем с кучей хранимых процедур), наследование (есть объект - "клиент", создадим на его основе объект "поставщик"), повторное использование (уже есть объект "клиент", используйте его как справочник в своих приложениях, если надо - наследуйте от его базовой визуализации свою собственную). Плюс быстрота разработки... Такой подход как бы "размывает" границу между клиент-серверными и многозвенными архитектурами, дает клиент-серверному варианту преимущества объектного подхода при сохранении производительности клиент-серверной архитектуры. создает некий промежуточный вариант и позволяет переходить на многозвенку действительно там и тогда, где и когда это необходимо. Хотя все это ИМХО, и, возможно, мы изобретаем велосипед:) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2005, 17:37 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
Дмитрию Сорокину. Кто и где выполняет откомпилированный .Net код и что это такое? Дмитрий, давайте проведем мысленный эксперимент - у нас есть двухзвенная архитектура - ваш навороченный сервер, очень шустрая локальная сеть и такие же шустрые 600 клиентских компьютеров. Включим комп 1 клиента и в цикле смоделируем вызовы тяжелых проводок. Получим мах. производительность для этого случая. Далее подключим еще один копм, затем еще и т.д. Где-то будет (N компов) некоторый оптимум производительности. Зафиксируем это число и предположим что мы имеем эти N app серверов которые оптимально загружают сервер данных. Эти app сервера получают информацию по проводкам из некоторого буфера и сбрасывают результаты туда-же. Где в этой модели понижение производительности?. Каждый занимается своим делом параллельно. Зачем серверу данных заниматься шифрованием выборки? С уважением, Владимир. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2005, 20:08 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
Дмитрий СорокинТеперь мы делаем что-то похожее на .NET - логика остается на хранимых процедурах, но создаются классы-обертки, генерирущиеся автоматом на основе метаданных о структуре и взаимосвязях таблиц, вьюх, хранимых процедур и т.п. Хотелось бы по-подробнее - что из себя представляют классы-обертки. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2005, 08:07 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
Простой рабочий Дмитрий СорокинТеперь мы делаем что-то похожее на .NET - логика остается на хранимых процедурах, но создаются классы-обертки, генерирущиеся автоматом на основе метаданных о структуре и взаимосвязях таблиц, вьюх, хранимых процедур и т.п. Хотелось бы по-подробнее - что из себя представляют классы-обертки. Поподробнее - это надолго:) В приаттаченом файле (это глава "введение" из хелпа для программистов) - находится краткое описание функционала библиотеки BaseObjects, которая как раз и создает объектное представление БД. Кроме этой библиотеки есть еще библиотека VisObjects для создания визуализаций. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2005, 09:55 |
|
|
start [/forum/search_topic.php?author=Murod&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
136ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
78ms |
get tp. blocked users: |
2ms |
others: | 2756ms |
total: | 3036ms |
0 / 0 |