Primavera-nuvem-Alibaba
Primavera-nuvem-Alibaba-Nacos
Prefácio
Como a empresa refatorou o sistema, a tecnologia usada foi baseada no balde da família Spring-cloud-Alibaba, então pesquisei essa tecnologia no meu tempo livre.
Materiais de aprendizagem
Programa macaco DD Spring Cloud Aliabab tópico especial blog
Nacos document
1. Introdução
Consulte a introdução do site oficial do Nacos: Introdução ao Nacos
Instalar Nacos
Endereço de download: Versão 1.0 Link de download do Nacos Após o
download, descompacte, diferentes sistemas operacionais executam comandos de maneira diferente
Linux/Unix/Mac:sh startup.sh -m standalone
Windows:cmd startup.cmd -m standalone
Depois de iniciar o Nacos de acordo com o comando acima, visite: http://127.0.0.1:8848/nacos/, você pode entrar na página de gerenciamento de serviços do Nacos, como a seguir;
Crie acesso ao aplicativo para o centro de registro Nacos
Após o início do Nacos, podemos usá-lo como um centro de registro para gerenciar a interface (requer aplicativos de provedor e consumidor)
Prestador de serviços
Um: Criar um projeto chamado Spring-boot: primavera-nuvem-alibaba-dubbo -provider
dois: add pom.xml
arquivo, adicione as configurações dependências necessárias, tais 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>
Três: escreva uma interface 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: A anotação @EnableDiscoveryClient precisa ser adicionada à classe de inicialização para habilitar o registro e a descoberta do serviço Spring Cloud.
Quatro: Configure o nome do serviço e o endereço Nacos
spring:
application:
name: spring-cloud-alibaba-dubbo-provider
cloud:
nacos:
discovery:
server-addr: 47.104.219.70:8848
server:
port: 8899
Cinco: Iniciar o aplicativo criado acima
Depois que o aplicativo é iniciado, podemos ver o seguinte conteúdo no console ou no log, indicando que o registro foi bem-sucedido:
INFO 10476 --- [ main] o.s.c.a.n.registry.NacosServiceRegistry : nacos registry, alibaba-nacos-discovery-server 10.123.18.216:8001 register finished
Após o início da inicialização, podemos visitar a página de gerenciamento do Nacos http://127.0.0.1:8848/nacos/ para visualizar a lista de serviços e
exibir todos os serviços registrados atualmente, bem como o número de clusters, instâncias e instâncias íntegras de cada serviço . Clique em Detalhes, também podemos ver informações específicas da instância para cada serviço:
Servindo consumidores
Em seguida, precisamos criar um aplicativo para consumir os serviços que foram registrados com êxito
Etapa 1: Crie um aplicativo Spring Boot chamado: spring-cloud-alibaba-dubbo-consumer
Etapa 2: Edite o conteúdo dependente no pom.xml, assim como o provedor de serviços acima.
Etapa 3: Crie uma classe principal do aplicativo e implemente uma interface HTTP, na qual chame a interface do provedor de serviços.
@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;
}
}
}
Etapa 4: configure o nome e o endereço do Nacos para que os consumidores possam descobrir os serviços registrados no Nacos acima.
spring.application.name=alibaba-nacos-discovery-client-common
server.port=9000
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
A quinta etapa: inicie o consumidor do serviço e inicie o acesso por meio de ferramentas como curl ou carteiro.O seguinte usa curl como exemplo:
request url:http://132.147.3.156:8899/provider/demo