[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: применение php для больших проектов
lovesa
Добрый день, в ближайшее время собираюсь принятся за переписание большого проекта на php, хотел по данному вопросу посоветоваться, а конкретней какурю архитектуру использовать. Проект должен быть стабильным, ожидается порядка 500 запросов в секунду, по этому, как я правильно понимаю архитектура играет ключевую роль. В последнее время много читал про SOA и SOAP PHP, хотел спросить в чем преимущества и недостатки, а так же что бы Вы посоветовали в таком случае? Сам проект должен быть хорошо расширяемым, с возможностью быстрого подключения новых модулей и модификации существующих.



Спустя 16 минут, 37 секунд (22.03.2011 - 13:20) Andrey65 написал(а):
SOAP этож вроде как не архитектура, а метод запроса увеличивает объём и снижает скорость обработки.

Спустя 20 минут, 56 секунд (22.03.2011 - 13:41) lovesa написал(а):
Как я понимаю SOA это архитектура, а SOAP это протокол для реализации SOA

Спустя 37 минут, 8 секунд (22.03.2011 - 14:18) sergeiss написал(а):
Цитата (lovesa @ 22.03.2011 - 14:03)
Добрый день, в ближайшее время собираюсь принятся за переписание большого проекта на php, хотел по данному вопросу посоветоваться, а конкретней какую архитектуру использовать....

Я предлагаю тебе озвучть не общие слова, а как именно ты видишь архитектуру этого приложения. По возможности безо всяких слов типа SOA, MVC и других. Тогда можно будет говорить более определенно.

А сейчас твой вопрос звучит так: "Можно мне до Москвы на поезде доехать?".
Ответ "Можно" - он верный? А если ты в Якутске находишься, в котором нету железной дороги? А если ты вообще в Австралии? Это нужно изначально уточнять, в вопросе.

Короче... Говори проще smile.gif, и тогда выше вероятность, что тебе ответят по делу.

Спустя 31 минута, 46 секунд (22.03.2011 - 14:50) lovesa написал(а):
Сама система представляет собой 2 объекта, служебный и пользовательский. Служебный объект, это программа принимающая данные с неких устройств посредством http запросов, сохраняющая все данные в базу данных. Пользовательская же часть представляет из себя интерфейс представления этих данных в реальном режиме. Нагрузка на служебную часть достаточно высокая, как я уже писал порядка 500 запросов за секунду. На данный момент я вижу что вполне было бы неплохо в данном случае возможно осуществить так называемый двуядерный подход, т.е использовать 2 базы данных, служебную и пользовательскую и соответсвенно производитель периодическу асинхронную репликацию служебной базы в пользовательскую дабы сделать служебную часть совершенно независимой от пользовательской и как соответсвие решить проблему подтормаживания пользовательской части при пиковых нагрузках. Что еще могли бы посоветовать по этому поводу?

Спустя 7 часов, 19 минут, 39 секунд (22.03.2011 - 22:09) sergeiss написал(а):
lovesa - 500 запросов в секунду??? Это люди будут кликать или какие-то приборы что-то присылать? Можно чуть подробнее: что за запросы, каков объем данных с одного запроса и/или за секунду и т.д. и т.п.

Спустя 1 час, 43 минуты, 19 секунд (22.03.2011 - 23:53) Guest написал(а):
приборы - трекеры, установленные на грузовиках по всему миру по сути, конечно серверов у нас не 1 и не 2 =) и не в одной стране, но нагрузка порядочная, объем трафика с одного прибора небольшой соответственно, передать координаты, получить по возможности настройки.

Спустя 5 часов, 26 минут, 28 секунд (23.03.2011 - 05:19) kirik написал(а):
Цитата (Guest @ 22.03.2011 - 15:53)
конечно серверов у нас не 1 и не 2

Если серверов много, и они в разных местах, то почему бы не использовать их как прослойку между трэкерами и основным сервером?
На промежуточных серверах - кэш (как самый обычный php+redis (чтобы более менее гарантировать сохранность данных при выключении сервера)). Каждые, допустим 5 минут, промежуточные сервера синхранизируются с основным, который собственно и будет основной базой данных, и на котором будут висеть пользовательская и служебная части.
Итого, если вы говорите что ожидается порядка 500 запросов в секунду, то имеяя хотя бы 10 промежуточных серверов мы получим снижение нагрузки в 10 раз на каждый из них, и в 50 раз на основной.
Насколько я понимаю, трэкер лишь ведет лог, поэтому промежуточные сервера не будут подвергаться большой нагрузке. Даже можно забить на redis, и писать данные в файлы прямо на жесткий диск, а новые файлы создавать раз в 5 минут.
Вообще реализаций можно навыдумывать кучу. Тут нужно исходить из возможностей и потребностей smile.gif

Спустя 9 часов, 7 минут, 6 секунд (23.03.2011 - 14:26) lovesa написал(а):
в виду экономических соображений =) сервера используют регианально, в таком случае промежуточные сервера будут слишком затратны

Спустя 8 часов, 49 минут, 18 секунд (23.03.2011 - 23:16) kirik написал(а):
lovesa
Если брать в рассчёт один сервер, то не думаю что машина-средней-конфигурации справится с нагрузкой, и второе - прсто не хватит канала на 500 запросов в секунду..
И не должен стоять вопрос "справится ли php". Тут уже может тупо не справиться веб сервер, не говоря уже о СУБД.
Если пофантазировать, то можно написать свой простой спец. сервер (на каком-нибудь asm c++ или erlang), который не будет ничем заниматься кроме как обслуживанием запросов, и сладированием данных в память. Потом из памяти раз в N минут (или как начнёт память кончаться) сливать данные на диск.
НО.. даже если это будет работать мега быстро, и хватит мощностей машины - всё упрется в канал, или в пропускную способность ethernet карты.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.