Primavera-nube-Alibaba-Nacos

Primavera-nube-Alibaba-Nacos

Prólogo

Como la empresa refactorizó el sistema, la tecnología utilizada se basó en el cubo de la familia Spring-cloud-Alibaba, por lo que investigué esta tecnología en mi tiempo libre.

Materiales de aprendizaje

Programa ape DD Spring Cloud Aliabab tema especial blog
Documento de Nacos

Introduccion

Consulte la introducción del sitio web oficial de Nacos: Introducción de Nacos

Instalar Nacos

Dirección de descarga: Enlace de descarga de la versión 1.0 Nacos Después de
descargar, descomprimir, diferentes sistemas operativos ejecutan comandos de manera diferente

Linux/Unix/Mac:sh startup.sh -m standalone
Windows:cmd startup.cmd -m standalone

Después de iniciar Nacos de acuerdo con el comando anterior, visite: http://127.0.0.1:8848/nacos/, puede ingresar a la página de administración de servicios de Nacos, de la siguiente manera;
Consola Nacos

Crear acceso de aplicación al centro de registro de Nacos

Una vez que se inicia Nacos, podemos usarlo como un centro de registro para administrar la interfaz (requiere aplicaciones de proveedores y consumidores)

Proveedor de servicios

Uno: Crear un proyecto llamado Primavera-arranque: primavera-nube-alibaba-dubbo -Proveedor
dos: Agregar pom.xmlarchivo, agregue las configuraciones dependencias necesarias, tales como:

<parent>
		<!-- 定义spring boot的版本 -->
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.4.RELEASE</version>
</parent>
<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-dubbo</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
		<!--spring cloud的版本以及spring cloud alibaba的版本,
		由于spring cloud alibaba还未纳入spring cloud的主版本管理中,所以需要自己加入--> 
    <dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Finchley.SR1</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>0.2.2.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

Tres: escriba una interfaz http

@RestController
@RequestMapping("/provider")
public class ProviderController {

    @Autowired
    private ConfigurableApplicationContext applicationContext;

    @Value("${server.port}")
    private Integer port;

    @Resource
    private DiscoveryClient discoveryClient;

    @GetMapping("/demo")
    public Object demo(String instance) {
        return "port= " + port + ", name=" + applicationContext.getEnvironment().getProperty("user.name") + ", age=" + applicationContext.getEnvironment().getProperty("user.age")
                + "discoveryClient" + discoveryClient.getInstances(instance);
    }

}

Nota: La anotación @EnableDiscoveryClient debe agregarse a la clase de inicio para permitir el registro y descubrimiento del servicio Spring Cloud.
Cuatro: Configure el nombre del servicio y la dirección de Nacos

spring:
  application:
    name: spring-cloud-alibaba-dubbo-provider
  cloud:
    nacos:
      discovery:
        server-addr: 47.104.219.70:8848
server:
  port: 8899

Cinco: Inicie la aplicación creada anteriormente
Después de iniciar la aplicación , podemos ver el siguiente contenido en la consola o el registro, lo que indica que el registro se realizó correctamente:

INFO 10476 --- [           main] o.s.c.a.n.registry.NacosServiceRegistry  : nacos registry, alibaba-nacos-discovery-server 10.123.18.216:8001 register finished

Después de comenzar todo bien, podemos visitar la página de administración de Nacos http://127.0.0.1:8848/nacos/ para ver la lista de servicios y
Lista de servicios de Nacosmostrar todos los servicios actualmente registrados, así como la cantidad de clústeres, instancias e instancias saludables de cada servicio. . Haga clic en Detalles, también podemos ver información de instancia específica para cada servicio:
Detalles del servicio

Sirviendo a los consumidores

A continuación, necesitamos crear una aplicación para consumir los servicios que se han registrado con éxito
Paso 1: Cree una aplicación Spring Boot llamada: spring-cloud-alibaba-dubbo-consumer
Paso 2: Edite el contenido dependiente en pom.xml, al igual que el proveedor de servicios anterior.
Paso 3: Cree una clase principal de aplicación e implemente una interfaz HTTP, en la que llame a la interfaz del proveedor de servicios.

@EnableDiscoveryClient
@SpringBootApplication
public class TestApplication {

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

    @Slf4j
    @RestController
    static class TestController {

        @Autowired
        LoadBalancerClient loadBalancerClient;

        @GetMapping("/test")
        public String test() {
            // 通过spring cloud common中的负载均衡接口选取服务提供节点实现接口调用
            ServiceInstance serviceInstance = loadBalancerClient.choose("alibaba-nacos-discovery-server");
            String url = serviceInstance.getUri() + "/hello?name=" + "didi";
            RestTemplate restTemplate = new RestTemplate();
            String result = restTemplate.getForObject(url, String.class);
            return "Invoke : " + url + ", return : " + result;
        }
    }
}

Paso 4: Configure el nombre del servicio y la dirección de Nacos para que los consumidores puedan descubrir los servicios registrados anteriormente en Nacos.

spring.application.name=alibaba-nacos-discovery-client-common
server.port=9000

spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

El quinto paso: iniciar el consumidor de servicios y luego iniciar el acceso a través de herramientas como curl o cartero. A continuación se utiliza curl como ejemplo:

request url:http://132.147.3.156:8899/provider/demo
8 artículos originales publicados · Me gusta0 · Visitas 45

Supongo que te gusta

Origin blog.csdn.net/weixin_41213402/article/details/105369546
Recomendado
Clasificación