Регистрация webpage_dubbo регистрация сервиса
Регистрация webpage_dubbo регистрация сервиса

Всем привет, мы снова встретились, я ваш друг Цюаньчжаньцзюнь.

Каталог статей

Предисловие

Примерно в прошлом году я обнаружил, что при использовании эврики в производственной среде я часто обнаруживал, что служба приостановлена ​​и эврика не запускается. Тогда мне пришла в голову идея попробовать другой центр регистрации. Потом я узнал о nacos. , который оказался интегрирован с центром конфигурации. Однако из-за опасений по поводу нестабильной производственной среды и потери данных во время переключения я так и не переключился. Однако в этой статье я поменяю центр регистрации последующих проектов. смоделировать, как плавно переключить эврику на нако.

Сборка родительского проекта

Здесь я создал отдельный родительский проект внутри родительского проекта и смоделировал старый и новый микросервисы в Alibaba-cloud и Netflix-cloud соответственно.

Пом родительского проекта

Язык кода:javascript
копировать
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>top.fate</groupId>
    <artifactId>nacoAndEureka</artifactId>
    <packaging>pom</packaging>
    <version>1.0.0</version>
    <modules>
        <module>netflix-cloud</module>
        <module>alibaba-cloud</module>
    </modules>
</project>

Имитация устаревших микросервисов

Язык кода:javascript
копировать
 netflix-cloud Пом выглядит следующим образом ,Потому что это имитация старого сервиса,Так что все используют старую версию
Язык кода:javascript
копировать
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>nacoAndEureka</artifactId>
        <groupId>top.fate</groupId>
        <version>1.0.0</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>netflix-cloud</artifactId>
    <packaging>pom</packaging>
    <modules>
        <module>eureka</module>
        <module>eureka-provider</module>
        <module>eureka-consumer</module>
    </modules>

    <properties>
        <spring.boot.version>2.1.2.RELEASE</spring.boot.version>
        <spring.cloud.version>Greenwich.SR5</spring.cloud.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <!-- springBoot -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring.boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!-- springCloud -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring.cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

</project>

Построить эврику

  • Зависимости pom следующие
Язык кода:javascript
копировать
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>netflix-cloud</artifactId>
        <groupId>top.fate</groupId>
        <version>1.0.0</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>eureka</artifactId>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
    </dependencies>
</project>
  • Класс запуска EurekaApplication
Язык кода:javascript
копировать
package top.fate.eureka;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@EnableEurekaServer
@SpringBootApplication
public class EurekaApplication { 
   

	public static void main(String[] args) { 
   
		SpringApplication.run(EurekaApplication.class, args);
	}
}
  • application.yml
Язык кода:javascript
копировать
server:
  port: 8761
spring:
  application:
    name: eureka-service
eureka:
  instance:
    # Установите имя хоста центра регистрации услуг.
    hostname: 127.0.0.1
  client:
    # Мы создаем центр регистрации сервиса, а не обычное приложение. Это приложение само зарегистрируется в центре регистрации.
    # установите значение false, чтобы запретить себе регистрацию.
    register-with-eureka: false
    # Не извлекайте другие сервисы, поскольку ответственность за обслуживание экземпляров сервиса лежит на самом центре регистрации.
    fetch-registry: false
    # Определить местонахождение центра регистрации услуг
    service-url.defaultZone: http://${ 
   eureka.instance.hostname}:${ 
   server.port}/eureka/

eureka-provider

  • Зависимости pom следующие
Язык кода:javascript
копировать
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>netflix-cloud</artifactId>
        <groupId>top.fate</groupId>
        <version>1.0.0</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>eureka-provider</artifactId>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
    </dependencies>

</project>
  • Класс запуска EurekaProviderApplication
Язык кода:javascript
копировать
package top.fate.eurekaprovider;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

/** * @auther:Wangxl * @Emile:18335844494@163.com * @Time:2022/6/16 14:23 */
@SpringBootApplication
@EnableEurekaClient
@RestController
public class EurekaProviderApplication { 
   
    public static void main(String[] args) { 
   
        SpringApplication.run(EurekaProviderApplication.class, args);
    }

    @GetMapping("/info")
    public String info(){ 
   
        return "this is eureka-service";
    }
}
  • application.yml
Язык кода:javascript
копировать
server:
  port: 8081
