Форум программистов, компьютерный форум, киберфорум
Java EE (J2EE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
274 / 178 / 30
Регистрация: 16.03.2017
Сообщений: 1,631

Набор технологий

30.04.2017, 14:18. Показов 1221. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, посоветуйте пли-и-из новичку. (хотел назвать тему "набор вопросов", но форум запретил)

Есть пара задумок, теперь подбираю технологии и выясняю возможно ли это... и как это делают ОБЫЧНО (по "правилам")?

1) Есть (пишется) программа на спринге. Хочу запустить на сервере несколько версий (на разные порты) и "переключать" их в один клик. Максимально быстро.

Не по теме:

Задумка пошла из того что сервер часто обновляется/исправляется/допиливается и надо выкладывать свежие версии на сервер. Запуск спринга не мгновенный (10-20 секунд на "пустышке" в 27 мб, а что будет при развитии - страшно представить), а большой разрыв во времени СИЛЬНО помешает клиентам (у клиентов программа сидит, а не человек).


Я вижу решением поставить Apache или Nginx и настроить в нем "ретранслятор" на определенный URL адрес. Быстрая замена ретранслятора и перезагрузка сервера (в Nginx) вроде должна решить задачу. Я прав??? Или есть другое, более "грамотное" решение? Какой из серверов (Apache, Nginx или какой другой) лучше всего подойдут для подобной задачи?

Можно ли вообще перебросить клиента на c www.my.com/1.zip на www.my.com:3002/1.zip без обработки на стороне клиента? На уровне протоколов? Как это сделать на js в сайте я знаю, но если клиенту надо скачать файл с сайта (через что-нибудь вроде curl), то (желательно) надо дать ему докачать (со старой версии программы), а не разорвать связь перегрузив Nginx.

2) Можно ли (и как называется технология или хотя-бы "слово для гугления") на спринге создавать динамические URL в определенной "папке"? Например www.my.com/users/user123/foto192301923#asdf где все что после /users/* уже обрабатывается в коде java, а не в тегах спринга! То есть задать в контроллере "слушателя" на что-то вроде "/users/*"!
Я (до этого) писал лишь простые контролеры вроде:

Java
1
2
    @RequestMapping(value = {"/", "/config"}, method = RequestMethod.GET)
    public String getConfig(Model model, HttpServletRequest request) {
А в примерах встречал лишь "жесткие" пути вроде "/ex/foos/{fooid}/bar/{barid}"! А мне нужен "гибкий"... полностью программный!

Не по теме:

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



3) (я уже задавал вопрос, и так и не получил нормального ответа - попробую еще раз - мне это ОЧЕНЬ важно) Как сделать ДВЕ Spring-программы и наладить "общение" между ними? Есть ли готовые решения для этого? Как это ОБЫЧНО делают? Рест-общение? (полноценное API писать?) Сокет-общение? Может есть какие-то Java-технологии с "общей памятью"? Или можно одну из программ использовать как подключаему "библиотеку" (что-то вроде DLL или OLE-серверов в Windows)???

Не по теме:

Сейчас задумал написать чат-бота для телеграмм в виде отдельной программы, которая вполне автономна и удерживает связь с Телеграмм-сервером. Но когда запущена "вторая" программа, то она перехватывает управление обработкой запросов и генерацией ответов на себя. Вторую можно в любой момент выключить, обновить, включить или просто перегрузить... Первая должна всегда быть онлайн.

0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.04.2017, 14:18
Ответы с готовыми решениями:

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

Изучение технологий реализующих представление
Глаза разбегаются между различного рода холиварами и устаревшими технологиями. Из того что я нашел нужно учить JSP , JSTL и Apache Tiles....

Основы web-технологий
Хочу пройти курсы по java, для зачисления на курс требуется сдать тест на основы web-технологий , что под этим понимается ? Что нужно...

14
Эксперт Java
378 / 370 / 114
Регистрация: 30.06.2010
Сообщений: 1,445
01.05.2017, 10:10
Тебе сюда, но скажу сразу, с твоими знаниями (по вопросам на этом форуме) тебе на любых технологиях это будет очень сложно реализовать
0
274 / 178 / 30
Регистрация: 16.03.2017
Сообщений: 1,631
01.05.2017, 19:35  [ТС]
Цитата Сообщение от LeX Посмотреть сообщение
Тебе сюда, но скажу сразу, с твоими знаниями (по вопросам на этом форуме) тебе на любых технологиях это будет очень сложно реализовать
я там был! мне "общие" ответы нужны! уровня "да возможно - нет, тяжело" или "я бы предпочел апач/нгинкс/ххххх" или "гугли ..."
У меня стадия "проектирования" проекта! "Работа с бумажкой". Когда составлю общий план действий - буду изучать определенные технологии в том числе и по Вашей ссылке...

