Вчера в моей группе фанатов Java-интервью друг с годовым опытом разработки всего за три дня нашел работу с годовой зарплатой в 200 000. Я очень за него рад.
Его опыт говорит нам, что в дополнение к укреплению опыта самостоятельной практики мы также должны стремиться накапливать наши теоретические знания.
В жизни нет ни свободного пути, ни свободного страдания. Определенные знания, которые вы узнаете, удивят вас однажды в будущем!
Пока довольны, давайте посмотрим на сегодняшний контент.
Эта статьяБолее 200 самых распространенных вопросов на собеседовании по Javaтретий дополнительный модуль.
Первый дополнительный модуль:Дополнительные вопросы для собеседования ① Модуль ThreadLocal
Второй дополнительный модуль:Дополнение к вопросам для интервью ② Модуль Netty
1. Что такое Даббо?
Dubbo — это высокопроизводительная, легкая RPC-инфраструктура с открытым исходным кодом, которая предоставляет эффективные решения для управления службами, такие как автоматическая регистрация и автоматическое обнаружение служб, и может быть легко интегрирована с инфраструктурой Spring.
2. Каковы сценарии использования Dubbo?
- Прозрачный вызов удаленных методов: вызывайте удаленные методы так же, как вызовы локальных методов, с простой настройкой и без какого-либо вмешательства API.
- Мягкая балансировка нагрузки и механизм отказоустойчивости: он может заменить аппаратные балансировщики нагрузки, такие как F5, в интрасети, снижая затраты и уменьшая количество отдельных точек.
- Автоматическая регистрация и обнаружение услуг: больше не нужно жестко записывать адрес поставщика услуг.Центр регистрации запрашивает IP-адрес поставщика услуг на основе имени интерфейса и может легко добавлять или удалять поставщиков услуг.
3. Каковы основные функции Dubbo?
- Удаленное взаимодействие: структура сетевого взаимодействия, обеспечивающая абстрактную инкапсуляцию различных инфраструктур NIO, включая методы обмена информацией в режимах «синхронный-асинхронный» и «запрос-ответ».
- Кластер: сервисная структура, которая обеспечивает прозрачные удаленные вызовы процедур на основе методов интерфейса, включая поддержку нескольких протоколов, а также поддержку кластера, такую как программная балансировка нагрузки, отказоустойчивость, маршрутизация адресов и динамическая конфигурация.
- Реестр: регистрация службы, основанная на службе каталогов реестра, позволяет потребителям услуг динамически находить поставщиков услуг, делает адреса прозрачными и позволяет поставщикам услуг плавно увеличивать или уменьшать количество машин.
4. Каковы основные компоненты Dubbo?
- Поставщик: поставщик услуг, предоставляющий услугу
- Потребитель: позвоните потребителю удаленных услуг
- Реестр: Реестр регистрации и обнаружения служб
- Монитор: Центр мониторинга и доступ к статистике вызовов
- Контейнер: служба запускает контейнер
5. Как происходит процесс регистрации и обнаружения сервера Dubbo?
- Провайдер (провайдер) привязывает указанный порт и запускает сервис.
- Провайдер подключается к центру регистрации и одновременно отправляет локальный IP-адрес, порт, информацию о приложении и информацию о предоставлении услуг в центр регистрации для хранения.
- Потребитель (потребитель), подключитесь к центру регистрации и отправьте информацию о приложении и запрошенную служебную информацию в центр регистрации.
- Центр регистрации сопоставляет соответствующий список провайдеров в соответствии с служебной информацией, запрошенной потребителем, и отправляет ее в кэш приложения-потребителя.
- Когда потребитель инициирует удаленный вызов, он выбирает одного на основе кэшированного списка потребителей, чтобы инициировать вызов.
- Изменения статуса поставщика будут уведомлены реестром в режиме реального времени и переданы потребителю реестром в режиме реального времени.
6. Какие протоколы поддерживает Dubbo и каковы их преимущества и недостатки?
- Dubbo: одно длинное соединение и асинхронная связь NIO, подходящие для вызовов службы с большим параллелизмом и небольшим объемом данных, а потребители намного крупнее поставщиков. Транспортный протокол TCP, асинхронная сериализация по Гессе.
- RMI: он реализован с использованием стандартного протокола RMI JDK.Параметры передачи и объекты возвращаемых параметров должны реализовывать интерфейс Serializable, используя стандартный механизм сериализации Java, используя блокировку коротких соединений, смешанные размеры пакетов передачи и количество потребителей и поставщиков. Аналогично Передача файлов, протокол передачи TCP. Множественная передача по протоколу TCP с коротким соединением, синхронная передача, подходящая для регулярных удаленных сервисных вызовов и взаимодействия RMI. Существует уязвимость в сериализации Java при использовании более ранней версии пакета Common-Collections.
- WebService: протокол удаленного вызова на основе WebService, интегрированный с реализацией CXF, обеспечивающий взаимодействие с собственным WebService. Множественные короткие соединения, основанные на передаче HTTP, синхронной передаче, подходящей для системной интеграции и межъязыковых вызовов.
- HTTP: протокол удаленного вызова, основанный на отправке формы Http, реализованный с использованием Spring HttpInvoke. Несколько коротких соединений, протокол передачи HTTP, смешанные размеры входящих параметров, больше поставщиков, чем потребителей, которые должны вызываться приложением и браузером JS.
- Hessian: интегрируйте службы Hessian, взаимодействуйте на основе HTTP и используйте Servlet для предоставления служб.Dubbo реализуется по умолчанию, когда Jetty встраивается в качестве сервера, обеспечивая взаимодействие со службами Hession. Несколько коротких соединений, синхронная передача HTTP, сериализация по Гессе, большие входящие параметры, более крупные поставщики, чем потребители, высокая нагрузка на поставщиков и передача файлов.
- Memcache: протокол RPC, реализованный на основе Memcache.
- Redis: протокол RPC, основанный на реализации Redis.
7. Какой протокол рекомендует Dubbo?
Рекомендуется протокол Dubbo.
8. Какие реестры есть у Dubbo?
- Центр регистрации многоадресной рассылки: Центр регистрации многоадресной рассылки не нуждается в каком-либо центральном узле, если можно выполнять широковещательный адрес, регистрацию и обнаружение услуги, что реализуется на основе многоадресной передачи в сети.
- Центр регистрации Zookeeper: на основе реализации распределенной системы координации Zookeeper механизм наблюдения Zookeeper используется для реализации изменений данных.
- Реестр Redis: на основе реализации Redis, с использованием хранилища ключей/карт, имени и типа службы хранения ключей, URL-адреса службы хранения ключей в карте, времени истечения срока действия службы значений. Модель публикации/подписки на основе Redis для уведомления об изменениях данных.
- Простой реестр.
9. Кластер реестра Dubbo не работает, могут ли издатель и подписчик по-прежнему обмениваться данными?
может общаться. При запуске Dubbo потребитель извлечет данные, такие как адрес интерфейса зарегистрированного производителя, из Zookeeper и кэширует их локально. Каждый раз, когда он вызывается, он вызывается в соответствии с локально сохраненным адресом.
10. Какую коммуникационную структуру использует Dubbo?
Netty используется по умолчанию в качестве коммуникационной среды.
11. Какие стратегии балансировки нагрузки предоставляет кластер Dubbo?
- Random LoadBalance: случайным образом выбирает стратегию провайдера, что полезно для динамической настройки веса провайдера. Чем выше частота коллизий секций, тем больше вызовов, тем равномернее распределение.
- RoundRobin LoadBalance: Стратегия провайдера выбирается циклически, равномерно распределяется, но есть проблема накопления запросов.
- LeastActive LoadBalance: наименее активная стратегия вызова для решения проблем с медленными поставщиками, получающими меньше запросов.
- ConstantHash LoadBalance: стратегия Consistent Hash, так что запросы с одинаковыми параметрами всегда отправляются одному и тому же провайдеру.Когда машина выходит из строя, ее можно выделить другим провайдерам на основе виртуальных узлов, избегая резких изменений в провайдерах.
По умолчанию Random для случайных вызовов.
12. Каковы решения Dubbo по отказоустойчивости кластера?
- Отказоустойчивый кластер: автоматическое переключение при сбое.При возникновении сбоя повторите попытку с другими серверами. Обычно используется для операций чтения, но повторные попытки вызывают более длительные задержки.
- Failfast Cluster: Быстрый сбой, выполняется только один вызов, и сразу после сбоя сообщается об ошибке. Обычно используется для неидемпотентных операций записи, таких как добавление новых записей.
- Failsafe Cluster: Failsafe, когда возникает исключение, игнорирует его напрямую. Обычно используется для таких операций, как запись в журнал аудита.
- Отказоустойчивый кластер: автоматическое восстановление после сбоев, запись неудачных запросов в фоновом режиме и регулярная их повторная отправка. Обычно используется для операций уведомления о сообщениях.
- Разветвляющийся кластер: параллельно вызывайте несколько серверов и возвращайтесь, пока один из них работает успешно. Обычно он используется для операций чтения с высокими требованиями к реальному времени, но требует большего расхода ресурсов службы. Максимальное количество параллелей может быть установлено forks=”2”.
- Кластер вещания: вещание звонит всем провайдерам, звонит им по одному и сообщает об ошибке, если какой-либо из них сообщает об ошибке. Обычно используется для уведомления всех провайдеров о необходимости обновления информации о локальных ресурсах, такой как кэши или журналы.
Схема отказоустойчивости по умолчанию — отказоустойчивый кластер.
13. Какие методы сериализации поддерживает Dubbo?
По умолчанию используется сериализация Гессе, а также собственная сериализация Duddo, FastJson и Java.
14. Какие есть способы установки таймаута Dubbo?
Есть два способа установить время ожидания Dubbo:
- Провайдер услуг устанавливает период тайм-аута.В пользовательской документации Dubbo рекомендуется настроить как можно больше конфигураций на стороне сервера, потому что поставщики услуг лучше потребителей знают о характеристиках предоставляемых ими услуг.
- Время ожидания устанавливается на стороне потребителя услуги, если время ожидания установлено на стороне потребителя, то сторона потребителя является основной, то есть имеет более высокий приоритет. Поскольку вызывающая служба устанавливает контроль времени тайм-аута, он является более гибким. Если потребитель истечет, поток сервера не будет настроен, и будет сгенерировано предупреждение.
15. Что произойдет, если время вызова службы поддержки истекло?
Когда dubbo не удается вызвать службу, по умолчанию она повторяет попытку дважды.
16. Какие меры безопасности принимает Dubbo?
- Dubbo не позволяет пользователям в обход реестра подключаться напрямую через токен Token, а затем управляет авторизацией в реестре.
- Dubbo также предоставляет услуги черного и белого списка для контроля вызывающих абонентов, разрешенных службой.
17. Какие другие распределенные фреймворки похожи на Dubbo?
Самый известный — «Весеннее облако».
18. Какая связь между Dubbo и Spring Cloud?
Dubbo — это продукт эпохи SOA, и его основное внимание уделяется вызову сервисов, распределению трафика, мониторингу трафика и разрыву цепи. И Весеннее Облако Рожденный в эпоху микросервисной архитектуры, он учитывает все аспекты управления микросервисами, а также опирается на Spring и Spring Boot. Вдобавок к преимуществам двух фреймворков, цели двух фреймворков изначально несовместимы.Управление сервисом позиционирования Dubbo и Spring Cloud должны создать экосистему.
19. В чем разница между Dubbo и Spring Cloud?
Нижний уровень Dubbo использует структуру NIO, такую как Netty, которая передается на основе протокола TCP и завершает связь RPC с сериализацией Hession.
Spring Cloud основан на интерфейсе Rest протокола Http для вызова связи с удаленным процессом, Условно говоря, запросы Http будут иметь большие пакеты и занимать большую полосу пропускания. Однако REST более гибок, чем RPC. Зависимости между поставщиком услуг и вызывающей стороной зависят только от контракта, и на уровне кода нет сильной зависимости. Это больше подходит для среды микросервисов, в которой делается упор на быструю эволюцию. ориентация на скорость связи по-прежнему удобна и гибка, в зависимости от конкретной ситуации.
Наконец
Для получения дополнительной информации о Dubbo посетите официальный сайт:dubbo.incubator.apache.org/zh-cn/
Посмотреть все вопросы интервью:Более 200 самых распространенных вопросов на собеседовании по Java
Справочная статья
Quality Student.com/Hiroshi Watanabe-inter…
Недавняя рекомендация горячего текста
Более 200 самых распространенных вопросов на собеседовании по Java
Эксклюзивная коллекция изысканных резюме программиста - вторая пуля