spring:
  application:
    name: provider
eureka:
  client:
    service-url:
      defaultZone: "http://localhost:8761/eureka"

eureka-consumer

  • Зависимости pom следующие
Язык кода:javascript
копировать
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>netflix-cloud</artifactId>
        <groupId>top.fate</groupId>
        <version>1.0.0</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>eureka-consumer</artifactId>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>io.github.openfeign</groupId>
            <artifactId>feign-httpclient</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
    </dependencies>
</project>
  • Класс запуска EurekaConsumerApplication
Язык кода:javascript
копировать
package top.fate.eurekaconsumer;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import top.fate.eurekaconsumer.client.EurekaProviderClient;

/** * @auther:Wangxl * @Emile:18335844494@163.com * @Time:2022/6/16 14:43 */
@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients(clients = EurekaProviderClient.class)
public class EurekaConsumerApplication { 
   
    public static void main(String[] args) { 
   
        SpringApplication.run(EurekaConsumerApplication.class, args);
    }
}
  • EurekaProviderClient
Язык кода:javascript
копировать
package top.fate.eurekaconsumer.client;

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;

/** * @auther:Wangxl * @Emile:18335844494@163.com * @Time:2022/6/16 14:48 */
@FeignClient(value = "provider")
public interface EurekaProviderClient { 
   

    @GetMapping("info")
    String info();
}
  • ConsumerController
Язык кода:javascript
копировать
package top.fate.eurekaconsumer.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import top.fate.eurekaconsumer.client.EurekaProviderClient;

import javax.annotation.Resource;

/** * @auther:Wangxl * @Emile:18335844494@163.com * @Time:2022/6/16 14:48 */
@RestController
public class ConsumerController { 
   

    @Resource
    private EurekaProviderClient eurekaProviderClient;

    @GetMapping("getProvider")
    public String getProvider(){ 
   
        return eurekaProviderClient.info();
    }

}

Проверьте, можно ли настроить услугу

Здесь все три моих сервиса запускаются нормально, я напрямую обращаюсь к 8091consumer для тестирования. Как показано на рисунке ниже, потребитель может получить доступ к провайдеру.

Блок-схема первого этапа


Моделирование новых версий микросервисов

Язык кода:javascript
копировать
alibaba-cloud Пом выглядит следующим образом,Используйте последнюю версию стека технологий
Язык кода:javascript
копировать
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>nacoAndEureka</artifactId>
        <groupId>top.fate</groupId>
        <version>1.0.0</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>alibaba-cloud</artifactId>
    <packaging>pom</packaging>
    <modules>
        <module>nacos-consumer</module>
        <module>nacos-provider</module>
    </modules>

    <properties>
        <spring.boot.version>2.6.3</spring.boot.version>
        <spring.cloud.version>2021.0.1</spring.cloud.version>
        <spring.cloud.alibaba.version>2021.0.1.0</spring.cloud.alibaba.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <!-- springBoot -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring.boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!-- springCloud -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring.cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!-- spring-cloud-alibaba -->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring.cloud.alibaba.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
</project>

Начать установку nacos

Можно обратиться кSpringCloudAlibaba (2) Интеграция центра конфигурации регистрации Nacos Я не буду повторять действия, описанные в этой статье.


nacos-provider

  • зависимость от помпа
Язык кода:javascript
копировать
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>alibaba-cloud</artifactId>
        <groupId>top.fate</groupId>
        <version>1.0.0</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>nacos-provider</artifactId>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>2021.0.1.0</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
    </dependencies>
</project>
  • Класс запуска NacosProviderApplication
Язык кода:javascript
копировать
package top.fate.nacosprovider;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationProperties;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

/** * @auther:Wangxl * @Emile:18335844494@163.com * @Time:2022/6/16 16:55 */
@SpringBootApplication
@RestController
@EnableConfigurationProperties(AutoServiceRegistrationProperties.class)
public class NacosProviderApplication { 
   

    public static void main(String[] args) { 
   
        SpringApplication.run(NacosProviderApplication.class, args);
    }

    @GetMapping("/info")
    public String info() { 
   
        return "this is nacos-service";
    }
}
  • application.properties
Язык кода:javascript
копировать
spring.autoconfigure.exclude=org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationAutoConfiguration
  • application.yml