Например в инете не встречал примеров реализации
@RequestMapping(value = {"/{}/{}/{}/{}/{}/{}/{}/{}/{}/{}/{}/{}/{}/{}/{}/{}/{}/{}/"}
где параметры пути передаются арреем/мапой, а не фиксированными именами.
Я в спринг пришел (по веб-направлению) из РНР и Ноды(чистой, а не express), а там были "парсеры пути", а не жесткие фильтры.

да и по 3) я уже много гуглю. Пока ничего работающего не нашел. Не посылай на ссылки! (ЕСЛИ САМ СТАЛКИВАЛСЯ) дай название технологии!
1) рест+свое API
2) сокеты+свое API
3) нечто готовое и стандартизированное в Spring
(программы лежат рядом, в одной папочке! и прежде чем начать тупо писать, а потом переделывать я хочу сразу правильно спроектировать, а не все на примерах helloword изучить из туториалов, а потом выбирать)

я спрашиваю ПРОФИ в Spring по конкретным вопросам! И мне нужны краткие ответы, а не ссылки на учебники!

2LeX
Кликните здесь для просмотра всего текста
Не суди по активности "на этом форуме"! Я недавно сменил профиль(репутация >2000, больше 4х лет) вместе с новой работой/профессией! я не веб-разработчик, но теперь буду! но больше 15 лет опыта программистом на МНОГИХ языках (в основном базы данных и андроид). Один сложный сайт-визитка на PHP с нуля и одно сложное веб-API на нем-же. Работал с чужим админом с ограниченным доступом (доступ на сайт только через FTP). Опыта в линукс - нет (пару месяцев админил FreeBSD лет 15 назад), как и опыта настройки хостингов. У меня уже есть хостинг, я настроил там "LAMP", ftp, putty через OpenSSH и запустил свой первый проект на Spring (пара страниц с менюшкой и авторизацией на сессиях).

Если тебе кто-то задает ЗДЕСЬ вопрос, то он хочет получить ответы на СВОИ вопросы, а не общие ссылки на ОГРОМНЫЕ учебники или советы "подумать головой"
0
Эксперт Java
378 / 370 / 114
Регистрация: 30.06.2010
Сообщений: 1,445
02.05.2017, 21:42
по первому пункту я тебе ответил: все что тебе надо - spring cloud platform, все о чем ты написал в 1 пункте там решено

по второму - это же очевидно что для получения значений из url надо задать паттерн парсинга и на каком бы то не было языке программирования то что ты хочешь не реализуется
Цитата Сообщение от andyj Посмотреть сообщение
www.my.com/users/user123/foto192301923#asdf
Цитата Сообщение от andyj Посмотреть сообщение
@RequestMapping(value = {"/{}/{}/{}/{}/{}/{}/{}/{}/{}/{}/{}/{}/{}/{}/{}/{}/{}/{}/"}
вообще у меня возникает такое ощущение что ты делаешь не то, тебе надо использовать скорее параметры запроса
www.my.com/users?user=123&foto=192301923
тогда в контроллере что бы их получить тебе надо добавить параметр
Java
1
@RequestParam Map<String,String> requestParams
Добавлено через 7 минут
по третьему:
1. rest + resttemplate
2. шина данных, это может быть amqp совместимый брокер или rabbitmq (я бы посоветовал именно его)
3. rmi

я перечислил все в порядке простоты и удобства, третий - это вариант рабочий, но старый и тяжелый, почти никто не использует
первый - легкий и простой, второй - похож на первый, только в плане rest у тебя есть синхронный запрос-ответ (работа с resttemplate), т.е. ты ждешь что ответит тебе другой компонент системы, во втором случае работа уже идет с message source, т.е. с асинхронным каналом в котором общение идет через события, т.е. по факту запроса ответ не ожидается
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
02.05.2017, 22:46
Цитата Сообщение от andyj Посмотреть сообщение
Можно ли (и как называется технология или хотя-бы "слово для гугления") на спринге создавать динамические URL в определенной "папке"? Например https://www.my.com/users/user1... 01923#asdf где все что после /users/* уже обрабатывается в коде java, а не в тегах спринга!
Можно задать паттерн. Например в Jersey
Аннотация на уровне класса
Java
1
@Path("/users")
Аннотация на уровне метода
Java
1
2
3
4
@GET
@Path("/{subResources:.*}")
@Produces(MediaType.APPLICATION_JSON)
public Response genericHandler() { return ok(); }
таким образом в этот метод будут приходить все гет запросы на /users/*
1
274 / 178 / 30
Регистрация: 16.03.2017
Сообщений: 1,631
03.05.2017, 08:17  [ТС]
Цитата Сообщение от LeX Посмотреть сообщение
по первому пункту я тебе ответил: все что тебе надо - spring cloud platform, все о чем ты написал в 1 пункте там решено
Ты мой вопрос вообще читал???
речь идет о "мягком" процессе подмены программы целиком! и плавного отключения прошлой версии с возможностью дать ей завершить долгие обработки... вроде отдачи сгенерированного 1.zip в десятки мегабайт через слабый инет-канал.

Цитата Сообщение от LeX Посмотреть сообщение
вообще у меня возникает такое ощущение что ты делаешь не то, тебе надо использовать
опять меняешь мои условия в вопросе? я тебе уже объяснил, что (я не студент и) задаю в вопросах именно то что мне нужно! Если бы дело касалось "параметров" в url я бы не задавал сюда вопрос!
...кстати... в РНР+nginx подобное работало!!!

3) спасибо! погуглю...
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
03.05.2017, 09:21
Лучший ответ Сообщение было отмечено andyj как решение

Решение

Цитата Сообщение от andyj Посмотреть сообщение
речь идет о "мягком" процессе подмены программы целиком! и плавного отключения прошлой версии с возможностью дать ей завершить долгие обработки
проблема решается HAProxy и правильно спроектированными двумя инстансами программы. Когда нужно сменить версию без downtime, сначала опускается сервер 1, и весь трафик сидит на сервере 2, затем сервер 1 с обновленной программой поднимается, весь трафик направляется туда. Тоже самое для сервера 2.

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

Насчет того чтобы подождать окончания долгих операций это архитектура вашей программы и настройки HAProxy.
1
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
03.05.2017, 09:31
Цитата Сообщение от andyj Посмотреть сообщение
программы целиком
микросервисы позволяют менять программу не целиком, а только там, где надо
Цитата Сообщение от andyj Посмотреть сообщение
именно то что мне нужно
вообще, впечатление, что ты плохо понимаешь, что тебе нужно, есть не только у LeX
0
Эксперт Java
378 / 370 / 114
Регистрация: 30.06.2010
Сообщений: 1,445
03.05.2017, 09:31
Цитата Сообщение от andyj Посмотреть сообщение
Ты мой вопрос вообще читал???
представь - читал, если ты не понимаешь ответов на твои вопросы еще не значит что люди не понимают или не читают твои вопросы
Цитата Сообщение от andyj Посмотреть сообщение
речь идет о "мягком" процессе подмены программы целиком! и плавного отключения прошлой версии с возможностью дать ей завершить долгие обработки... вроде отдачи сгенерированного 1.zip в десятки мегабайт через слабый инет-канал.
KEKCoGEN тебе рассказал как это делается в механике
Цитата Сообщение от KEKCoGEN Посмотреть сообщение
проблема решается HAProxy и правильно спроектированными двумя инстансами программы. Когда нужно сменить версию без downtime, сначала опускается сервер 1, и весь трафик сидит на сервере 2, затем сервер 1 с обновленной программой поднимается, весь трафик направляется туда. Тоже самое для сервера 2.
теперь про spring cloud - поднимается eureka/zuul/ribbon, т.е. service registry и proxy, затем поднимается несколько инстансов приложения и собственно при обновлении сначала подменяется один, потом другой, со всеми ожиданиями завершения операции, на сколько помню там даже можно настроить что бы proxy не пускала на останавливаемый инстанс
1
274 / 178 / 30
Регистрация: 16.03.2017
Сообщений: 1,631
03.05.2017, 09:38  [ТС]
Цитата Сообщение от LeX Посмотреть сообщение
теперь про spring cloud - поднимается eureka/zuul/ribbon, т.е. service registry и proxy, затем поднимается несколько инстансов приложения и собственно при обновлении сначала подменяется один, потом другой, со всеми ожиданиями завершения операции, на сколько помню там даже можно настроить что бы proxy не пускала на останавливаемый инстанс
Это мне и надо было! А не ссылка не "технологию микросервисов" или технологию "spring cloud" (вообще складывается впечатление что все ответчики на разных форумах пытаются одним этим термином ответить на все мои вопросы - это как "java в помощь" или "почитай про компьютеры")
0
$ su
 Аватар для ntlinuxnt
1605 / 520 / 97
Регистрация: 18.11.2010
Сообщений: 2,807
Записей в блоге: 2
03.05.2017, 12:55
Тык
Пару лет назад натыкался еле нашел, возможно это то что вам нужно.
0
274 / 178 / 30
Регистрация: 16.03.2017
Сообщений: 1,631
03.05.2017, 13:45  [ТС]
Цитата Сообщение от ntlinuxnt Посмотреть сообщение
Тык
Пару лет назад натыкался еле нашел, возможно это то что вам нужно.
Спасибо конечно (за не известную пока мне технологию)... но ("доспрашиваю") - к какому вопросу это ответ??? ("спасибо" за "-35")

если это ответ на 3) то мне не нужна технология динамической компиляции! (перечитайте вопрос) И "плагины" были мне нужны лишь как вариант общения двух НИЧЕМ НЕ СВЯЗАННЫХ программ более быстрый/нативный чем написание полноценного rest-api.

Не по теме:

Мне надо вызвать функции/метода в ЧУЖОЙ программе и получить результат с кучей параметров - желательно вообще сразу в класс/бин - без написания целого клиент-сервера с кучей защит от "внешнего" просмотра ссылок и с кучей "контроллеров" с полноценным "протоколом".



Не по теме:

Между новой 1С8 и MSSQL (недавно вычитал) есть "режим общей памяти" для повышения скорости на порядки - когда исключают необходимость каждый раз через сокет отправлять серверу запросы(на этом-же компе), получать таблицу с ответом и парсить ее. Я искал подобную технологию и в Java/Spring поднятую до уровня "корпоративного стандарта"(а не для собирания "на коленке" по Хабру).



а если на 1) то перезагрузка частей кода не заменит "плавный переход на новую версию без перезагрузки программы". И LeX с KEKCoGEN уже не плохо объяснили необходимые технологии... (сейчас гуглю их)
0
$ su
 Аватар для ntlinuxnt
1605 / 520 / 97
Регистрация: 18.11.2010
Сообщений: 2,807
Записей в блоге: 2
03.05.2017, 17:34
Цитата Сообщение от andyj Посмотреть сообщение
плавный переход на новую версию без перезагрузки программы
На это конечно.
0
274 / 178 / 30
Регистрация: 16.03.2017
Сообщений: 1,631
03.05.2017, 17:47  [ТС]
Цитата Сообщение от ntlinuxnt Посмотреть сообщение
На это конечно.
То есть предлагаешь полноценную программу с кучей новых ресурсов(встроенные картинки, css, темплейты, и тд - в статье про них ни слова!), измененных методов(добавил/убрал/изменил тип параметра в одной функции, а ее использовании в 100 других классах), классов, и т.д. подменять "пофайлово" через плагины??? Да и еще (судя по статье) на сервере настроить целую систему компиляции/сборки и хранить исходники в открытом коде??? весело... Лучше послушай KEKCoGEN и почитай про HAProxy...
0
$ su
 Аватар для ntlinuxnt
1605 / 520 / 97
Регистрация: 18.11.2010
Сообщений: 2,807
Записей в блоге: 2
03.05.2017, 18:27
Мы с вами на ты не переходили, будете хамить опущу карму еще ниже. То что вы не грамотны в этой области я уже понял, и кого мне слушать я сам разберусь, не я тут вопросы задаю. То что вам не нравится мой ответ/рекомендация называйте как хотите, никого кроме вас не волнует.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.05.2017, 18:27
Помогаю со студенческими работами здесь

Java и веб - стек технологий
Достаточно долгое время занимаюсь вебом, но с пхп. Тут выбор веб сервера достаточно прост, апач и/или нжинкс, в зависимости от требований. ...

Аналогии технологий Java и .NET
Здравствуйте уважаемые форумчане! Напишите пожалуйста аналогии технологий платформы .NET в Java например: Windows Forms --&gt; Swing ...

Информация о видеокарте посредством технологий Java
Здравствуйте! У меня есть задача - программно получить информацию о видеокарте посредством Java. В открытом интернете ответа на вопрос не...

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

Хочу начать изучение серверных технологий Java
Уважаемые коллеги. Хочу заняться на досуге изучением серверных технологий Java (Servlet, JSP). В связи с этим возникло несколько...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru