springcloud (Servicios de Comunicación)

En primer lugar, la comunicación de servicio

  • uso RestTemplate Vamos a mostrarle una simple comunicación entre la demanda del servicio: el usuario para escribir interfaces de micro controlador de devolución del servicio objeto Usuario, solicitud de inicio de servicio para obtener órdenes para el objeto de micro-usuario para el usuario a través del servidor RestTemplate, órdenes de servicio de acceso del navegador, get usuario.
    Aquí Insertar imagen Descripción

1. Estructuras módulo de usuario

1.1. Creación de Proyectos
  • Órdenes de servicio al cliente de llamada de servicio objeto de usuario para la comunicación, los servicios de usuario necesarios para proporcionar servicios entre usuarios, orden del usuario para obtener el servicio, hemos encontrado dos servicios tendrán que utilizar el objeto de usuario, entonces lo consideramos como un público extracción de objetos del usuario módulo springcloud-user-common
módulos comunes 1.2.user-común crear un usuario
public class User {
    private Long id;
    private String username;
    private String desc;

    public User() {
    }

    public User(Long id, String username, String desc) {
        this.id = id;
        this.username = username;
        this.desc = desc;
    }
//...省略getter,setter...

proveedor de servicios 2.User-servidor para las interfaces de escritura

2.1 se basan en el módulo pública
  • necesidad de contar con módulo de servicio al cliente usuario, a continuación, volver a la exposición de interfaz de usuario, que proporciona acceso a servicio de pedidosmódulo de servidor de usuario al módulo de importación de usuario común
<dependency>
    <groupId>cn.itsource.springcloud</groupId>
    <artifactId>springcloud-user-common</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>
2.2. Crear un controlador
//用户服务
@RestController
public class UserController {

    @Value("${server.port}")
    private int port;
    
	//订单服务来调用这个方法      http://localhost:1020/user/10
    // @GetMapping(value = "/user/{id}" )
    @RequestMapping(value = "/user/{id}",method = RequestMethod.GET)
    public User getUser(@PathVariable("id")Long id){
        return new User(id,"王哈哈" + id,"帅气 + port:" + port);
    }

}

3.Order-servidor de Servicios al Consumidor

Crear un módulo para servidores

3.1. Se basan en el módulo pública
<dependency>
    <groupId>cn.itsource.springcloud</groupId>
    <artifactId>springcloud-user-common</artifactId>
     <version>1.0-SNAPSHOT</version>
</dependency>
3.2 Definición de RestTemplate frijol
  • RestTemplate es un estilo basado reparador herramienta Conjunto de muelles cliente HTTP, HTTP solicitud al usuario para iniciar el servicio
/**
 * @EnableEurekaServer:开启eurekaServer服务端
 */
@SpringBootApplication
@EnableEurekaClient
public class OrderServerApplicationConfig {

    //配置一个RestTemplate ,Spring封装的一个Restful风格的http客户端 工具
    @Bean
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }

    public static void main(String[] args) {
        SpringApplication.run(OrderServerApplicationConfig.class,args);
    }
}
3.3 Definiciones consumidores Controlador
//订单服务
@RestController
public class OrderController {

    //需要配置成Bean
    @Autowired
    private RestTemplate  restTemplate ;

    //浏览器调用该方法
    @RequestMapping(value = "/order/{id}",method = RequestMethod.GET)
    public User getById(@PathVariable("id")Long id){
        //发送http请求调用 user的服务,获取user对象 : RestTemplate
        //user的ip,user的端口,user的Controller路径
        String url = "http://localhost:1020/user/"+id;

        //发送http请求
        return restTemplate.getForObject(url, User.class);
    }
}

4. Prueba

Navegador para acceder a http: // localhost: 1030 / pedido / 1, devuelve el resultado de Usuario

Dos .EurekaServer HA Cluster

1. ¿Por qué clúster de alta disponibilidad

