На изображении представлен интерцептор, который проверяет, существует ли уже зарегистрированный пользователь с указанным именем. В соответствии с логикой на изображении, когда hasUsername() возвращает false, это означает, что имя пользователя уже существует.
На этом изображении показана логика проверки существования имени пользователя:
Основные компоненты включают Блум-фильтр и кэш.
Свойство Блум-фильтра заключается в том, что если он определяет, что имя пользователя не существует, то оно действительно не существует.
Кэш используется для повторного использования (не видно в документации), предположительно для отслеживания удаленных пользователей (Блум-фильтр позволяет только добавлять, но не удалять).Во-первых, если имя пользователя не существует в Блум-фильтре, то оно действительно не существует. Возвращаем true.
Во-вторых, если имя пользователя существует в Блум-фильтре, сначала проверяем кэш reuse. Если имя пользователя найдено в кэше, это означает, что оно не существует.
В-третьих, даже если имя пользователя существует в Блум-фильтре, но не существует в кэше reuse, это не означает, что имя пользователя существует. Необходимо проверить наличие имени пользователя в базе данных.
Можно ли подтвердить, что здесь есть проблема?
services/user-service/src/main/java/org/opengoofy/index12306/biz/userservice/service/impl/UserLoginServiceImpl.java 152-159
метод hasUsername в UserLoginServiceImpl