Сервис 12306 по продаже железнодорожных билетов является ключевым системой, связанной с жизнью и перемещениями людей, включая услуги для членов клуба, покупки билетов, заказы, оплату и шлюзы.
Этот проект направлен на то, чтобы позволить учащимся быстро овладеть навыками проектирования распределенных систем, особенно подходящим для тех, кто интересуется высоконагруженными и распределенными системами. Если вы хотите глубже понять и применить принципы проектирования распределенных систем, этот проект будет отличным учебным ресурсом.
Если вас интересует открытый исходный код, вы можете следить за проектом промежуточного слоя от Маго: динамический пулов задач Hippo4j. 6.2k Star, используется 43 компаниями.
Некоторые студенты, которые приняли участие в проекте Hippo4j, включили этот опыт в свои резюме и получили отличные предложения от крупных компаний.
Проект 12306 включает кэширование, очереди сообщений, разделение баз данных и таблиц, а также паттерны проектирования, что позволяет получить полное представление о ключевых аспектах распределенных систем.Для удобства обучения система предоставляет два независимых варианта:
Версия Spring Boot с агрегацией сервисов: подходит для тестирования и развертывания, можно запустить агрегирующий сервис aggregation-service
и сервис шлюза.
Версия Spring Cloud с микросервисами: подходит для изучения проектирования микросервисов, можно запустить отдельно сервисы оплаты, заказов, пользователей, покупки билетов и шлюза.
Выберите подходящий вариант в зависимости от ваших учебных и рабочих потребностей. Микросервисная версия акцентирует внимание на обучении проектированию, а версия с агрегацией сервисов — на тестировании и развертывании. Пожалуйста, выберите правильную версию для обучения и использования в зависимости от ваших потребностей.
В проектировании системы используется последняя версия JDK 17 + Spring Boot 3 & Spring Cloud микросервисной архитектуры для создания высоконагруженного и большого по объему данных сервиса продажи железнодорожных билетов 12306, который остается эффективным и надежным.
Изучая проект 12306, вы не только узнаете его работу, но и сможете познакомиться с новыми возможностями, которые предлагает современная технологическая система, расширяя свой технический горизонт и повышая уровень своих навыков.
Ниже приведена архитектурная схема, которая подробно описывает набор служб, список компонентов и базовый уровень настроек проекта, что помогает пользователям быстро понять основные принципы проектирования и детали бизнеса 12306, начиная с нуля.
Разработка открытых проектов требует значительных усилий. Если вам понравился проект, не забудьте поставить звезду в правом верхнем углу!
Если вы хотите следить за обновлениями статей и полезными материалами, подпишитесь на мой公众号: Мартин играет с программированием
.
Если у вас возникли вопросы или у вас есть предложения по проекту, добавьте меня в друзья, укажите в комментарии: 12306, чтобы получить материалы для изучения проекта и обсудить их с 2000+
единомышленниками.
Я понимаю ваши опасения по поводу выбора подходящего проекта, который стоит затратить время и усилия. Выбор правильного проекта важен для развития навыков и создания ценности.
Возьмем, к примеру, систему обслуживания пользователей. Системы с низкой конкуренцией и небольшим объемом данных обычно просты, но системы с высокой конкуренцией и огромным объемом данных требуют учета многих дополнительных факторов.1. Когда пользователь регистрируется на сайте 12306 или добавляет пассажиров, система должна проверять точность и достоверность предоставленной информации. Как эффективно предотвратить предоставление ложной информации и обеспечить безопасность покупки билетов? 2. Как разделить базы данных и таблицы для большого количества пользователей и пассажиров 12306? Какой столбец использовать в качестве ключа для шардинга? Как внедрить шардинг в существующие системы без сбоев? Как быстро откатиться в случае проблем? 3. Система поддерживает вход пользователей с помощью имени пользователя, номера телефона и электронной почты. Как решить проблему "распространения запросов на чтение" из-за неизвестного ключа шардинга при входе? 4. В условиях высокой конкуренции при регистрации пользователей, обязательно возникнет проблема пробития кэша. Методы, такие как установка значения кэша в Null для несуществующих ключей и использование фильтра Блума, имеют недостатки. Как решить эту проблему? 5. Существуют много чувствительных данных, таких как имя пользователя, номер телефона, электронная почта, номер документа и адрес. Как защитить эти данные от утечки при атаке на базу данных?Теперь рассмотрим пример с системой покупки билетов. Когда пользователь покупает билеты для двух пассажиров на бизнес-класс поездки без выбора мест, логика распределения мест выглядит следующим образом:
Сначала проверьте, достаточно ли оставшихся мест в купе первого класса на текущем поезде. Если мест недостаточно, верните клиенту ответ о неудаче в покупке билета.
Получите все вагоны, в которых осталось по два места, и пройдитесь по этим вагонам, выполняя следующие шаги.
Сначала проверьте, есть ли в каждом вагоне свободные соседние места в купе первого класса. Если в каждом вагоне нет свободных соседних мест, переходите к следующему шагу.
Затем проверьте, есть ли вагоны, в которых есть два непосредственно не соседних места в купе первого класса. Если соседние места в одном вагоне отсутствуют, ищите непосредственно не соседние места в этом же вагоне.
Если вышеуказанные логики не удовлетворяют условия, в конце концов, вы будете вынуждены распределить непосредственно не соседние места в разных вагонах. В этом случае, учитывая, что оставшиеся места в купе первого класса проверены на достаточность, покупка билета обязательно будет успешной.
6.Следуя вышеуказанным шагам, система покупки билетов может эффективно распределить места при наличии достаточного количества оставшихся мест в купе первого класса, обеспечивая пассажиров хорошим местом для поездки. В случае недостатка мест система будет стремиться удовлетворить потребности пассажиров в успешной покупке билетов. ## Как использовать12306 фронтенд-система реализует бизнес-логику и UI, очень похожие на официальный сайт.
В процессе обучения использование фронтенд-системы, аналогичной официальному сайту, для прямого отладки backend-сервисов позволяет избежать сложностей, связанных с тестированием только через API. Это создает более реалистичную сцену обучения, что делает процесс более плавным и эффективным.
В настоящее время фронтенд-система находится в разработке, и некоторые бизнес-процессы и детали все еще находятся в процессе настройки. После завершения разработки будет предоставлена общая инструкция по использованию консоли, пожалуйста, будьте терпеливы.
Рассмотрим некоторые бизнес-точки, которые люди обычно не учитывают при покупке билетов на 12306, или места, где они могут ошибаться.
На самом деле: При массовом параллельном поиске, ElasticSearch не является оптимальным решением из-за его способности к параллельному запросу и использованию ресурсов. Кроме того, эти условия поиска могут быть хранены с помощью кэширования, подобного Redis, и собраны в памяти.### Задача: Покупка билета от Пекина до Нанкина
Вы думаете: Билет будет списан только для одного пути от Пекина до Нанкина.
На самом деле: Билет будет списан для трех путей: Пекин-Иньчжоу, Пекин-Нанкин, Иньчжоу-Нанкин. Если хотя бы одно из этих условий не выполнено, покупка не будет успешной.
В: Направлено ли это на студентов, ведь там столько схем кода, смогут ли студенты разобраться?
О: В документации подготовлены две части материалов. Одна часть посвящена объяснению технических деталей реализации, что поможет лучше понять ключевые технологии. Вторая часть посвящена тому, как создать систему с нуля. Объединение этих двух видов документации поможет лучше понять и применить схемы дизайна системы 12306.
В: Как правильно включить проект 12306 в резюме?
О: Маго подготовил в документации список преимуществ, сложностей и решений для включения проекта 12306 в резюме. Кроме того, будут собраны и предоставлены бесплатно вопросы, которые могут быть заданы на собеседовании по проекту 12306.
В: Нужно ли изучать систему 12306 тем, кто уже работает несколько лет?
О: Я считаю, что это необходимо. Хотя работающие студенты не смогут использовать этот проект в своем резюме, они могут использовать хорошие схемы дизайна из системы для улучшения своих проектов, добавляя ключевые моменты и решая сложности.
Всего более 100 ключевых технических документов! Помогут вам глубже понять и быстрее освоить систему 12306.
Введение - Что такое 12306
Как с нуля изучить 12306- Быстрый старт
......
Ключевые технические документы
Руководство от нуля до единицы
Интервью
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )