[Электронная коммерция Chango] Краткое описание проекта
[Электронная коммерция Chango] Краткое описание проекта

Оглавление

1. Схема архитектуры проекта электронной коммерции

1.1 Архитектура системы

1.2 Техническая архитектура

2. Внедряйте проекты электронной коммерции.

2.1 Бэкенд и фронтенд, бэкенд и фронтенд

2.2 Какие технологии содержит Vue Family Bucket?

2.3 Что такое Vuex?

2.4 Что такое ССР

2.5 Что такое модель электронной коммерции?

2.6 Класс перечисления

2.7, связанный с эластичным поиском

2.8 шлюз, связанный со шлюзом

2.9, связанные с НАКО

2.10 Запланированные задачи

2.11 Терминология электронной коммерции

3 Бизнес в проекте

3.1 Регистрация бизнеса

3.2 Бизнес-задача разрешения

3.3 Поисковый бизнес

3.4 Бизнес с корзинами для покупок

3.5 Заказать бизнес

3.6 Платежный бизнес

4. Какие трудности в проекте? Как вы это решили?

4.1 Сложность 1: Заказ бизнеса

4.2 Сложность 2: Платежный бизнес

4.3 Сложность 3: Поиск

4.4 Сложность 4: Аутентификация разрешения

5. Что вы получили от этого проекта?

1. Схема архитектуры проекта электронной коммерции

  • Техническая основа/выбор технологии

1.1 Архитектура системы

  • Проект представляет собой B2C Электронная коммерция проект (аналог Xiaomi Mall, JD Mall, Tmall Mall)
    • Разрешить клиентам покупать товары онлайн
  • Проект в основном реализует Электронная коммерцияпроектстойка регистрацииразработка。
    • Разработано с использованием метода разделения фронтенда и бэкенда.
    • Фронтенд: сегмент семейства vue (Vue, Router, Vuex, Axios, Nuxt, SSR и другие технологии).
    • Бэкэнд: Весна Cloud Gateway Ворота, Весна Cloud стек технологий Alibaba (NACOS, Sentinel ждать)точкастиль тканимикросервисы Архитектура。
  • Всего в проекте 6 микросервисов (без учета кластеров):
    • служба шлюза
    • service-auth Службы аутентификации
    • service-cart Служба корзины покупок
    • service-orders Заказать услугу
    • service-search Служба поиска
    • service-web Основные бизнес-услуги (базовый бизнес)
    • Расширения:
      • Служба MQ (служба очереди сообщений)
      • SMSСлужить(Короткое сообщение Служить)
  • В этом проекте Nacos используется в качестве центра регистрации и обнаружения служб, а также центра настройки информации.
  • Используйте очередь сообщений RabbitMQ корпоративного уровня для передачи сообщений, разделения приложений, управления потоками и снижения пикового трафика.
  • Поисковая система корпоративного уровня Elasticsearch используется для онлайн-поиска продуктов в режиме реального времени.
  • Цели, преследуемые этим проектом: высокий параллелизм, высокая доступность и высокая стабильность.

1.2 Техническая архитектура

  • внешний интерфейс:
    • Node.js : интерфейсный сервер, используемый для запуска контента, связанного с vue.
    • Vue.js: интерфейс использует технологии, связанные с vue.
    • Element UI : Интерфейсная платформа Vue предоставляет общие компоненты и сокращает количество написания CSS, специальных эффектов и т. д.
    • Nuxt.js : Интерфейсная платформа Vue используется для решения проблем SSR (рендеринг на стороне сервера) и удобна для SEO.
  • Технология эксплуатации и обслуживания:
    • Nacos: сервисный центр, центр настройки
    • Redis: центр хранения данных
    • elasticsearch:Служба поискацентр
    • docker: используется для развертывания проектов (проект будет развернут в системе Linux, а затем конкретное развертывание будет выполнено через docker)
    • canal: https://github.com/alibaba/canal Самообучение
  • Распределенная архитектура
    • spring boot :Основы структуры проекта
    • spring cloud alibaba:микросервисы Архитектура
    • jwt + RSA: Центр аутентификации,
      • jwt используется для генерации токена,
      • RSA выполняет операции шифрования и используется для помощи в создании или проверке токенов.
  • Стек технологий персистентности:
    • MyBatis Плюс: используется для замены MyBatis и обычного Mapper, предоставляя улучшенные инструменты и соответствующие улучшения производительности.
    • Spring data redis: используется для упрощения операций Redis в Java.
    • spring data elasticsearch: используется для упрощения операций Java в es.
  • база данных:
    • MySQL: бесплатно
    • MyCat: используется для сегментирования базы данных и таблиц.
  • Внешний интерфейс:
    • Али Большая Рыба: Отправить Короткое сообщение
    • Платежный интерфейс WeChat

