Интернет-инженер Java. Продвинутые знания. Полная грамотность.
Большая часть контента этого проекта взята из китайской компании Hushan, а авторские права принадлежат автору. Контент охватывает знания в области высокого параллелизма, распределения, высокой доступности, микросервисов и массовой обработки данных. Мы систематически систематизировали эту часть знаний, чтобы облегчить читателям обучение и справку.
Мы также усердно работаем над обновлением проекта алгоритма! Если вы готовитесь к письменному собеседованию по алгоритмам или хотите улучшить свои навыки программирования, добро пожаловать в Star и следите за doocs/leetcode.
Прежде чем изучать этот проект, давайте посмотрим, что сказали технические интервьюеры на форуме обсуждений. Этот проект приглашает всех друзей-разработчиков поделиться своими идеями и практическим опытом на форуме обсуждений. Вы также можете следить за doocs/advanced-java с помощью Star, чтобы быть в курсе последних событий в проекте.
Архитектура с высоким параллелизмом
очередь сообщений
- Зачем использовать очередь сообщений? Каковы преимущества и недостатки очередей сообщений? Каковы преимущества и недостатки Kafka, ActiveMQ, RabbitMQ и RocketMQ?
- Как обеспечить высокую доступность очереди сообщений?
- Как гарантировать, что сообщения не будут использоваться повторно? (Как обеспечить идемпотентность потребления сообщений)
- Как обеспечить надежную передачу сообщений? (Как бороться с проблемой потери сообщений)
- Как обеспечить порядок сообщений?
- Как решить проблемы задержки и истечения срока действия очереди сообщений? Что делать, если очередь сообщений заполнена? Есть миллионы сообщений, которые задерживаются на несколько часов. Как мы можем их решить?
- Если бы вас попросили написать очередь сообщений, как бы вы спроектировали архитектуру? Расскажи мне свои мысли.
поисковая система
- Можете ли вы объяснить принцип распределенной архитектуры ES (как ES обеспечивает распространение)?
- Как работает запись данных ES? Как работают данные запроса ES? Можете ли вы представить лежащий в основе Lucene? Знаете ли вы об инвертированном индексе?
- Как ES может повысить эффективность запросов, когда объем данных велик (миллиарды уровней)?
- Какова архитектура развертывания производственного кластера ES? Сколько приблизительно данных содержит каждый индекс? Сколько примерно шардов приходится на индекс?
кэш
- Как в проекте используется кеширование? Каковы последствия кеширования при неправильном использовании?
- В чем разница между Redis и Memcached? Какова потоковая модель Redis? Почему однопоточный Redis намного эффективнее многопоточного Memcached?
- Какие типы данных есть в Redis? В каких случаях его удобнее использовать?
- Каковы стратегии истечения срока действия Redis? Можете ли вы написать код LRU вручную?
- Как обеспечить высокий уровень параллелизма и высокую доступность Redis? Можете ли вы представить принцип репликации «главный-подчиненный» Redis? Можете ли вы представить принцип дозорного Redis?
- Какова архитектура Redis «главный-подчиненный»?
- Как кластер Redis Sentinel обеспечивает высокую доступность?
- Каковы методы сохранения данных в Redis? Каковы преимущества и недостатки различных механизмов сохранения? Как реализован базовый механизм персистентности?
- Можете ли вы объяснить, как работает режим кластера Redis? Как адресуется ключ Redis в режиме кластера? Каковы алгоритмы распределенной адресации? Вы понимаете алгоритм последовательного хеширования? Как динамически добавлять и удалять узел?
- Понять, что такое лавина, проникновение и пробой Redis? Что происходит после сбоя Redis? Как система должна действовать в этой ситуации? Как бороться с проникновением Redis?
- Как обеспечить согласованность двойной записи между кешем и базой данных?
- В чем проблема конкуренции параллелизма в Redis? Как решить эту проблему? Знаете ли вы решение CAS для транзакций Redis?
- Как Redis развертывается в производственной среде?
- Вы когда-нибудь понимали процесс перефразирования Redis?
Подбаза данных и подтаблица
- Почему нам следует разделять базы данных и таблицы (при проектировании системы с высоким уровнем параллелизма как следует проектировать уровень базы данных)? Какое промежуточное ПО для сегментирования баз данных и таблиц вы использовали? Каковы преимущества и недостатки различных промежуточных программ для подбаз данных и подтаблиц? Как разделить базу данных по вертикали или горизонтали?
- В настоящее время существует система, которая не разделена на базы данных и таблицы. В будущем она будет разделена на базы данных и таблицы. Как спроектировать ее так, чтобы система могла динамически переключаться с неразделенных баз данных и таблиц на разделенные базы данных и таблицы?
- Как спроектировать подбазу данных и схему таблиц, которые могут динамически расширяться и сжиматься?
- После того как база данных разделена на таблицы, как быть с первичным ключом id?
Чтение и запись разделения
- Как реализовать разделение чтения и записи в MySQL? Каков принцип репликации master-slave MySQL? Как решить проблему задержки синхронизации master-slave MySQL?
Система высокого параллелизма
- Как спроектировать систему с высоким параллелизмом?
распределенная система
Интервью, серийная бомбардировка
Разделение системы
- Почему система разделена? Как выполнить разделение системы? Можно ли не использовать Dubbo после разделения?
Платформа распределенных сервисов
- Расскажи мне, как работает Даббо? Может ли общение продолжаться, если центр регистрации не работает?
- Какие протоколы сериализации поддерживает Dubbo? Расскажите мне о структуре данных Hessian? ПБ знает? Почему ПБ наиболее эффективно?
- Каковы стратегии балансировки нагрузки и стратегии отказоустойчивости кластера в Dubbo? А как насчет стратегий динамического прокси?
- В чем заключается идея Даббо?
- Как выполнить управление услугами, ухудшение качества обслуживания, повторную попытку при сбое и повторную попытку по истечении времени на основе Dubbo?
- Как спроектировать идемпотентность распределенных сервисных интерфейсов (например, отсутствие повторных выводов)?
- Как обеспечить порядок запросов интерфейса распределенного сервиса?
- Как самостоятельно разработать RPC-фреймворк, похожий на Dubbo?
- Что такое P в теореме CAP?
Распределенная блокировка
- Каковы сценарии применения Zookeeper?
- Как спроектировать распределенные блокировки с помощью Redis? Можно ли использовать Zookeeper для проектирования распределенных блокировок? Какой из двух вышеперечисленных методов реализации распределенной блокировки более эффективен?
Распределенные транзакции
- Вы понимаете распределенные транзакции? Как вы решаете проблему распределенных транзакций? TCC Что делать, если сеть не подключается? Как обеспечить согласованность XA?
распределенный сеанс
- Как реализовать распределенный сеанс во время развертывания кластера?
Высокодоступная архитектура
- Введение в Hystrix
- Архитектура системы страницы сведений о веб-сайте электронной коммерции
- Технология пула потоков Hystrix реализует изоляцию ресурсов
- Механизм семафоров Hystrix реализует изоляцию ресурсов
- Детальный контроль политик изоляции Hystrix
- Глубокое погружение во внутреннюю структуру исполнения Hystrix
- Оптимизировать интерфейс запроса данных о пакетном продукте на основе технологии кэширования запросов.
- Резервный механизм деградации на основе локального кэша
- Углубленный взгляд на принципы работы автоматических выключателей Hystrix.
- Подробное изучение изоляции пула потоков Hystrix и ограничения тока интерфейса.
- Обеспечить защиту тайм-аута вызова сервисного интерфейса на основе механизма тайм-аута.
Высокодоступная система
- Как спроектировать систему высокой доступности?
Ограничение тока
- Как ограничить поток? Как вы это делаете на работе? Расскажите о конкретной реализации?
предохранитель
- Как выполнить автоматический выключатель?
- Каковы рамки предохранителей? Знаете ли вы конкретный принцип реализации?
- Как осуществить технический подбор рамки предохранителя? Сентинел или Хайстрикс?
Понизить версию
Микросервисная архитектура
- Вся глава, посвященная микросервисной архитектуре, является дополнительным дополнением и будет обновлена позже. Читатели также могут принять участие в дополнительных улучшениях.
- Описание микросервисной архитектуры
- Переход от монолитной архитектуры к микросервисной архитектуре
- Управление данными на основе событий для микросервисов
- Выберите стратегию развертывания микросервиса
- Преимущества и недостатки микросервисной архитектуры
Микросервисная архитектура Spring Cloud
- Что такое микросервисы? Как микросервисы взаимодействуют независимо друг от друга?
- В чем разница между Spring Cloud и Dubbo?
- Spring Boot и Spring Cloud, расскажите, как вы их понимаете?
- Что такое сервисный автоматический выключатель? Что такое понижение уровня обслуживания?
- Каковы преимущества и недостатки микросервисов? Расскажите о подводных камнях, с которыми вы столкнулись при разработке проекта?
- Какие стеки микросервисных технологий вы знаете?
- Стратегия управления микросервисами
- И Eureka, и Zookeeper могут предоставлять функции регистрации и обнаружения служб. В чем разница между ними?
- Давайте поговорим об основном процессе вызова компонента обнаружения сервисов Eureka?
- ...
Массивная обработка данных
- Как найти один и тот же URL-адрес среди большого количества URL-адресов?
- Как найти часто встречающиеся слова из больших объемов данных?
- Как узнать IP, который чаще всего посещает сайт Baidu в определенный день?
- Как найти уникальные целые числа в большом объеме данных?
- Как определить, существует ли число в большом объеме данных?
- Как запросить самые популярные строки запроса?
- Как посчитать количество разных телефонных номеров?
- Как найти медиану из 500 миллионов чисел?
- Как отсортировать по частоте запросов?
- Как найти 500 лучших номеров?
- Расскажите мне об общих процедурах решения проблем TopK в больших данных?
Звезды Тенденции
Примечание. Эта диаграмма тенденций регулярно автоматически обновляется диаграммами действий, автор @MaoLongLong.
Проекты качества сообщества Doocs
Технологическое сообщество Doocs стремится создать полноценную и постоянно растущую экосистему обучения для интернет-разработчиков! Ниже приведены несколько отличных проектов Doocs. Друзья-разработчики могут продолжать обращать на них внимание.
# | проект | описывать | нагревать |
---|
1 | продвинутая Java | Инженеры Internet Java полностью владеют передовыми знаниями: они охватывают знания в таких областях, как высокий параллелизм, распределение, высокая доступность, микросервисы и массовая обработка данных. |
|
2 | литкод | Различные языки программирования реализуют решения проблем LeetCode, «Предложение Sword Pointer (2-е издание)», «Код для собеседования с программистом (6-е издание)». |
|
3 | охотник за исходным кодом | Анализ исходного кода распространенных инфраструктур компонентов Интернета. |
|
4 | JVM | Краткое изложение знаний об основных принципах виртуальной машины Java. |
|
5 | кодирование-интервью | Сборник вопросов для собеседования по программированию, в том числе «На что следует обратить внимание», «Красота программирования» и т. д. |
|
6 | Мэриленд | Очень краткий редактор WeChat Markdown. |
|
7 | технические книги | Список технических книг, которые стоит прочитать. |
|
Автор
Спасибо всем следующим друзьям за их вклад в техническое сообщество Doocs. Нажмите здесь, чтобы принять участие в поддержке проекта.
Официальный аккаунт
Единственная публичная учетная запись « Doocs » в технологическом сообществе Doocs. Добро пожаловать, отсканируйте QR-код, чтобы перейти к нему, уделяя особое внимание обмену соответствующими знаниями в технической области и новейшей отраслевой информацией . Конечно, вы также можете добавить мою личную учетную запись WeChat (примечание: GitHub), чтобы попасть в группу технического обмена.
Подпишитесь на общедоступную учетную запись Doocs и ответьте на PDF-файл, чтобы получить автономный PDF-документ этого проекта (283 страницы сути), что сделает обучение более удобным!