как настроить сервер Flashcards Preview

Java > как настроить сервер > Flashcards

Flashcards in как настроить сервер Deck (51)
Loading flashcards...
1

Servlet

Каждый сервлет – реализация интерфейса Servlet
Сервлет живет и умирает в пределах процесса сервера.
Три метода, определяющих жизненный цикл сервлета:
public void init(ServletConfig config);
service(ServletRequest request, ServletResponse response) ;
destroy() вызывается перед удалением экземпляра(дает возможность очистить память и освободить ресурсы и соединения)
GetServletInfo() -возвращает инфо о сервлете
GetServletConfig() -возвращает объект содержащий список парамеров сервлета

параметры для сервлета(ServletConfig ) заносятся в web.xml

Класс ServletRequest
Содержит параметры сервлета, аттрибуты контекста и входной поток
getRemoteAdress()
getRemoteHost()

Класс ServletResponse
Содержит выходной поток
getWriter() – возвращает поток вывода (объект java.io.PrintWriter)

интерфейс HttpServlet расширяет javax.servlet.GenericServlet
методы:
doGet(HttpServletRequest a, HttpServletResponse b)
doPost(HttpServletRequest a, HttpServletResponse b)
doPut(HttpServletRequest a, HttpServletResponse b)
duDelete(HttpServletRequest a, HttpServletResponse b)
doOptions()
doTrace()
(есть и doHead() – но он закрытый)
И два метода service, один публичный, другой protected. Именно в закрытом service методе в сервлете решается какой запрос нужно обработать(get, post или др.)
Если указанный метод отсутствует в сервлете, в ответ возвращается ошибка HTTP 405.

2

В чем разница между GenericServlet, HttpServlet и сервлета?

Servlet - это интерфейс, определяющий, что должен выполнять сервлет. он обслуживает клиентский запрос и получает ответ от сервера. Сервлеты выполняются как поток в веб-контейнере, а не в отдельном процессе ОС.В первый раз при первом запросе создается только один объект, другой запрос использует один и тот же объект.
Сервлет независим от платформы.

GenericServlet - это просто общий, не зависящий от протокола сервлет.

HttpServlet - это сервлет, привязанный специально к протоколу HTTP.ны расширить HttpServlet для реализации веб-уровня приложения.Как правило, все, кодирующие этот API, используют HttpServlet для реализации веб-служб HTTP, Метод service, как правило, переопределяется, чтобы иметь возможность различать стандартные методы запросов, получаемые от Web-браузера клиента(get, post и т.д)

Вы можете реализовать Servlet, если вы пишете свой собственный контейнер или обрабатываете все самостоятельно. Вы можете расширить GenericServlet, чтобы обрабатывать другой протокол.

3

HttpServletRequest

При каждом вызове методы doGet и doPost класса HttpServlet принимают в качестве параметра объект, который реализует интерфейс HttpServletRequest. Web-сервер, который исполняет сервлет, создает объект HttpServletRequest и передает его методу service сервлета (который в свою очередь передает его методу doGet или doPost). Данный объект содержит запрос, поступивший от клиента.
Имеет методы по получениям параметров, куков, сессии и т.д

4

HttpServletResponse

При каждом обращении к сервлету методы doGet и doPost класса HttpServlet принимают объект, который реализует интерфейс HttpServletResponse. Web-сервер, который исполняет сервлет, создает объект HttpServletResponse и передает его методу service сервлета (который в свою очередь передает его методу doGet или doPost). Объект HttpServletResponse описывает ответ клиенту.
ИЗ методов это: addCookie, getOutputStream(бинарного потока ), getWriter(символьного потока),setContentType

5

Сервлет-контейнер и Сервер приложений

Сервлет-контейнер поддерживает только API сервлета (включая JSP, JSTL).

Сервер приложений поддерживает весь JavaEE - EJB, JMS, CDI, JTA, API сервлета (включая JSP, JSTL) и т.д.

6

Как работает Сервлет-контейнер и что такое ServletContext

Контейнер сервлетов — программа, представляющая собой сервер, который занимается системной поддержкой сервлетов и обеспечивает их жизненный цикл в соответствии с правилами
Когда контейнер сервлета (например Apache Tomcat) запустится, он развернет и загрузит все свои веб-приложения. Когда веб-приложение загружается, контейнер сервлета создает ServletContext один раз и хранит его в памяти сервера. Файл веб-приложения web.xml анализируется,и каждый найденный , и (или каждый класс, аннотированный с помощью @WebServlet, @WebFilter и @WebListener соответственно) создается один раз и сохраняется в серверной памяти. Для каждого созданного фильтра его метод init() вызывается с помощью нового FilterConfig.
Когда контейнер сервлета отключается, он выгружает все веб-приложения, вызывает метод destroy() всех его инициализированных сервлетов и фильтров.
ServletContext живет до тех пор, пока работает веб-приложение. Он используется всеми запросами во всех сеансах.
сервлеты и фильтры разделяются между всеми запросами и ели ты держить обьект в doGet то он потокобезопасен, а если это общий обьект на весь HTTP сервлет - то туда имеют доступ все потоки

7

соккет

API-интерфейсы Socket - это абстракция низкого уровня (транспортный уровень), с помощью которой приложение Java взаимодействует с сетью
Сокет и связанные с ним API поддерживают надежный поток байтов и ненадежные службы обмена сообщениями. Они обычно используются для TCP/IP и UDP/IP, хотя другие сетевые протокольные стеки могут (по крайней мере теоретически) поддерживаться.

RMI предназначен для высокоуровневых распределенных вычислений Java-Java.
Сервлеты предназначены для реализации веб-сайтов и веб-сервисов.

8

tomcat

контейнер сервлетов.

9

установка tomcat

Скачать распаковать.
Перед запуском необходимо прописать переменные среды CATALINA_HOME и JAVA_HOME.
открываете командную строку, переходите в каталог с tomcat в папку bin, там есть два файла, startup.bat и shutdown.bat. Первый включает, второй выключает наш сервер.
идём в браузер и открываем адрес localhost:8080
Конфигурация сервера производится с помощью *.xml файлов, находящихся в папке conf в корневом каталоге tomcat. Документация на сайте.
В корне tomcat есть папка webapps, которая ждёт-не дождётся пока ей кто ни будь не закинет файл с расширением war. war файлы – это специальные, так называемые web archives.

10

Отличия Tomcat oот Jboss

JBoss — это реализация спецификации JavaEE (контейнер для EAR- и WAR-приложений).
Tomcat — это частичная реализация JavaEE в той её части, которая включает Web-приложения (контейнер для WAR).

Tomcat - это только контейнер сервлетов, то есть он реализует только сервлеты и спецификацию jsp. Glassfish и JBoss - это полноценные серверы Java EE (включая такие вещи, как EJB, JMS,...), а Glassfish - эталонная реализация последнего стека Java EE 6, но JBoss в 2010 году еще не полностью его поддерживала.

11

Если есть 100 одновременных запросов на сервер к синглетон приложению, что произойдет

В общем, это зависит от контейнера сервлета. Большинство из них, однако, многопоточны. Они будут вызывать doGet() 100 раз, в нескольких потоках, и поэтому несколько потоков могут одновременно использовать один и тот же объект сервлета. Таким образом, вы должны сделать свои сервлеты потокобезопасными, или ваш сервлет, похоже, будет работать при низкой нагрузке, но затем таинственно разваливается, когда вы начнете получать больше запросов.

12

Apache Lucene

библиотека для построения поисковых систем. Все, что она может, — только индексировать и искать. А API для ввода данных, для поисковых запросов, кластеризация и прочее — это все отдается на откуп «обертке».lasticsearch — это на самом деле не вполне самостоятельный поиск. Это, скорее, красивая обертка над библиотекой Apache Lucene

13

Что нам дает Elasticsearch?

Масштабируемость и отказоустойчивость. Elasticsearch легко масштабируется. К уже имеющейся системе можно на ходу добавлять новые серверы, и поисковый движок сможет сам распределить на них нагрузку. При этом данные будут распределены таким образом, что при отказе какой-то из нод они не будут утеряны и сама поисковая система продолжит работу без сбоев.

На самом деле оно даже работает. В хипстерском стиле «чувак, вот тебе три команды — пользуйся ими и, пожалуйста, не задумывайся, какой ад происходит внутри». И часто это прокатывает. Новые ноды подключаются буквально парой строчек в конфиге, почти как у Redis

Мультиарендность (англ. multitenancy) — возможность организовать несколько различных поисковых систем в рамках одного объекта Elasticsearch. ситуации, когда систем поиска должно быть больше одной. Это либо мультиязычные системы, либо системы, где есть определенное количество пользователей, которым нужно предоставлять возможность поиска по их персональным данным.
Elasticsearch позволяет загружать в него обычный JSON-объект, а далее он уже сам все проиндексирует, добавит в базу поиска. Позволяет не заморачиваться слишком сильно над структурой данных при быстром прототипировании.

14

CI Jenkins И GitLab

веб-сервисы для сборки и тестирования программного обеспечения

15

Redis

Redis это размещаемое в памяти хранилище ключ-значение, обычно используемое для кэшей и подобных механизмов ускорения сетевых приложений. Мы, тем не менее, храним все наши данные в Redis — в нашей главной базе данны

Вы вынуждены умещать все свои данные в памяти, и…
— Если сервер откажет между двумя синхронизациями с диском — вы потеряете всё что сидело в памяти.

Из-за этих двух проблем Redis обосновался в компактной нише в качестве временного кэша для данных которыми вы можете пожертвовать, но не главного хранилища данных. Предоставляя быстрый доступ к часто необходимым данным с возможностью перестроения при необходимости.

16

Docker

это такой новомодный способ изоляции ваших приложений друг от друга с помощью linux namespaces. Контейнер состоит из слоев, т.е. из слепков состояний файловой системы. Внутри контейнера этот процесс имеет pid=1.
Существуют публичные и приватные хранилки официальных и неофициальных образов. Они называются docker registry. Самый популярный из них — Docker hub. Когда вы докеризуете какой-либо сервис, сходите сначала на хаб и посмотрите, а не сделал ли это кто-то уже за вас?
Кроме публичных registry существуют еще и приватные — платные и бесплатные. Платные вам понадобятся, когда вы в замучавшись обуслуживанием воскликните «да пусть вот эти ребята следят за всей этой слоёной docker-вакханалией в этих ваших registry». И правда, когда вы активно пользуетесь при DevOps докером, когда люди или автоматика билдит сотни контейнеров, то рано или поздно у вас начнет подгорать от того как это чистить и обслуживать.
Не все конечно так плохо, естественно. Для десятка человек и пары билдов в день подойдет и свой registry. Для личного пользования тем более.
Зачем может пригодиться registry? это единое место хранения и обмена контейнерами между вами, другими людьми или автоматикой.
Докер образ (image) — это некоторый набор слоёв. Каждый слой — результат работы команды в Dockerfile. Грубо говоря образ — это шаблон на основе которого вы будете запускать контейнеры. Все что запускается на основе этого образа есть контейнер, или инстанс. т.е. с одного образа можно запустить несколько одинаковых копий этого образа — контейнеров.
Для создания своих контейнеров существует механизм сборки — docker build. Он использует набор инструкций в Dockerfile для сборки вашего собственного образа. При сборке контейнера внутри используется оболочка sh и ваши команды исполняются в ней.

17

хост

любое устройство, предоставляющее сервисы формата «клиент-сервер» в режиме сервера

18

Kubernetes

для управления кластером контейнеров Linux как единой системой. Kubernetes управляет и запускает контейнеры Docker на большом количестве хостов, а так же обеспечивает совместное размещение и репликацию большого количества контейнеров.

19

В каких условиях могут работать контейнеры Docker?

на всех основных дистрибутивах Linux, Microsoft Windows и на любой инфраструктуре, включая виртуальные машины, bare-metal и в облаке.

20

Где данные приложения находятся на Docker?