Язык кода:javascript
копировать
url:
  nacos: localhost:8848
server:
  port: 8082
spring:
  application:
    name: provider
  profiles:
    active: dev
  cloud:
    nacos:
      discovery:
        #Изоляция среды кластера
        cluster-name: shanghai
        #пространство имен
        namespace: ${ 
   spring.profiles.active}
        #Экземпляр персистентности Правда — это временный экземпляр false — постоянный экземпляр Если исключение возникает во временном экземпляре, оно будет удалено напрямую. пока постоянный экземпляр ожидает восстановления
        ephemeral: true
        #Адрес регистрационного центра
        server-addr: ${ 
   url.nacos}
eureka:
  client:
    service-url:
      defaultZone: "http://localhost:8761/eureka"

nacos-consumer

  • зависимость от помпа
Язык кода:javascript
копировать
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>alibaba-cloud</artifactId>
        <groupId>top.fate</groupId>
        <version>1.0.0</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>nacos-consumer</artifactId>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>2021.0.1.0</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>io.github.openfeign</groupId>
            <artifactId>feign-httpclient</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
    </dependencies>
</project>
  • Класс запуска NacosConsumerApplication
Язык кода:javascript
копировать
package top.fate.nacosconsumer;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationProperties;
import org.springframework.cloud.openfeign.EnableFeignClients;
import top.fate.nacosconsumer.client.EurekaProviderClient;
import top.fate.nacosconsumer.client.NacosProviderClient;
import top.fate.nacosconsumer.client.ProviderClient;

/** * @auther:Wangxl * @Emile:18335844494@163.com * @Time:2022/6/16 16:39 */
@SpringBootApplication
@EnableFeignClients(clients = { 
   EurekaProviderClient.class, NacosProviderClient.class, ProviderClient.class})
@EnableConfigurationProperties(AutoServiceRegistrationProperties.class)
public class NacosConsumerApplication { 
   

    public static void main(String[] args) { 
   
        SpringApplication.run(NacosConsumerApplication.class, args);
    }
}
  • ProviderClient
Язык кода:javascript
копировать
package top.fate.nacosconsumer.client;

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;

/** * @auther:Wangxl * @Emile:18335844494@163.com * @Time:2022/6/16 18:24 */
@FeignClient(value = "provider")
public interface ProviderClient { 
   

    @GetMapping("info")
    String info();
}
  • ConsumerController
Язык кода:javascript
копировать
package top.fate.nacosconsumer.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import top.fate.nacosconsumer.client.ProviderClient;

import javax.annotation.Resource;

/** * @auther:Wangxl * @Emile:18335844494@163.com * @Time:2022/6/16 14:48 */
@RestController
public class ConsumerController { 
   

    @Resource
    private ProviderClient providerClient;

    @GetMapping("getProvider")
    public String getProvider(){ 
   
        return providerClient.info();
    }
}
  • application.properties
Язык кода:javascript
копировать
spring.autoconfigure.exclude=org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationAutoConfiguration
  • application.yml
Язык кода:javascript
копировать
url:
  nacos: localhost:8848
server:
  port: 8092
spring:
  application:
    name: nacos-consumer
  profiles:
    active: dev
  cloud:
    nacos:
      discovery:
        #Изоляция среды кластера
        cluster-name: shanghai
        #пространство имен
        namespace: ${ 
   spring.profiles.active}
        #Экземпляр персистентности Правда — это временный экземпляр false — постоянный экземпляр Если исключение возникает во временном экземпляре, оно будет удалено напрямую. пока постоянный экземпляр ожидает восстановления
        ephemeral: true
        #Адрес регистрационного центра
        server-addr: ${ 
   url.nacos}
eureka:
  client:
    service-url:
      defaultZone: "http://localhost:8761/eureka"

Запущен новый сервис провайдера с двойной регистрацией и двойной подпиской

Сначала запустите nacosProviderApplication.

Как показано на рисунке ниже, мы реализовали двойную регистрацию, и службы были зарегистрированы как в nacos, так и в eureka. Накос

eureka


Плавно переключайте центры регистрации

Проверить старого потребителя

