предисловие
Только лысая голова может стать сильнее.
Текст был включен в мой репозиторий GitHub, добро пожаловать, звезда:GitHub.com/Zhongf UC очень…
Я купил эту книгу на некоторое время.Я не брал ее с собой в Ханчжоу.Теперь я закончил третью главу и пришел делать заметки.
Первые три главы этой книгиПопулярная наука и обзорОснову промежуточного программного обеспечения/дистрибутива очень легко понять. Я уже писал статьи о базовых дистрибутивах, вы можете пойти и посмотреть:
- SpringCloud, что непрофессионалам понятно, пропустил кровопотерю!
- Что такое ZooKeeper?
- Что такое очередь сообщений?
- Что такое единый вход (SSO)
1. Почему он распространяется?
В предыдущей статье (SpringCloud, что непрофессионалам понятно, пропустил кровопотерю!) также упомянул, почему он распространяется:
- Модули независимы, каждый делает свое дело,Простота расширения и возможность повторного использования
- высокая пропускная способность. Задача требует, чтобы одна машина работала в течение 10 часов, и задача выполняется распределенной по 10 машинам (разделите задачу на 10 небольших задач), и она может выполняться за 2 часа.
Мнения, приведенные в книге:
- Экономическая эффективность модернизации вычислительной мощности одной машины становится все ниже и ниже, и существует узкое место в вычислительной мощности одной машины.
- Распределенные системыболее стабильный и удобный(Если зависнет одиночная машина, то она зависнет, а если зависнет распределённая машина, то обычно запасная/не весь линк зависнет)
1.1 Процесс эволюции крупномасштабной архитектуры веб-сайта
На самом деле, прежде чем я вступил в контакт с распределенным, когда я просматриваю форум, часто встречаются некоторыеСмотретьОчень сильные слова, такие как «разделение чтения-записи», «подтаблица подбазы данных», «архитектура ведущий-подчиненный», «балансировка нагрузки», «единая точка отказа» и другие термины, кажутся очень высокими. Далее я объясню эти слова в рамках «процесса эволюции крупномасштабной архитектуры веб-сайта».
Когда мы впервые столкнулись с Java-проектами, обычно это была одна машина (база данных и веб-сервер находились на одной машине).
После того, как сайт открыт для внешнего мира, трафик увеличивается, а также увеличивается нагрузка на сервер. На данный момент самое простое, что мы можем сделать, этоБаза данных и приложение отдельно, что может снизить нагрузку на текущую систему
Давление на сервер приложений продолжает расти, мы можем сделать сервер приложений кластером (грубо говоря, это добавить машину)
После добавления сервера приложений появляетсяновыйПроблема в:
- Когда пользователь запрашивает, на какой сервер он отправляется?
- Сеанс зависит от одного сервера, как насчет сеанса?
Чтобы решить, к какому серверу переходит пользователь, мы добавляем «балансировщик нагрузки» до того, как запрос пользователя достигнет сервера приложений.Этот «балансировщик нагрузки» написан простым языком.Логика того, на какой сервер приложений будет отправлен запрос пользователя
- Например, приходит запрос пользователя, и балансировщик нагрузки назначает запрос серверу А. Другой пользователь запрашивает, и балансировщик нагрузки назначает этот запрос серверу B. так чторавномерно распределятьсязапрос - этот метод называетсяголосование
- ...Есть много других стратегий, это зависит от того, как вы хотите это реализовать.В любом случае, код для этой логики размещается на балансировщике нагрузки.
А о проблеме Сессии я писал раньшеЧто такое единый вход (SSO)Как уже было сказано, вообще говоря, мы можем сохранить Сессию на Redis.
С развитием нашего бизнеса объем наших данных и объем доступа увеличиваются, и теперь многие предприятияБольше читайте и меньше пишитеДа, для такого рода бизнеса это также будет напрямую отражатьбаза данныхначальство.
Итак, мы можем добавитьчитать библиотеку.写入的操作走服务器C的MySQL,读取的操作走服务器D的MySQL。 Вот и всеразделение чтения-записи.
Вообще говоря, наша библиотека для записи также называется основной библиотекой, а библиотека для чтения также называется подчиненной библиотекой.В архитектуре Интернета это называетсяархитектура «ведущий-ведомый», такие как общая архитектура:Один хозяин, много рабов(Подробные ссылки:Как объяснить жене, что такое Хозяин-Раб)
Для того, чтобы больше читать и меньше писать, у нас также есть стратегии оптимизации, вводящиеПоисковые системы и кеширование.
- Поисковая система также эквивалентна библиотеке для чтения, используяПеревернутый столметод, который может значительно улучшить скорость поиска
- кеш будетГорячие данныеПоместите его в память и верните напрямую, если запрошенные данные существуют в кеше.
Ссылки на поисковые системы и кэши:
Примечание: Упомянутые здесь индекс и кеш не обязательно относятся к ES и Redis, например, я также могу использовать локальный кеш вместо Redis. Использование Redis и ES здесь просто для моего удобства.
После разделения чтения и записи база данных все еще сталкивается с узким местом.На данный момент мы можем использоватьПодбиблиотека и подтаблицастратегия:
- Вертикальное разделение — разные бизнес-данные распределяются по разным базам данных.
- Горизонтальное разделение — разделить данные одной таблицы на разные базы данных (поскольку объем данных/обновлений этой таблицы слишком велик)
Примечание. Количество строк в одной таблице.Более 5 миллионов строк или одна таблица объемом более 2 ГБтолько рекомендуетсяПодбиблиотека и подтаблица(Если не ожидается, что этот объем данных будет достигнут в течение трех лет, не разделяйте базу данных и не разделяйте таблицу при создании таблицы!) — «Руководство по разработке Java для Alibaba»
С точки зрения хранения данных, помимо реляционных баз данных, при наличии других бизнес-сценариев также может потребоваться внедрениеРаспределенная система хранения
- Распределенная файловая система
- Распределенная система «ключ-значение»
- Распределенная база данных
После того, как проблема с базой данных решена, приложение также сталкивается с проблемами (функций приложения будет становиться все больше и больше, а приложение будет становиться все больше и больше), чтобы приложение не продолжало расти, для этого требуетсяРазберите приложение, от одного приложения до двух/несколько приложений.
Вызовы между различными функциями/модулями больше не вызываются просто изначально, а введениеудаленный сервисный вызов.
Приложение работает только на одной машине. Если на этой машине есть проблема, приложение не может быть запущено, что называетсяединая точка отказа.
наконец
Первые три главы этой книги «Система больших веб-сайтов и промежуточное ПО Java» в основном предвосхищают, что такое промежуточное ПО, что является распределенным (эволюция от одной машины к распределенному процессу) и описывают эволюцию архитектуры веб-сайта. просмотреть некоторые основы. Например:
- bio/nio/aio
- HTTP/Session
- JVM
- Базовые знания многопоточности и параллелизма в Java
- Общие классы в пакете JUC
Я сделал заметки более или менее из них и, возможно, пожелаю найти соответствующие статьи в своем общедоступном аккаунте. В общем, было весело читать! Прочитав следующие главы, я продолжу делиться ими, так что следите за обновлениями.
рад вывестигалантерейные товарыОбщедоступный номер технологии Java:Java3y. В публичном аккаунтеБолее 200 оригинальных статейТехнические статьи, обширные видеоресурсы, красивые карты мозга,Следуйте, чтобы получить его!
Я думаю, что моя статья хорошо написана, нажмитеотличный!