Данные приложения не хранятся в контейнере. Он живет в томе Docker, который разделяется между 1-N контейнерами, как определено архитектурой приложения. Sysadmins резервирует объем данных и забывает о контейнере.

21

Как можно запатчить докер?

Админы обновляют существующее изображение Docker, останавливают свои запущенные контейнеры и запускают новые. Поскольку контейнер можно разделить на несколько секунд, эти обновления выполняются экспоненциально быстрее, чем с виртуальными машинами.

22

Могут ли контейнерные службы взаимодействовать с службами на базе VM? в докер

Да. Запуск приложения в комплекте контейнеров Docker не препятствует тому, чтобы он взаимодействовал со службами, запущенными на виртуальной машине.
Например, вашему приложению может потребоваться взаимодействие с базой данных, которая находится на виртуальной машине. При условии правильной работы сети ваше приложение может беспрепятственно взаимодействовать с этой базой данных.

23

Каковы варианты использования Docker?

* Контейнер для традиционных приложений (преимущество - изоляция контейнеров, переносимость, снижение затрат)
* Непрерывная интеграция и развертывание (CI / CD) (преимущества - это упрощение времени тестирования CI, масштабирование инфраструктуры тестирования CI, интеграция - API, открытые интерфейсы и webhooks позволяют легко интегрировать в существующие инструменты и процессы для дальнейшей автоматизации конвейера и автоматизации приложений, экономя время и улучшая качество программного обеспечения, мгновенно создавая хосты и контейнеры Docker для параллельной параллельной работы тестов.)
* Microservices (преимущества - разработчики могут свободно использовать нужные инструменты и стеки без создания конфликтов приложений, ускорения темпов инноваций новых функций программного обеспечения, обеспечения согласованности в приложении env.)

24

image в docker

Изображение представляет собой легкий, автономный исполняемый пакет, включающий все необходимое для запуска части программного обеспечения, включая код, среду выполнения, библиотеки, переменные среды и файлы конфигурации.

25

Что такое контейнер в докер?

Контейнер представляет собой экземпляр времени выполнения изображения - то, что изображение становится в памяти при фактическом выполнении. Он по умолчанию полностью изолирован от среды хоста, но только для доступа к файлам хоста и портам, если он настроен для этого.

26

почему докер контейнеры имеют лучшие рабочие характеристики, чем виртуальные машины?

Контейнеры запускают приложения изначально на ядре хост-машины. Они обладают более высокими характеристиками производительности, чем виртуальные машины, которые получают виртуальный доступ к ресурсам хоста через гипервизор. Контейнеры могут получить собственный доступ, каждый из которых работает в дискретном процессе, не занимая больше памяти, чем любой другой исполняемый файл.

27

Как докер контейнеры работают

Контейнеры могут совместно использовать одно ядро, и единственной информацией, которая должна быть в изображении контейнера, является исполняемый файл и его зависимости от пакета, которые никогда не должны устанавливаться в главной системе. Эти процессы выполняются как собственные процессы, и вы можете управлять ими индивидуально, выполняя команды, такие как docker ps, - так же, как вы будете запускать ps в Linux, чтобы увидеть активные процессы. Наконец, поскольку они содержат все их зависимости, нет никакого переплетения конфигурации; контейнерное приложение «работает где угодно».

28

Dockerfile

Dockerfile определит, что происходит в среде внутри вашего контейнера. Доступ к таким ресурсам, как сетевые интерфейсы и дисководы, виртуализирован внутри этой среды, которая изолирована от остальной части вашей системы, поэтому вам нужно отображать порты во внешний мир и быть конкретными, какие файлы вы хотите «скопировать» на это окружающая среда. Однако, после этого, вы можете ожидать, что сборка вашего приложения, определенного в этом файле Docker, будет вести себя точно так же, где бы он ни работал.

29

Какова иерархия распределенных приложений?

стек
сервисы
и в низу контейнеры

30

Может ли несколько контейнеров работать на одном компьютере и как?

Да. Они совместно используют ядро ​​ОС с другими контейнерами, каждый из которых выполняет изолированные процессы в пользовательском пространстве.