I. Visão geral
É separar o cliente e o servidor um por um e, em seguida, lançar cada um na nuvem de boot da primavera e colocá-los juntos quando forem necessários.
2. Simples de usar
A estrutura é assim, um servidor eureka, usado como intermediário, centro de registro.
1. eureka-server (Centro de Registro)
eureka é feito pela Netflix, mas faz parte da nuvem da primavera.
O projeto eureka-server contém apenas este
Registro
- Configurar as informações de eureka
- Use as anotações para
@EnableEurekaServer
abrir o servidor Eureka antes da classe do programa principal
Configure as informações do eureka: application.yml:
server:
port: 8761
eureka:
instance:
hostname: eureka-server #eureka实例的主机名字
client:
register-with-eureka: false #不把自己注册到eureka,因为这是个中间人
fetch-registry: false #不从eureka上获取服务的注册信息
service-url:
defaultZone: http://localhost:8761/eureka/
2. Provider-ticket (provedor de serviços)
- Escreva a camada de serviço e a camada de controle
- Configure as informações do eureka e adicione o aplicativo ao eureka
1) Configure as informações de eureka: application.yml:
server:
port: 8001
spring:
application:
name: provider-ticket
eureka:
instance:
prefer-ip-address: true #注册的时候使用服务的IP地址
client:
service-url:
defaultZone: http://localhost:8761/eureka/
Sim, sempre há algo para produzir, então dois
2) Categoria de serviço
@Service
public class TicketService {
public String getTicket(){
return "《一张掉影票》";
}
}
3) Categoria de controle
@RestController
public class TicketController {
@Autowired
TicketService ticketService;
@GetMapping("/")
public String getTicket(){
return ticketService.getTicket();
}
}
Quando o servidor eureka ainda é iniciado, o tíquete de provedor também é iniciado e o aplicativo será adicionado ao eureka
Como você pode ver, ele foi adicionado. Se você copiar mais cópias e alterar a porta, haverá mais cópias exibidas aqui.
3. Consumidor-usuário (consumidor, cliente)
- Gravar arquivo de configuração
- Classe de controle de escrita
- Adicione anotações e métodos ao programa principal
Também importar
1) Arquivo de configuração
server:
port: 8200
spring:
application:
name: consumer-user
eureka:
instance:
prefer-ip-address: true #注册的时候使用服务的IP地址
client:
service-url:
defaultZone: http://localhost:8761/eureka/
2) Categoria principal do programa
@EnableDiscoveryClient
@SpringBootApplication
public class ConsumerUserApplication {
public static void main(String[] args) {
SpringApplication.run(ConsumerUserApplication.class, args);
}
@Bean //加入到容器中
@LoadBalanced //使用负载均衡机制
public RestTemplate restTemplate(){
return new RestTemplate();
}
}
@EnableDiscoveryClient
: Notas de descoberta de serviço@LoadBalanced
Usando o mecanismo de balanceamento de carga, o que é o mecanismo de balanceamento de carga? Tudo o que você precisa saber é que, ao ligar isso, você pode reduzir a pressão na memória.RestTemplate restTemplate()
Algo para nos ajudar a enviar solicitações de http
3) Categoria de controle
@RestController
public class UserController {
@Autowired
RestTemplate restTemplate;
@GetMapping("/buy")
public String buyTicket(String name){
String s = restTemplate.getForObject("http://provider-ticket/", String.class);
return name + "购买了"+s;
}
}
RestTemplate restTemplate
Basta injetar isso automaticamentegetForObject("http://服务提供者的名字+服务提供类的控制类请求",发请求类的返回值的类型)
: O uso de restTemplatehttp://
é fixo, o nome da classe que fornece o serviço éprovider-ticket
, uma solicitação de sua classe de controle é/
, o tipo de retorno dessa classe é String.
4) Efeito
Este é apenas um aplicativo simples, o mais complexo ainda é o aprendizado
Três, implantação rápida
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
O que há de novo, ctrl + F9