2. Внедряйте проекты электронной коммерции.

  • Расскажите, пожалуйста, о проекте, который вам наиболее знаком?
  • Расскажите о недавно реализованном проекте?

2.1 Бэкенд и фронтенд, бэкенд и фронтенд

  • Как интерфейсную, так и внутреннюю часть можно разработать, разделив переднюю и внутреннюю части, образуя, таким образом, соответствующие интерфейсную и внутреннюю части.
  • Бэкэнд: доступен администраторам.
    • Электронная Серверный модуль коммерции: управление участниками, управление категориями точек, экспресс-управление, управление рекламой, управление продуктами, управление заказами, управление финансами, управление отчетами.
    • внешний интерфейс:element ui、element ui admin
    • Бэкэнд: весна boot、spring cloud、spring cloud alibaba
  • Стойка регистрации: доступна для пользователей. На данный момент завершено Электронная Коммерческий проект — это только часть точки, завершена часть стойки регистрации.
    • Электронная Интерфейсные модули коммерции: регистрация, аутентификация, категория Infinitus точки, экспресс, поиск, корзина, заказ, оплата.
    • внешний интерфейс:nuxt.js
    • Бэкэнд: весна cloud alibaba

2.2 Какие технологии содержит Vue Family Bucket?

  • vue: основной компонент, в основном используемый для двусторонней привязки данных. (html-тег и vue данныеданные руководить двустороннее связывание)
    • Жизненный цикл, вычисляемые свойства, фильтры, прослушиватели ждать
  • маршрутизатор: маршрутизация, функция сопоставления, чтобы путь доступа можно было сопоставить с соответствующим ресурсом vue.
    • Перехватчик запросов, перехватчик ответов ждать
  • vuex: управление состоянием для совместного использования массивов между несколькими компонентами.
  • element ui: библиотека компонентов vue, предоставляющая общие компоненты (включая стили CSS и специальные эффекты JS).
  • Nuxt: фреймворк vue, используемый для реализации технологии SSR.
  • axios: сторонняя платформа ajax

2.3 Что такое Vuex?

  • Что такое вуэкс?
    • Компонент семейства vue, управляющий управлением состоянием, то есть совместное использование данных между компонентами.
  • Компоненты Vuex: состояние (мертвый отец), мутации методов (бог модели), функциональные действия (модули, геттеры)
    • Состояние: эквивалент переменной, используемой для хранения данных.
    • Мутации метода: используются для работы с переменными и изменения данных переменных.
    • Действия функции: используются для вызова методов, которыми можно управлять с помощью ajax.
  • Как использовать? Основное использование: состояние: получить значение this.store.state.variable . Обычно используется с вычисляемыми свойствами vue. мутации: вызовите метод this.store.commit("имя метода", параметр). иву метод, используемый вместе. действия: вызвать функцию this.
Язык кода:javascript
копировать
computed: {
    ...mapState(['имя переменной']),
    имя переменной() {		//ждатьэффект        return this.$store.state.variable;
    },
    
}

мутации: написаны обычными методами

Язык кода:javascript
копировать
methods: {
    ...mapMutations(['имя метода']),
    Имя метода (параметры) {   //ждатьэффект        this.$store.commit("Имя метода", параметр)
    }
}

2.4 Что такое ССР

  • SSR: технология рендеринга на стороне сервера, статическая технология интерфейсной страницы, благодаря которой данные ajax и html-теги не разделяются и не интегрируются в единое целое.
    • То есть результаты запроса ajax обрабатываются в статические страницы.
  • nuxt.js Поддерживает технологию SSR. Перед загрузкой страницы выполняется запрос asyncDatarukodriveajax, и результаты запроса объединяются в указанную область данных. После успешной загрузки страницы нет необходимости выполнять повторный запрос. Эквивалент статической страницы.
  • Назначение: Используется для решения проблем SEO (поисковая оптимизация).
    • Сканеры, предоставляемые поисковыми системами, отдают приоритет сканированию статических страниц. Чтобы повысить уровень включения веб-сайта, динамические страницы необходимо преобразовать в статические.

2.5 Что такое модель электронной коммерции?

  • B2C: Торговец-Клиент
    • Торговец развивает торговый центр и реализует продукцию.
    • Пользователи покупают товары через торговый центр.
    • Например: Vipshop, Lefeng.com.
  • B2B2C: Продавец А-Продавец Б-Клиент
    • Торговец Б: Создайте торговый центр, чтобы предлагать торговцам продукцию Аруководить на продажу. Продавец Б имеет право контролировать Продавца А.
    • Торговец А: Поселился в торговом центре, построенном Торговцем Б, и продавал продукцию под руководством.
    • Клиент: Покупку через ТЦ руководить.
    • Например: JD.com, Tmall.
  • C2B: Клиент-Продавец, покупатель выдвигает спрос, а продавец его индивидуализирует.
    • Например: Доставка на дом в Шанпине.
  • O2O: онлайн/оффлайн, заказ через онлайн руководить, доставка через офлайн руководить.
    • Например: Meituan Takeout, Ele.me.
  • C2C: клиент-клиент, частные покупки и продажи.
    • Например: подержанные автомобили Гуази, Чжуаньчжуань, Сяньюй.

2.6 Класс перечисления

  • класс Цель перечисления: ограничить экземпляры указанного типа.
    • Константный класс — это технология jdk1.4.
    • класс перечисления — это технология jdk1.5, используемая для замены константных классов. Без параметров определение очень простое.
  • Перечисление: установите информацию для записи с помощью параметров.
Язык кода:javascript
копировать
package com.czxy.changgou4.enum_demo;

/**
 * @author дядя Тонг
 * @email liangtong@itcast.cn
 * @description
 */
public enum Gender {
    МУЖЧИНА(1,"мужчина"),ЖЕНЩИНА(0,"женщина");

    private Integer id;     //серийный номер
    private String text;    //текст

    Gender(Integer id, String text) {
        this.id = id;
        this.text = text;
    }

    public Integer getId() {
        return id;
    }

    public String getText() {
        return text;
    }
}

Класс констант, функционально эквивалентный перечислению выше.

Язык кода:javascript
копировать
package com.czxy.changgou4.enum_demo;

/**
 * @author дядя Тонг
 * @email liangtong@itcast.cn
 * @description
 */
public class GenderClass {
    public final static GenderClass MALE = new GenderClass(1, "мужской");
    public final static GenderClass FEMALE = new GenderClass(0, "женский");

    private Integer id;     //серийный номер
    private String text;    //текст

    public GenderClass(Integer id, String text) {
        this.id = id;
        this.text = text;
    }

    public Integer getId() {
        return id;
    }

    public String getText() {
        return text;
    }
}

тест

Язык кода:javascript
копировать
package com.czxy.changgou4.enum_demo;

/**
 * @author дядя Тонг
 * @email liangtong@itcast.cn
 * @description
 */
public class TestGender {
    public static void main(String[] args) {
        System.out.println(Gender.MALE.getId());

        System.out.println(GenderClass.FEMALE.getText());
    }
}

2.7, связанный с эластичным поиском

  • В чем принцип эластичного поиска?
    • Сохраните данные в es, и es обработает их.
    • Для каждого слова-точки «руководить номером» запросите час в «руководить», найдите соответствующий номер через слово-точку, а затем найдите соответствующие данные из индексной базы данных через это число.
    • Этот процесс является принципом, и этот принцип называется «инвертированный индекс».
  • Зачем использовать elasticsearch?
    • База данных mysql не может выполнять поиск по точечным словам, но es может выполнять поиск по словам «руководитьточка».
      • База данных может выполнять нечеткие запросы к указанным полям, то есть определенному полю.
      • есруководить полнотекстовый поиск по словам. Более гибкий, чем MySQL.
    • Этот профессиональный поиск может обрабатывать огромные объемы данных и работает очень быстро. Электронная Коммерческий проект имеет большое количество товаров, и искать их нужно эсруководить.
  • Зачем использовать токенизатор IK?
    • По умолчанию es используется для одного слова руководитьточка.
    • Актуальная потребностьчас,в соответствии сфразаруководитьточкаслово。Нужен конкретный китайскийточкаслово器。

2.8 шлюз, связанный со шлюзом

  • шлюз Какова функция шлюза? Какова роль шлюза?
    1. динамическая маршрутизация
    2. балансировка нагрузки
    3. Аутентификация

2.9, связанные с НАКО

  • Какова роль НАКО?
    • Центр регистрации микросервисов: Узнать местоположение соответствующего сервиса можно по названию сервиса.
    • Центр конфигурации микросервисов: извлеките содержимое файла конфигурации ymliliproperties в nacos. Изменение nacos эквивалентно изменению файла ymliliproperties.
  • Зачем тебе накос?
    • Архитектура микросервисов требует центра регистрации для управления всеми микросервисами. Реальный IP-адрес + номер порта каждой службы удобно узнавать по имени службы. Между проектами необходимо записывать только имя службы, а реальный адрес и номер порта службы можно изменить по желанию.
    • Вам необходимо выбрать центр регистрации ваших микросервисов.
    • Общие регистрационные центры: Nacos, Eureka, Dubbo’s Zookeeper. ждать
    • nacos — это техническая поддержка, предоставляемая Alibaba. Она прошла реальные испытания Double Eleven и является лучшим выбором.

2.10 Запланированные задачи

Что такое Спринг Таск?

  • SpringTask этозапланированные компоненты задачи.
  • Способен выполнять определенные задачи в течение определенного периода времени.
  • Вообще говоря, выражение используется cron。
Язык кода:javascript
копировать
@Scheduled(cron = “0-5 * * ? * *”)

выражение cron

Минуты 7 частей: Секунды Минуты Час Дата Месяц Годовщина? Существует 6 часто используемых частей: секунды, минуты, часы, даты, месяцы и недели. Если существует конфликт между «датой» и «неделей», вам нужно игнорировать одну из них и использовать ?. , или, например: 1,2,3 - к, например: 1-5 / Каждые, например: 0/5 * необязательный

2.11 Терминология электронной коммерции

  • SKU、SPU
    • SKU:stock keeping Единица (инвентарная единица), наименьшая единица входа и выхода со склада, не может быть разделена. Это конкретный продукт.
    • SPU:Standard Product Единица (стандартная единица продукта), набор повторно используемых выходных функций, эквивалентный небольшой классификации.
  • PV、UV
    • PV:Page View Просмотры страниц записываются один раз при каждом посещении страницы одним и тем же пользователем несколько раз, а также записываются несколько раз. Совокупное количество посещений.
    • UV:unique visitor Количество посещений независимыми арендаторами с одним и тем же IP-адресом за один и тот же день.

3 Бизнес в проекте

3.1 Регистрация бизнеса

  • Зачем использовать код подтверждения?
    • Предотвратите пользователей от вредоносных кликов
    • Предотвращение злонамеренного доступа со стороны программ
  • Сколько существует форм проверочного кода?
    • Код подтверждения статического изображения (изображение в формате JPEG)
    • Код проверки динамического изображения (гиф-картинка)
    • Код подтверждения электронной почты
    • Короткое сообщение Проверочный код
    • Специальный код проверки (скользящая часть изображения, сетка из 9 квадратов, выберите несколько китайских иероглифов) ждать)
  • Имеет ли код подтверждения срок действия? Если да, то как долго?
    • Да, обычно 5 минут
    • Период действия при хранении в Redis на серверной стороне.
  • Зачем использовать обратный отсчет? Сколько?
    • Защищайте пользователей от вредоносных кликов и случайных кликов
    • Короткое Сообщение Есть задержка, и должно быть время получения
    • Продолжительность часа обычно составляет 60 секунд. Не рекомендуется делать это слишком долго, поскольку пользователи не будут рады ждать.
    • Сократите количество посещений сервера, тем самым уменьшив нагрузку на сервер.
  • Опишите основную идею реализации обратного отсчета?
    • Всего необходимо использовать 3 переменные: btnDisabled, секунды, таймер.
    • Переменная секунд, используется для управления обратным отсчетом часов, если она равна нулю, все состояния будут сброшены
    • Переменная btnDisabled используется для управления возможностью использования кнопки. Ее нельзя использовать во время фазы обратного отсчета.
    • Переменная таймера используется для записи опроса. Когда обратный отсчет достигает нуля, опрос прекращается.
  • Действителен ли код подтверждения после окончания обратного отсчета?
    • Действителен. Обратный отсчет составляет 60 секунд. При отправке кода подтверждения он сохраняется в Redis в течение 5 минут и действителен в настоящее время.
  • Могу ли я отправить код подтверждения после окончания обратного отсчета?
    • Да, после 60-секундного обратного отсчета кнопка станет доступна для нажатия.
  • Короткое Сообщение Причина, почему отправка не удалась и ее решение?
    • У Alibaba Dayu недостаточно баланса, и она не может отправить товар. Проверяйте свой баланс и оперативно пополняйте деньги.
    • Короткое сообщение сервис не отвечает. Проверить переписку Короткое сообщение сервис, можно ли к нему получить доступ.
    • Стороннее программное обеспечение недоступно. Проверьте, доступны ли Redis и mqждать.
    • Интерфейсный ajax не был отправлен успешно. Проверьте путь ajax и параметры ожидания, интерфейс не привязан к ajax
  • Каковы типы данных Redis?
    • Redis имеет 5 типов данных
    • Тип строки: строка, наиболее часто используемый тип в Redis, может хранить любые данные, обычно конвертированные в json. Один ключ, одно значение.
    • список: упорядоченная коллекция, один ключ с несколькими значениями, значения могут повторяться.
    • набор: Неупорядоченный, один ключ с несколькими значениями, значения не могут повторяться.
    • zset: упорядоченный неповторяющийся набор. Один клик для нескольких значений.
    • хеш: пара ключ-значение
  • Как код подтверждения однозначно идентифицируется в Redis? Есть ли другие варианты?
    • Требуется от пользователя заполнитьИмя пользователя/номер мобильного телефона,redisуникальный идентификаторФиксированная строка + номер мобильного телефона или Фиксированная строка + имя пользователя
      • Недостатки: пользователи не могут нажать, чтобы получить код подтверждения, прежде чем вводить номер своего мобильного телефона. Потеря фокуса в час, руководить запросом ajax после того, как пользователь вводит проверочный код.
    • Общие решения:
      • Когда каждый пользователь впервые заходит на страницу, ему присваивается случайное число и фиксируется на стороне браузера (cookie, localStorage).
      • Каждое последующее посещение будет содержать это случайное число и использовать это случайное число для обозначения текущего пользователя.

3.2 Бизнес-задача разрешения

  • Какая структура используется для аутентификации полномочий?
    • JWT: JSON Web Tokens , Самое популярное сегодня решение для междоменной аутентификации.
  • Понимание JWT? Процесс аутентификации JWT
  • Метод шифрованияЧто там?
    • Base64: использует 64 печатных символа для представления двоичных данных, что позволяет шифровать и дешифровать данные.
    • MD5: Message Digest Algorithm алгоритм дайджеста сообщения, Преобразование строк данных произвольной длины в короткие значения фиксированной длины.
    • SHA: Secure Hash Алгоритм, алгоритм безопасного хеширования
    • RSA: алгоритм асимметричного шифрования, требующий пары ключей: один для шифрования, а другой для дешифрования.
  • Как после успешного входа в систему сохранить информацию о пользователе?
    • В системе микросервисов сохраните sessionStorage.
  • Если данные хранятся в vuex, как решить проблему потери данных при обновлении страницы?
    • Вариант 1. Не общедоступный компонент: страница находится в разделе «Оглавление» и может быть предоставлена ​​nuxt.js. fetch обработает операцию.
    • Вариант 2: Это публичный компонент: компонент хранится в компонентах Оглавление с помощью стороннего руководства (cookie, localStorage, sessionStorage).
      • Вариант 1: SessionStorage хранит данные. Если в vuex нет данных, синхронизируйте sessionStorage там.
      • Вариант 2. Модуль действий в vuex может отправлять ajax для синхронизации данных.
  • Что такое белый список? Если использовать?
    • Пути в белом списке не требуют проверки подлинности и могут быть освобождены напрямую.

3.3 Поисковый бизнес

  • Как elasticsearch ищет
    • Сначала вам нужно создать индекс,
    • Затем Springboot-data-elasticsearch предоставляет богатый API, управляющий поиском по всем точкам, поиском по страницам, сортировкой,
    • Вы также можете напрямую написать имя метода и выполнить поиск по имени метода.
    • Если это по-прежнему не соответствует вашим потребностям, вы также можете использовать NativeSearchQueryBuilderруководить для настройки запроса.
      • withQuery Условный запрос через boolQueryBuilder руководил комбинированным запросом
        • matchQuery: поиск сегментации слов
        • termQuery: точное совпадение
        • rangeQuery: поиск диапазона
      • withSort : Сортировать запрос
      • withPageable :Запрос страницы
  • Поиск в проекте Как реализуется бизнес?
    • Электронная В проекте «коммерция» мы реализовали поиск товаров по трехуровневому поиску по категориям, поиску по ключевым словам и времени по бренду, характеристикам и параметрам спецификации, ценовому диапазону, по убыванию объема продаж, по возрастанию/убыванию цены, по убыванию отзывов. порядок и место на полке в порядке убывания ждатьждать состояние руководить поиском комбинации
  • Откуда берутся данные в elasticsearch? Как внести его?
    • Данные в elasticsearch будут сохранены в двух копиях: одной из mysql и одной из elasticsearch.
  • Синхронизация кода: синхронизируйте данные в MySQL с elasticsearch
    • другие способы:canal

3.4 Бизнес с корзинами для покупок

  • Корзинный Бизнес — один из основных видов деятельности торгового центра. Каковы функции корзины для покупок?
    • добавить в корзину
    • Изменить количество товаров в корзине
    • Изменить статус проверки товаров в корзине
    • Удалить товары из корзины
  • Зачем использовать localStorage? Каковы преимущества localStorage? Каковы недостатки?
    • Емкость хранилища localStorage больше, чем у cookie, что позволяет преодолеть ограничение cookie4k.
    • localStorage — это постоянное прямое хранилище для локального хранилища, которое эквивалентно базе данных интерфейсной страницы. cookie Можно сэкономить пропускную способность
    • Недостатки:
      • Браузеры неодинаковы по размеру и по IE8 выше IE Только поддерживаемая версия localStorage это свойство.
      • В настоящее время все браузеры ограничивают тип значения localStorage строковым типом, что требует некоторого преобразования в наши обычные типы объектов JSON.
      • localStorage не читается в приватном режиме браузера.
      • LocalStorage по сути читает строки. Если вы храните много контента, это будет занимать пространство памяти и вызывать зависание страницы.
  • В чем разница между localStorage и sessionStorage?
    • localStorage Локальное хранилище является постоянным. Данные могут храниться долгое время до тех пор, пока браузер не очистит кеш браузера.
    • sessionStorage Хранилище сеансов — это временное хранилище. Когда сеанс браузера завершается, данные удаляются.
  • Почему при входе в систему данные помещаются в Redis, а не в MySQL?
    • Преимущество Redis заключается в том, что он имеет высокую скорость чтения и записи. Запись в MySQL занимает больше времени, а возможности параллелизма не такие сильные, как у Redis.
    • длядобавить в Функции корзины часто используются и могут быть быстро написаны, изменены и получены через Redis, что отвечает потребностям бизнеса.

3.5 Заказать бизнес

  • Что такое размещение заказа? Как в проекте реализована функция заказа? Каков процесс заказа?
    • Нажмите кнопку «Отправить» на странице. В это время будет выполнен внутренний заказ. В процессе необходимо обработать множество предприятий.
    • Первый: номер заказа необходимо сгенерировать. Учитывая большой объем заказов в распределенной системе, как предотвратить дублирование номеров заказов? Мы приняли алгоритм Snowflake, который представляет собой генератор распределенных идентификаторов Twitter с открытым исходным кодом. Он может эффективно обеспечивать уникальные идентификаторы в сценариях с высоким уровнем параллелизма.
    • Во-вторых: нам нужно инициировать удаленный вызов на основе адреса адреса, чтобы запросить подробную информацию об адресе. В нашей таблице заказов мы сохраняем подробную информацию об адресе доставки каждого заказа. Почему заказы должны сохранять информацию об адресе доставки. неоднократно? Почему бы не сохранить номер адреса? Поскольку информация об адресе может быть изменена, если номер адреса будет сохранен, а информация об адресе изменится позже, информация об адресе моего заказа также изменится. Это будет противоречить адресу, который необходимо отправить при размещении заказа.
    • Третье: получите токен, проанализируйте идентификатор пользователя и получите данные из Redis на основе идентификатора пользователя. Поскольку данные о продукте заказа поступают из Redis, при размещении заказа данные о продукте, проверенные в корзине покупок в Redis, сохраняются непосредственно как продукт заказа.
    • Четвертое: сохраните заказ и сохраните данные о продукте заказа.
    • Пятое: вычесть инвентарь, включая mysql, elasticsearch и redis; если заказ успешно размещен, для mysql необходимо изменить информацию об инвентаре для elasticsearch, удалить продукт; информация, которая была успешно заказана.
    • Шестое: для четвертого и пятого бизнеса либо все преуспеют, либо все потерпят неудачу. В архитектуре микросервисов Spring Cloud используются бизнес-вызовы между несколькими службами, поэтому мы используем точечно распределенные транзакции для обеспечения согласованности и полноты данных.
  • Характеристики сделок?
    1. Что такое транзакция? В наборе операций бизнес-логики (ABCD) либо все выполняются успешно, либо все терпят неудачу.
    2. Каковы особенности транзакций? ACID 4 функции Атомарность: транзакция представляет собой неделимое целое. Согласованность: данные согласованы до и после транзакции, что также известно как целостность данных. Изоляция: проблемы одновременного доступа между двумя транзакциями. Долговечность: после совершения транзакции ее нельзя изменить.
    3. Какие проблемы с изоляцией? Грязное чтение: одна транзакция считывает незафиксированные данные из другой транзакции. Неповторяемое чтение: одна транзакция считывает данные, отправленные другой транзакцией (обновление). Виртуальное чтение/фантомное чтение: одна транзакция считывает данные, отправленные другой транзакцией (добавленной), теоретическая информация.
    4. Как решить проблему изоляции? использоватьуровень изоляцииПриходитьруководитьрешение проблем。общий4добрыйуровень изоляции
      1. read uncommitted Чтение незафиксированных данных: одна транзакция считывает незафиксированные данные из другой транзакции.

      Было решено 0 проблем, и было 3 проблемы, включая грязное чтение, неповторяемое чтение и виртуальное чтение.

      1. read commmitted Чтение зафиксировано: одна транзакция считывает данные, зафиксированные другой транзакцией.

      Одна проблема, такая как грязное чтение, решена, и существуют две проблемы, такие как неповторяющееся чтение и виртуальное чтение.

      1. repeatable read Повторяемое чтение: в транзакции считываемые данные являются последовательными.

      Решены две проблемы, такие как грязное чтение и неповторяющееся чтение, и существует одна проблема, такая как виртуальное чтение.

      1. serializable Сериализация: одна транзакция, одновременно может быть только одна транзакция.

      Решены три проблемы, включая грязное чтение, неповторяемое чтение и виртуальное чтение, и всего проблем 0.

    5. Сравнение безопасности и производительности уровней изоляции? Безопасность: прочитать uncommitted < read commmitted < repeatable read < serializable Производительность: читать uncommitted > read commmitted > repeatable read > serializable
    6. Уровни изоляции по умолчанию для общих баз данных mysql:repeatable read Oracle:read commmitted
  • Модель транзакции с распределенными транзакциями?
    • Четыре режима распределенных транзакций: XA 、AT、TCC、Saga、
  • Режим XA: двухэтапная отправка на основе протокола XA
    • Преимущества: Высокая согласованность транзакций, соответствие принципам ACID. Поддерживаются широко используемые базы данных, а реализация проста.
    • недостаток: поскольку ресурсы базы данных должны быть заблокированы на первом этапе, ожидание не будет освобождено до конца второго этапа, что приведет к снижению производительности.
    • Режим AT: это неинвазивное решение для распределенных транзакций. Платформа Alibaba Seata реализует этот шаблон.
    • преимущество:
      • Завершение прямой отправки транзакций за один этап высвобождает ресурсы базы данных и повышает производительность.
      • Используйте глобальные блокировки для обеспечения изоляции чтения и записи.
      • Никакого вмешательства в код, платформа автоматически выполняет откат и отправку данных.
      • недостаток:
        • Это мягкое состояние между двумя фазами, которое в конечном итоге является согласованным, что может привести к некорректной записи.
      • Функция моментального снимка платформы повлияет на производительность, но она намного лучше, чем режим XA.
    • Режим ТСС: Реализуйте по собственным бизнес-сценариям Try、Confirm и Cancel Три действующих компенсационных механизма.
      • преимущество:
        • Непосредственно зафиксируйте транзакцию за один этап, освободите ресурсы базы данных и получите хорошую производительность.
        • По сравнению с моделью AT здесь нет необходимости создавать снимки или использовать глобальные блокировки, и она обеспечивает высочайшую производительность.
        • Не полагается на транзакции базы данных, но полагается на операции компенсации и может использоваться в нетранзакционных базах данных.
      • недостаток:
        • В случае проникновения кода необходимо вручную прописывать интерфейсы try, Confirm и Cancel, что слишком хлопотно.
        • Мягкое состояние, транзакции в конечном итоге согласованы
        • Необходимо учитывать ситуацию сбоя ConfirmиCancel
  • Режим саги: это решение для длинных транзакций.

3.6 Платежный бизнес

Какой вид оплаты использует проект электронной коммерции? Как происходит оплата?

  • WeChat Pay
  • Какие еще способы оплаты вы знаете?
    • WeChat Pay
    • платить, платить
    • Оплата UnionPay
  • Как обратный вызов успешного платежа вызывает локальный метод?
    • Технология проникновения в интранет

4. Какие трудности в проекте? Как вы это решили?

4.1 Сложность 1: Заказ бизнеса

  1. Включая несколько операций и несколько бизнес-операций, вам необходимо разместить заказ вместе с заказом. Таблица, заказ товаров, таблица заказов-товаров, новые данные, вычет инвентаря SKU, обновление данных elasticsearch, обновление данных Redis, ожидание операции.
  2. Эти операции либо все завершаются успешно, либо все терпят неудачу, и все они должны контролироваться точками распределенных транзакций, руководить которыми можно.

4.2 Сложность 2: Платежный бизнес

  1. Сервер WeChat уведомляет наш сервер об изменении статуса заказа. Поскольку разработка ведется во внутренней сети, как уведомить? Я проверил много информации и, наконец, нашел решение с помощью инструментов проникновения в интранет.
  2. Как серверная часть проекта уведомляет интерфейсную часть проекта о необходимости перехода на страницу в зависимости от статуса заказа? Используя веб-сокет, я никогда раньше не сталкивался с этим. Самообучение использовало веб-сокет и решило эту проблему.

4.3 Сложность 3: Поиск

Для поиска elasticsearch мы реализуем почти те же функции, что и JD.com и Taobao. Существует множество условий поиска, которые должны основываться на трехуровневой классификации, ключевых словах, брендах, спецификациях и параметрах спецификаций, сортировке по цене, сортировке по продажам, полке. сортировка по времени, сортировка по обзорам и разбиение на страницы. Для таких функций, как интерфейсная и серверная части, обе задачи сложны и трудны.

4.4 Сложность 4: Аутентификация разрешения

  1. Как обеспечить безопасность информации пользователей? Используя MD5+SHA для шифрования пароля, даже если пользовательская информация о данных будет украдена, вор не сможет получить информацию о пароле пользователя.
  2. Как обеспечить безопасность jwt? JWT увеличивает сложность взлома за счет разбрасывания соли.
  3. Как обеспечить безопасность каждого микросервиса? Авторизовано jwtруководить Аутентификации, не удалось выполнить синтаксический анализ jwt, и некоторые микросервисы недоступны.

5. Что вы получили от этого проекта?

  1. Это первый раз, когда мы реализуем такой крупный проект, и было внесено много улучшений с точки зрения бизнес-логики и объема кода.
  2. Умение решать ошибки
  3. Знакомство с новыми технологиями
  4. Самообучение привнесло много новых технологий
  5. Общение и сотрудничество важны
boy illustration
Углубленный анализ переполнения памяти CUDA: OutOfMemoryError: CUDA не хватает памяти. Попыталась выделить 3,21 Ги Б (GPU 0; всего 8,00 Ги Б).
boy illustration
[Решено] ошибка установки conda. Среда решения: не удалось выполнить первоначальное зависание. Повторная попытка с помощью файла (графическое руководство).
boy illustration
Прочитайте нейросетевую модель Трансформера в одной статье
boy illustration
.ART Теплые зимние предложения уже открыты
boy illustration
Сравнительная таблица описания кодов ошибок Amap
boy illustration
Уведомление о последних правилах Points Mall в декабре 2022 года.
boy illustration
Даже новички могут быстро приступить к работе с легким сервером приложений.
boy illustration
Взгляд на RSAC 2024|Защита конфиденциальности в эпоху больших моделей
boy illustration
Вы используете ИИ каждый день и до сих пор не знаете, как ИИ дает обратную связь? Одна статья для понимания реализации в коде Python общих функций потерь генеративных моделей + анализ принципов расчета.
boy illustration
Используйте (внутренний) почтовый ящик для образовательных учреждений, чтобы использовать Microsoft Family Bucket (1T дискового пространства на одном диске и версию Office 365 для образовательных учреждений)
boy illustration
Руководство по началу работы с оперативным проектом (7) Практическое сочетание оперативного письма — оперативного письма на основе интеллектуальной системы вопросов и ответов службы поддержки клиентов
boy illustration
[docker] Версия сервера «Чтение 3» — создайте свою собственную программу чтения веб-текста
boy illustration
Обзор Cloud-init и этапы создания в рамках PVE
boy illustration
Корпоративные пользователи используют пакет регистрационных ресурсов для регистрации ICP для веб-сайта и активации оплаты WeChat H5 (с кодом платежного узла версии API V3)
boy illustration
Подробное объяснение таких показателей производительности с высоким уровнем параллелизма, как QPS, TPS, RT и пропускная способность.
boy illustration
Удачи в конкурсе Python Essay Challenge, станьте первым, кто испытает новую функцию сообщества [Запускать блоки кода онлайн] и выиграйте множество изысканных подарков!
boy illustration
[Техническая посадка травы] Кровавая рвота и отделка позволяют вам необычным образом ощипывать гусиные перья! Не распространяйте информацию! ! !
boy illustration
[Официальное ограниченное по времени мероприятие] Сейчас ноябрь, напишите и получите приз
boy illustration
Прочтите это в одной статье: Учебник для няни по созданию сервера Huanshou Parlu на базе CVM-сервера.
boy illustration
Cloud Native | Что такое CRD (настраиваемые определения ресурсов) в K8s?
boy illustration
Как использовать Cloudflare CDN для настройки узла (CF самостоятельно выбирает IP) Гонконг, Китай/Азия узел/сводка и рекомендации внутреннего высокоскоростного IP-сегмента
boy illustration
Дополнительные правила вознаграждения амбассадоров акции в марте 2023 г.
boy illustration
Можно ли открыть частный сервер Phantom Beast Palu одним щелчком мыши? Супер простой урок для начинающих! (Прилагается метод обновления сервера)
boy illustration
[Играйте с Phantom Beast Palu] Обновите игровой сервер Phantom Beast Pallu одним щелчком мыши
boy illustration
Maotouhu делится: последний доступный внутри страны адрес склада исходного образа Docker 2024 года (обновлено 1 декабря)
boy illustration
Кодирование Base64 в MultipartFile
boy illustration
5 точек расширения SpringBoot, супер практично!
boy illustration
Глубокое понимание сопоставления индексов Elasticsearch.
boy illustration
15 рекомендуемых платформ разработки с нулевым кодом корпоративного уровня. Всегда найдется та, которая вам понравится.
boy illustration
Аннотация EasyExcel позволяет экспортировать с сохранением двух десятичных знаков.