Всего в проекте 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)
RSA выполняет операции шифрования и используется для помощи в создании или проверке токенов.
Стек технологий персистентности:
MyBatis Плюс: используется для замены MyBatis и обычного Mapper, предоставляя улучшенные инструменты и соответствующие улучшения производительности.
Spring data redis: используется для упрощения операций Redis в Java.
spring data elasticsearch: используется для упрощения операций Java в es.
база данных:
MySQL: бесплатно
MyCat: используется для сегментирования базы данных и таблиц.
Внешний интерфейс:
Али Большая Рыба: Отправить Короткое сообщение
Платежный интерфейс WeChat
2. Внедряйте проекты электронной коммерции.
Расскажите, пожалуйста, о проекте, который вам наиболее знаком?
Расскажите о недавно реализованном проекте?
2.1 Бэкенд и фронтенд, бэкенд и фронтенд
Как интерфейсную, так и внутреннюю часть можно разработать, разделив переднюю и внутреннюю части, образуя, таким образом, соответствующие интерфейсную и внутреннюю части.
Бэкэнд: доступен администраторам.
Электронная Серверный модуль коммерции: управление участниками, управление категориями точек, экспресс-управление, управление рекламой, управление продуктами, управление заказами, управление финансами, управление отчетами.
Стойка регистрации: доступна для пользователей. На данный момент завершено Электронная Коммерческий проект — это только часть точки, завершена часть стойки регистрации.
маршрутизатор: маршрутизация, функция сопоставления, чтобы путь доступа можно было сопоставить с соответствующим ресурсом 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.
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: онлайн/оффлайн, заказ через онлайн руководить, доставка через офлайн руководить.
Класс констант, функционально эквивалентный перечислению выше.
Язык кода: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 шлюз, связанный со шлюзом
шлюз Какова функция шлюза? Какова роль шлюза?
динамическая маршрутизация
балансировка нагрузки
Аутентификация
2.9, связанные с НАКО
Какова роль НАКО?
Центр регистрации микросервисов: Узнать местоположение соответствующего сервиса можно по названию сервиса.
Центр конфигурации микросервисов: извлеките содержимое файла конфигурации ymliliproperties в nacos. Изменение nacos эквивалентно изменению файла ymliliproperties.
Зачем тебе накос?
Архитектура микросервисов требует центра регистрации для управления всеми микросервисами. Реальный IP-адрес + номер порта каждой службы удобно узнавать по имени службы. Между проектами необходимо записывать только имя службы, а реальный адрес и номер порта службы можно изменить по желанию.
Вам необходимо выбрать центр регистрации ваших микросервисов.
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 , Самое популярное сегодня решение для междоменной аутентификации.
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
Корзинный Бизнес — один из основных видов деятельности торгового центра. Каковы функции корзины для покупок?
добавить в корзину
Изменить количество товаров в корзине
Изменить статус проверки товаров в корзине
Удалить товары из корзины
Зачем использовать 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 используются бизнес-вызовы между несколькими службами, поэтому мы используем точечно распределенные транзакции для обеспечения согласованности и полноты данных.
Характеристики сделок?
Что такое транзакция?
В наборе операций бизнес-логики (ABCD) либо все выполняются успешно, либо все терпят неудачу.
Каковы особенности транзакций?
ACID 4 функции
Атомарность: транзакция представляет собой неделимое целое.
Согласованность: данные согласованы до и после транзакции, что также известно как целостность данных.
Изоляция: проблемы одновременного доступа между двумя транзакциями.
Долговечность: после совершения транзакции ее нельзя изменить.
Какие проблемы с изоляцией?
Грязное чтение: одна транзакция считывает незафиксированные данные из другой транзакции.
Неповторяемое чтение: одна транзакция считывает данные, отправленные другой транзакцией (обновление).
Виртуальное чтение/фантомное чтение: одна транзакция считывает данные, отправленные другой транзакцией (добавленной), теоретическая информация.
Как решить проблему изоляции?
использоватьуровень изоляцииПриходитьруководитьрешение проблем。общий4добрыйуровень изоляции
read uncommitted Чтение незафиксированных данных: одна транзакция считывает незафиксированные данные из другой транзакции.
Было решено 0 проблем, и было 3 проблемы, включая грязное чтение, неповторяемое чтение и виртуальное чтение.
read commmitted Чтение зафиксировано: одна транзакция считывает данные, зафиксированные другой транзакцией.
Одна проблема, такая как грязное чтение, решена, и существуют две проблемы, такие как неповторяющееся чтение и виртуальное чтение.
repeatable read Повторяемое чтение: в транзакции считываемые данные являются последовательными.
Решены две проблемы, такие как грязное чтение и неповторяющееся чтение, и существует одна проблема, такая как виртуальное чтение.
serializable Сериализация: одна транзакция, одновременно может быть только одна транзакция.
Решены три проблемы, включая грязное чтение, неповторяемое чтение и виртуальное чтение, и всего проблем 0.
Уровни изоляции по умолчанию для общих баз данных
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: Заказ бизнеса
Включая несколько операций и несколько бизнес-операций, вам необходимо разместить заказ вместе с заказом. Таблица, заказ товаров, таблица заказов-товаров, новые данные, вычет инвентаря SKU, обновление данных elasticsearch, обновление данных Redis, ожидание операции.
Эти операции либо все завершаются успешно, либо все терпят неудачу, и все они должны контролироваться точками распределенных транзакций, руководить которыми можно.
4.2 Сложность 2: Платежный бизнес
Сервер WeChat уведомляет наш сервер об изменении статуса заказа. Поскольку разработка ведется во внутренней сети, как уведомить? Я проверил много информации и, наконец, нашел решение с помощью инструментов проникновения в интранет.
Как серверная часть проекта уведомляет интерфейсную часть проекта о необходимости перехода на страницу в зависимости от статуса заказа? Используя веб-сокет, я никогда раньше не сталкивался с этим. Самообучение использовало веб-сокет и решило эту проблему.
4.3 Сложность 3: Поиск
Для поиска elasticsearch мы реализуем почти те же функции, что и JD.com и Taobao. Существует множество условий поиска, которые должны основываться на трехуровневой классификации, ключевых словах, брендах, спецификациях и параметрах спецификаций, сортировке по цене, сортировке по продажам, полке. сортировка по времени, сортировка по обзорам и разбиение на страницы. Для таких функций, как интерфейсная и серверная части, обе задачи сложны и трудны.
4.4 Сложность 4: Аутентификация разрешения
Как обеспечить безопасность информации пользователей? Используя MD5+SHA для шифрования пароля, даже если пользовательская информация о данных будет украдена, вор не сможет получить информацию о пароле пользователя.
Как обеспечить безопасность jwt? JWT увеличивает сложность взлома за счет разбрасывания соли.
Как обеспечить безопасность каждого микросервиса? Авторизовано jwtруководить Аутентификации, не удалось выполнить синтаксический анализ jwt, и некоторые микросервисы недоступны.
5. Что вы получили от этого проекта?
Это первый раз, когда мы реализуем такой крупный проект, и было внесено много улучшений с точки зрения бизнес-логики и объема кода.