Здесь я посещаю8091старая версияNetflixКлиентeureka-consumer,Посмотрите, как называется8081 eureka Еще 8082 nacos , Здесь я вызывал его неоднократно более десяти раз, и возвращаемый результат:

  • this is nacos-service
  • this is eureka-service Потому что в это время наш8091Только клиентeurekaClient,тогда нашУ провайдера есть два экземпляра в реестре eureka.,Так это спровоцировалобалансировка нагрузки,Здесь мы используем значение по умолчаниюРежим опроса,Текущий процесс показан ниже.

Отключите старого провайдера

Теперь мы можем начать сглаживать одно за другимСменить регистрационный центрПонятно,Старый провайдер может быть отключен,выключатьстарый провайдер На этом этапе процесс будет таким: показано ниже Понятно

Мы приедем снова в это времястарый потребительвернется только this is nacos-service, потому что старый провайдер не в сети , сменился новый провайдер!

Двойная онлайн-регистрация и двойная подписка — новые потребительские услуги, старые потребители — оффлайн

Запустите nacoConsumerApplication

Посетите 8092, чтобы проверить, нормальный ли доступ. Продолжайте получать доступ к интерфейсу getProvider. Как показано на рисунке ниже, доступ нормальный. Затем мы можем отключить старую потребительскую службу.

Сомнения (вы можете пропустить этот шаг)

Теперь у нас есть сомнения. Центров регистрации сейчас два, открытие сервиса делать через эврику или накос? С этой целью я провёл эксперимент и запустил. старый провайдерновый провайдерновый потребитель В настоящее время услуги центра двойной регистрации

  • eureka
    • provider8081、provider8082
    • consumer8092
  • nacos
    • provider8082
    • consumer8092

теперь япроходитьconsumer8092Клиент по запросу,Единственный полученный результат this is nacos-service , поэтому считается, что центр регистрации по умолчанию использует nacos. Из-за уходаnacosвернется толькоthis is nacos-service, Есть только один экземпляр нако. если пойтиЕсли используется эврика, она опросит и вернет это nacos-service, это eureka-service , у эврики есть два экземпляра.

  • Схема движения на данный момент Пунктирная линия означает, что линия свободна.

Здесь я нашел исходный код CompositeDiscoveryClient,Точка останова была установлена ​​при вызове,Создание системы обнаружения ПонятноТри открытия Клиенты ,nacosпервый в очереди,Если он доступен, он вернется напрямую, поэтому можно понять, что по умолчанию используется nacos.

Здесь я подумал, что у nacos есть функция автономного обслуживания. Если я отключу сервис в nacos, мне придется перейти на эврику.

Подождав несколько секунд,проходитьconsumer8092Клиент по запросу,получать Понятнорезультат, который я хочу Опрос вернулся отдельно this is nacos-servicethis is eureka-service,Это доказывает, что эврика использовалась

  • График движения на данный моментПунктирная линия означает, что линия свободна.

наконец

В настоящее время мы производим вышеуказанное новый потребитель、новый провайдер、eureka、nacos,Поскольку мы переходим на накос, эврика тоже будет остановлена.,мы можемДоверия и настройки эврики будут удалены из следующей версии сервиса.,Оставь только нако,После развертывания этой новой версии вы можете остановить эврику.

  • Как показано ниже

Уведомление

Если вы напрямую введете eureka-client и nacos-client, будет сообщено об ошибке следующим образом:

Язык кода:javascript
копировать
Field autoServiceRegistration in org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationAutoConfiguration required a single bean, but 2 were found:
	- nacosAutoServiceRegistration: defined by method 'nacosAutoServiceRegistration' in class path resource [com/alibaba/cloud/nacos/registry/NacosServiceRegistryAutoConfiguration.class]
	- eurekaAutoServiceRegistration: defined by method 'eurekaAutoServiceRegistration' in class path resource [org/springframework/cloud/netflix/eureka/EurekaClientAutoConfiguration.class]
  1. Вам необходимо добавить следующее содержимое в файл конфигурации
Язык кода:javascript
копировать
spring.autoconfigure.exclude=org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationAutoConfiguration
  1. Добавить аннотацию к классу запуска
Язык кода:javascript
копировать
@EnableConfigurationProperties(AutoServiceRegistrationProperties.class)

Издатель: Лидер стека программистов полного стека, укажите источник для перепечатки: https://javaforall.cn/171872.html Исходная ссылка: https://javaforall.cn

boy illustration
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода