Primavera-nube-Alibaba
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;
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.xml
archivo, 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
mostrar 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:
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