I. Panorama general
Es separar el cliente y el servidor uno por uno, y luego tirar cada uno en la Nube de Spring Boot, y juntarlos cuando sean necesarios.
2. Fácil de usar
La estructura es así, un servidor eureka, utilizado como intermediario, centro de registro.
1. eureka-server (Centro de registro)
eureka está hecho por Netflix, pero es parte de la nube de primavera.
El proyecto eureka-server solo contiene esto
Registro
- Configurar la información de eureka
- Utilice anotaciones para
@EnableEurekaServer
abrir el servidor Eureka antes de la clase del programa principal
Configure la información de 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. Boleto de proveedor (proveedor de servicios)
- Escribir capa de servicio y capa de control
- Configure la información de eureka y agregue la aplicación a eureka
1) Configure la información 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/
Sí, siempre hay algo que generar, luego dos
2) Categoría de servicio
@Service
public class TicketService {
public String getTicket(){
return "《一张掉影票》";
}
}
3) Categoría de control
@RestController
public class TicketController {
@Autowired
TicketService ticketService;
@GetMapping("/")
public String getTicket(){
return ticketService.getTicket();
}
}
Cuando el servidor eureka aún se inicia, también se inicia el ticket del proveedor y la aplicación se agregará a eureka
Como puede ver, se ha agregado. Si copia más copias y cambia el puerto, se mostrarán más copias aquí.
3. Consumidor-usuario (consumidor, cliente)
- Escribir archivo de configuración
- Escribir clase de control
- Agregue anotaciones y métodos al programa principal
También importar
1) Archivo de configuración
server:
port: 8200
spring:
application:
name: consumer-user
eureka:
instance:
prefer-ip-address: true #注册的时候使用服务的IP地址
client:
service-url:
defaultZone: http://localhost:8761/eureka/
2) Categoría de programa principal
@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 descubrimiento de servicios@LoadBalanced
Utilizando el mecanismo de equilibrio de carga, ¿qué es el mecanismo de equilibrio de carga? Todo lo que necesita saber es que si lo activa, puede reducir la presión sobre la memoria.RestTemplate restTemplate()
Algo que nos ayude a enviar solicitudes http
3) Categoría de control
@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
Solo inyecte esto automáticamentegetForObject("http://服务提供者的名字+服务提供类的控制类请求",发请求类的返回值的类型)
: El uso de restTemplatehttp://
es fijo, el nombre de la clase que brinda el servicio esprovider-ticket
, una solicitud de su clase de control es/
, el tipo de retorno de esta clase es String.
4) Efecto
Esta es solo una aplicación simple, la más compleja aún está aprendiendo
Tres, despliegue en caliente
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
Qué hay de nuevo, ctrl + F9