1.1.EurekaServer fallo de nodo único
  • Si sólo hay un EurekaSever, si EurekaSever colgó los enteros micro-servicios no están disponibles, la solución: EurekaServer clúster de alta disponibilidad.

cúmulo 2.EurekaServer

soluciones 2.1.EurekaServer agrupación

Documentos Dirección: https://cloud.spring.io/spring-cloud-static/Greenwich.SR5/single/spring-cloud.html#spring-cloud-eureka-server-peer-awareness

  • Preparar tres EurekaServer registrada entre sí, lo que significa que se requieren cada EurekaServer para registrar todas EureakServer, incluido el propio, cada EurekaServer que actúa como un servidor, sino también actuar como un cliente. Nuestra otra necesidad de micro-servicio (orden, el usuario) único punto a toda la dirección EurekaServer registrado.
    Aquí Insertar imagen Descripción
2.2. Cúmulos de construcción EurekaServer

1. Cree tres dominio local C: \ Windows \ System32 \ drivers \ etc \ hosts

127.0.0.1 peer1
127.0.0.1 peer2
127.0.0.1 peer3

2. Modificar el registro de Eureka-server-1010 configuración de alta disponibilidad

reglas de configuración Nota:

  • solo archivo de configuración multi-entorno de configuración SpringBoot

  • Debido a que los tres EurekaServer que se ha registrado en el uno al otro, tres EurekaServer de ServiceUrl son los mismos, ponemos ServiceUrl atraído por la parte superior, incluyendo el uso de registro de dirección IP (prefer-ip-address), mecanismo de autoprotección EureakServer (enable-auto -preservation), así como el nombre de servicio (application.name) es el mismo punto, puede ser bombeado a la parte superior.

  • Cada EurekaServer diferentes configuraciones: puerto (puerto), el nombre del entorno (perfiles), el nombre de host (hostname), ID de instancia (instancia-id :)

eureka:
  client:
    serviceUrl:
      defaultZone: http://peer1:1010/eureka/,http://peer2:1011/eureka/,http://peer3:1012/eureka/
  instance:
      prefer-ip-address: true
  server:
    enable-self-preservation: false #关闭自我保护警告o
spring:
  profiles:
    active: peer1
  application:
    name: eureka-peer
---
#peer1第一个Eureka
spring:
  profiles: peer1
server:
  port: 1010  #端口
eureka:
  instance:
    hostname: peer1  #主机
    instance-id: eureka-peer1:1010
---
#peer2第二个Eureka
spring:
  profiles: peer2
server:
  port: 1011  #端口
eureka:
  instance:
    hostname: peer2  #主机
    instance-id: eureka-peer2:1011
---
#peer3第三个Eureka
spring:
  profiles: peer3
server:
  port: 1012  #端口
eureka:
  instance:
    hostname: peer3 #主机
    instance-id: eureka-peer3:1012
2.3. Cúmulo de inicio EurekaServer

1. IDEA de múltiples instancias necesidad de especificar la configuración de arranque
Aquí Insertar imagen Descripción
2. Comenzar tres veces EurekaServerApplication1010, cada vez que comience a activar cuando la necesidad de modificar el entorno

spring:
  profiles:
    active: peer3 #这里启动一次需要修改一次 ,每次启动使用不同的环境配置
    

3. Micro-servicio registrado en las agrupaciones de Eureka

  • Configuración de usuarios del servicio de micro y órdenes, el registro de toda modificación de dirección EurekaServer a la dirección registrada ese usuario en el servidor y el orden-servidor con todo esto, como sigue
eureka:
  client:
    serviceUrl:
      defaultZone: http://peer1:1010/eureka/,http://peer2:1011/eureka/,http://peer3:1012/eureka/ #注册中心地址
Publicado 33 artículos originales · ganado elogios 0 · Vistas 396

Supongo que te gusta

Origin blog.csdn.net/weixin_45737653/article/details/104964072
Recomendado
Clasificación