Servicio y encontró una interpretación del artículo de la arquitectura micro-servicios -Spring Nube

En primer lugar, ¿por qué la necesidad de descubrimiento de servicios

Brevemente, el servicio del núcleo se aplica de acuerdo con la parada tradicional una fracción de servicio en un servicio, y sobre esta base de servicio de micro a más completamente disociadas (no comparte DB, KV, retire de peso pesado ESB), e hizo hincapié en los DevOps y rápida evolución. Esto requiere que adoptemos y los tiempos de parada, diferente tecnología de pila era pan-SOA y Cloud, la primavera es uno de los mejores.

Inglés Desarrollo y Operaciones DevOps está en forma, le preguntó al desarrollo, prueba, operación y mantenimiento de la cooperación integrada, para hacer, versión más pequeña, más frecuentes más automatizado de aplicaciones, arquitectura de aplicaciones y la infraestructura que rodea a la infraestructura de generación. Esto requiere la plena aplicación de la cohesión, sino también facilitar la operación y mantenimiento y gestión. Esta idea coincide con el concepto de micro-servicio.

Siguiente servicio que la arquitectura evolución desde la perspectiva de la nube de primavera y ver qué más sensible a los servicios de micro-arquitectura.

Hablando desde 1,1 usando nginx

Las soluciones de servicio inicial es proporcionar los mismos servicios que proporcione un nombre de dominio y el servicio unificado de la persona que llama envía una petición HTTP, la petición Nginx responsable de la distribución y saltar al nombre de dominio.

Hay muchos problemas con esta arquitectura:

  • Nginx como una capa intermedia, se acopla en el archivo de configuración de la lógica de servicio invocación, lo que perjudica la integridad de la micro y servicios, pero también hace Nginx en un peso pesado ESB cierta medida.
  • servicios de información dispersos en varios sistemas, no pueden ser unificados de gestión y mantenimiento. Cada llamada de servicio es el primer intento, los consumidores no saben qué instancias de servicio que les proporcione los servicios. Esto no está en línea con el concepto de DevOps.
  • No podemos ver visualmente los proveedores de servicios y consumidores de servicios de salud y frecuencias de comunicación actuales. Esto no está en línea con el concepto de DevOps.
  • Los consumidores de fallo retransmisión, balanceo de carga y por lo tanto no existe una política uniforme, lo que aumenta la dificultad de desarrollo de cada servicio, no es propicio para una rápida evolución.

Con el fin de resolver los problemas anteriores, necesitamos un confeccionada componente central de la integración de servicios, la información de resumen para cada servicio, incluyendo el servicio de componente de nombre, dirección y cantidad. Los servicios de llamadas para proporcionar este servicio para obtener información de primera instancia (IP, puerto, etc.) cuando lo solicite un componente del centro de servicio, y luego seleccionar un proveedor por el servicio a través de la política por defecto o personalizada directa de acceso. Por lo tanto, hemos introducido Dubbo.

1.2 Basado en Dubbo lograr microService

Ali Dubbo es una solución de gestión de servicios SOA de código abierto, rico documento, el uso del país es muy alta.

Dubbo construido usando micro-servicios, que puede haber sido una mejor solución al problema mencionado anteriormente:

  • Llame a la capa media se convierte en componentes opcionales, los consumidores pueden acceder directamente al proveedor de servicios.

  • información de servicio se concentra en el Registro, se formó un componente central de la gestión del servicio.

  • Por el sistema de monitoreo Monitor, puede mostrar visualmente estadística llamada de servicio de información.

  • Consumidor puede realizar balanceo de carga, la elección de la degradación del servicio.

Pero para la micro-arquitectura en términos de servicio, Dubbo también no es perfecto:

  • Registro basa en gran medida en los componentes de terceros (zookeeper o Redis), cuando estos componentes no es un problema, una llamada de servicio pronto será interrumpida.

  • DUBBO sólo admiten llamadas RPC. Permite a los proveedores de servicios y la persona que llama tiene una fuerte dependencia en el código, los proveedores de servicios deben continuar para contener el código común fuera del paquete frasco de envasado para uso del consumidor. Una vez que el problema de los envases, que dará lugar a un error de llamada de servicio.

  • Lo más importante, el mantenimiento DUBBO ahora se ha detenido, la demanda de desarrollo de nuevas tecnologías, la necesidad de ampliar la actualización de los propios desarrolladores. Lo que para muchas organizaciones pequeñas y medianas de software que quieren arquitectura micro-servicio, que claramente no es apropiado.

Actualmente en la comunidad Github una versión mejorada de un DUBBO, llamado DUBBOX, proporciona una manera más eficiente de RPC serializar e invocación REST. Pero el proyecto también básicamente dejó de mantener.

1.3 nuevas opciones --Spring Nube

A medida que una nueva generación de la estructura del servicio, lema Nube Primavera presentada es desarrollar "ambiente aplicaciones orientadas a la nube", que ofrece un servicio de asistencia técnica más completa para la micro-arquitectura. En combinación con las demandas de servicios de micro que hemos mencionado al principio, tenemos la primavera Cloud y DUBBO ser una comparación:

servicios de micro necesarios dubbo Nube de primavera
el registro del servicio y el descubrimiento Zookeeper Eureka
la invocación de servicios RPC API REST
rompedor Tienes Tienes
Equilibrio de carga Tienes Tienes
Servicio de enrutamiento y filtrado Tienes Tienes
Configuración distribuida no Tienes
Bloqueo distribuido no Planes para desarrollar
Las agrupaciones electorales principal no Tienes
Mensaje distribuido no Tienes

Nube de primavera abandonó la comunicación RPC Dubbo, el uso de la forma basada en HTTP REST. Estrictamente hablando, estos dos métodos tienen ventajas y desventajas. Aunque en cierta medida, el rendimiento de este último a expensas de las llamadas de servicio, sino también para evitar los problemas mencionados anteriormente RPC nativa trae. RPC y REST en comparación con, proveedores de servicios más flexibles y dependen sólo depende de la persona que llama un contrato de trabajo, fuerte dependencia código de nivel no existe en este caso destacar la rápida evolución del entorno de micro-servicios, parecen ser más apropiado.

Claramente, Nube, Primavera, es más poderoso que DUBBO, una cobertura más amplia, sino también como proyecto puño de primavera, también es posible, Primavera de arranque, datos de primavera, Spring Batch perfecta integración de Primavera y otros artículos con la Spring Framework, estos servicios para micro es crucial. Como se mencionó anteriormente, una importante micro-servicios detrás del concepto es la integración continua, entrega rápida, y el uso de unos servicios internos unificados en el marco técnico, con claramente más eficiente que la cartera de tecnología para dispersar. Más importante aún, en comparación con Dubbo, es un proyecto de código abierto de la comunidad más ardiente mantenimiento continuo, que utiliza el sistema para asegurarse de que está construido, puede continuar siendo apoyados por el poder de código abierto.

Dos componentes, primavera Nube de Netflix

Netflix y primavera nube es qué hacer con ella? Netflix es una práctica microarquitectura éxito de la empresa de servicios de Internet, hace unos años, se tardó casi enteras marco de los servicios de micro-Netflix pila contribuyó a la comunidad de código abierto. Fundamental detrás de la Primavera 2015 lanzamiento de los productos de código abierto, Nube, Primavera, principalmente a más de código abierto paquete de Netflix montaje, primavera fácil para los desarrolladores crear servicios de micro-marco infraestructura. Para los servicios de gestión de micro, el núcleo es los servicios de registro y descubrimiento. Así que elegir los componentes en gran medida depende de su registro de servicios y soluciones de descubrimiento para. En esta zona, una gran cantidad de arquitectura de código abierto, el más común es Zookeeper, pero esto no es la mejor opción.

Hay un teorema CAP bien conocido en el campo de los sistemas distribuidos: consistencia de los datos C--, la disponibilidad del servicio A--, red de servicio P-- tolerancia a fallos fracaso partición . Estas tres características no pueden ser satisfechas en cualquier sistema distribuido, hasta cumplir dos.

Zookeeper es un subproyecto de Hadoop famosa, muchas escenas también encontraron ZOOKEEPER servicio como un servicio de soluciones. Zookeeper aseguró que el PP , es decir, cualquier acceso en tiempo se puede obtener datos de la solicitud Zookeeper resultados consistentes, y la red tolerante a fallos del sistema se divide, no puede garantizar la disponibilidad de cada solicitud de servicio. A partir del análisis de la situación actual, cuando se utiliza Zookeeper obtener la lista de servicios, si la elección es el cuidador del zoológico principal, o más de la mitad de la máquina cúmulo Zookeeper no está disponible, entonces no se obtendrán los datos. Así, Zookeeper no puede garantizar la disponibilidad del servicio.

De hecho, para los entornos más distribuidas, especialmente en escenas relacionadas con el almacenamiento de datos, consistencia de los datos debe primero ser garantizada, y esta es la razón por la guarda del zoo diseñado para CP. Sin embargo, para el escenario de descubrimiento de servicios, la situación no es la misma: por el mismo servicio, incluso si los proveedores de servicios guardados en diferentes nodos de la información del registro no son lo mismo, no causa consecuencias catastróficas. Debido a que los consumidores de servicios, el consumo de energía es el más importante - obtener la instancia del servicio puede no ser correcta información al consumidor a probar, porque no pueden conseguir mejor que ejemplos de la información en lugar de gastar. Por lo tanto, para la detección de servicios, la disponibilidad de consistencia de los datos es más importante que --AP que el CP . La primavera Nube Netflix siguió al diseñar Eureka es principio de AP.

Eureka en sí es de código abierto Netflix ofrece un registro de servicios y productos de descubrimiento, y proporciona correspondiente paquete de Java. En su aplicación, la igualdad mutua entre los nodos, los nodos de la parte del registro no tendrá que pasar el cúmulo de impacto, incluso si un nodo de clúster sólo sobrevivir, sino también normalmente puede proporcionar servicios de descubrimiento. Incluso si todos los nodos están relacionados con el registro del servicio, información de servicio de llamadas se almacenan en caché en los clientes Eureka. Esto asegura que cada llamada es lo suficientemente robusta entre nuestros micro-servicios.

Además, las potentes fuerzas de resorte Nube de Netflix detrás de código abierto, pero también nos llevó a elegir la primavera Nube de Netflix:

  • Se mencionó antes, la comunidad Nube primavera es muy activo, su aplicación es muy extensa en la industria (especialmente en el extranjero), sino también todo el marco resistió la prueba de Netflix duro entorno de producción.
  • Además del registro de servicio y descubrimiento, otras características de primavera de nubes Netflix es también muy fuerte, incluyendo la cinta, hystrix, Fingir, Zuul y otros componentes unidos juntos, vamos a llamarlo el servicio, el encaminamiento también llegar a ser muy fácil.
  • Primavera Nube de Netflix como un marco integrado de primavera de peso pesado, utilizando también significa que obtenemos de la primavera al gran comodidad. Otros subproyectos nube primavera, como la primavera Nube Stream, primavera Nube de configuración, etc., proporciona soluciones de ventanilla única para todas las necesidades de micro-servicios.

Tres, el descubrimiento de servicios de la nube de Primavera

Núcleo elástico Nube Netflix es Eureka para el registro del servicio y el descubrimiento, la próxima vamos a Eureka como una pista, introdujo Eureka, cinta, Hystrix, Feign estos componentes principales primavera Nube de Netflix.

3.1 Servicio de registro y descubrimiento --Eureka

Eureka palabra viene del griego antiguo, que significa "he encontrado he encontrado !!" Según la leyenda, Arquímedes descubrió el principio de flotabilidad durante el baño, la hora feliz de poner en los pantalones, corrió a la calle gritando: "Eureka (me pareció) !."

Eureka por ejemplo múltiple (instancias de servicio), con ejemplos de estos servicios se pueden dividir en dos tipos: Eureka Server y Eureka Client. Para facilitar la comprensión, que se subdividirá en Eureka proveedor de servicios de cliente y servicio al consumidor. Como se muestra a continuación:

  • Eureka Servidor: servicios de registro, mantiene una lista de servicios registrados.
  • Proveedor de servicios: el proveedor de servicios, como un cliente de Eureka, Eureka hacer el registro de servidor de servicios, la renovación y la línea de montaje y otras operaciones, incluyendo las principales Nombre de datos de servicio registrada, IP de la máquina, número de puerto, nombre de dominio, y así sucesivamente.
  • Servicio al Consumidor: servicios de consumo, como un cliente de Eureka, obtener información de registro para el proveedor de servicios de Eureka servidor, y se comunican a través de llamada remota y proveedor de servicios.

Proveedor de servicios de Servicio al Consumidor no es estrictamente el concepto y, de servicio al consumidor siempre puede registrarse para Eureka servidor, para hacer a sí mismo en un proveedor de servicios. Nube de primavera para el registro del servicio y el descubrimiento, llevó a cabo una capa de abstracción y proporciona tres implementaciones: Eureka, Consul, Zookeeper. Actualmente, es el mejor Eureka apoyado, seguido por el Cónsul, y finalmente Zookeeper.

3.1.1 Servidor de Eureka

Eureka Server como una unidad de despliegue autónomo, en forma de REST API proporciona las operaciones de registro, gestión y consulta para la instancia de servicio. Mientras tanto, Eureka Server también nos proporciona la página monitoreo visual, se puede ver visualmente cada Eureka Server y el estado de funcionamiento actual de todos los casos de servicios registrados.

3.1.1.1 Las agrupaciones Eureka servidor de alta disponibilidad

Eureka servidor puede ejecutar varias instancias para construir un clúster, para resolver el problema de un solo punto, pero el proceso es diferente de la elección del líder ZooKeeper, Eureka Server utiliza una Peer to Peer para la comunicación entre pares. Se trata de una arquitectura descentralizada, sin distinción de maestro / esclavo, cada uno de pares son iguales. En esta arquitectura, el nodo registrado entre sí para aumentar la disponibilidad de las necesidades de cada nodo para agregar uno o más enlaces a otros nodos ServiceUrl válida. Cada nodo puede ser visto como copias de otros nodos.

Si una petición de tiempo de inactividad estación Eureka servidor Eureka Client cambiará automáticamente al nuevo nodo Eureka Server, el tiempo de inactividad del servidor cuando restaurado, Eureka de nuevo, se puede incorporar en la gestión del cluster servidor. Cuando el nodo comienza a aceptar solicitudes de cliente, todas las operaciones serán replicateToPeer (copia entre nodos) operación, la solicitud a todos los nodos otros actualmente conocidos en Eureka Server.

Después se inicia un nuevo nodo de servidor de Eureka, primero intenta obtener todas las instancias de la información del registro de un nodo vecino de inicialización completa. Eureka servidor Obtener todos los nodos getEurekaServiceUrls () método, y se actualizará a través de la renovación de la base regular los latidos del corazón. configuración por defecto, si Eureka Server no recibe el latido del corazón de una instancia de servicio dentro de un cierto tiempo, Eureka Server registrará fuera de la instancia (por defecto es de 90 segundos, por configuración eureka.instance.lease-expiración-duración-en-segundo) . Cuando el nodo Eureka servidor se pierde demasiados latidos del corazón en un corto período de tiempo (tal como un fallo partición de red), entonces el nodo pasa al modo de autoconservación. Tabla a continuación muestra la página oficial de Eureka

¿Qué es un modo de autoprotección? configuración por defecto, si Eureka Server recibe el número de latidos por minuto es menor que un valor umbral de renovación (el número de instancia de * (60 / cada instancia de latido segundo intervalo) * factor de auto-protección), se activa la auto-protección. En el modo de auto-protección, servicio de servidor Eureka protegerá la información en el registro, no cancelación de cualquier instancia de servicio. Cuando recibe la frecuencia cardiaca restaurada por encima del umbral, el nodo servidor Eureka saldrá automáticamente del modo de autoprotección. Su filosofía de diseño se mencionó anteriormente, es más bien reservada la información de registro de servicio incorrecto, no ciegamente descartar cualquier posible instancia de servicio de salud. Este modo puede desactivarse por eureka.server.enable-autoconservación = false, mientras eureka.instance.lease-renovación-interval-in-segundo se pueden utilizar para cambiar el intervalo de latido del corazón, eureka.server.renewal-ciento-umbral se puede utilizar para modificar el factor de autoprotección (por defecto 0.85).

3.1.1.2 Eureka servidor específico Región, Zona

documentación oficial de Eureka a Regin, Zona casi ninguna mención, debido al concepto abstracto, el novato es difícil de entender. Por lo tanto, lo primero que mira en la relación entre la Región, Zona, agrupaciones de Eureka de tres, como se muestra a continuación:

región y zona (o disponibilidad Zona) son el concepto de AWS. En el entorno no AWS, podemos simplemente primero debe entenderse como una región de agrupamiento de Eureka, zona interpretarse como la sala de máquinas. La figura puede ser entendido como un grupo Eureka se despliega en la sala de máquinas zone2 y sala de máquinas zone1.

3.1.2 Proveedor de servicios

3.1.2.1 Servicio de Registro

El proveedor de servicios es esencialmente un cliente de Eureka. Cuando se inicia, llamará al proceso de registro de servicio para registrar su información al Servidor de Eureka. Eureka servidor mantiene una lista de servicios registrados, esta lista es un mapa resumen anidada:

  • La primera capa, nombre de la aplicación y la correspondiente instancia de servicio.
  • La segunda capa, y la instancia de servicio correspondiente a la información de registro, incluyendo IP, número de puerto.

Cuando los cambios de estado de ejemplo (como el tiempo mismo detecta como hacia abajo), actualizará el estado de su servicio a Eureka Server, durante el uso de replicateToPeers () hacer sincronización estado a otros nodos Eureka Server.

3.1.2.2 renovación y eliminación

Como se mencionó anteriormente, la instancia de servicio se inicia, enviará periódicamente un latido del corazón a la Eureka Server para renovar su información, para evitar su información de registro se elimina. Renovación de los servicios de registro son básicamente de la misma manera: En primer lugar, actualizar su estado, y luego se sincroniza con el otro par.

Si Eureka Server no recibe un latido del corazón micro-servicios nodo durante un período de tiempo, Eureka servidor se desconectará el nodo micro-servicio (excepto el modo de auto-protección).

3.1.3 Servicio al Consumidor

La esencia de Servicio al Consumidor es un cliente de Eureka (que también se registrará en el servidor de Eureka, pero esta información de registro no importa Bale). Una vez iniciada, se obtendrá a partir de la información de registro del servidor de Eureka para todas las instancias, incluyendo direcciones IP y puertos, y la memoria caché local. Esta información se actualiza cada 30 segundos por defecto. He mencionado antes, si se comunica con interrumpidas Eureka Server, Servicio al Consumidor todavía pueden comunicarse con el proveedor de servicios a través de una memoria caché local.

Eureka proceso de desarrollo real, a veces dan a conocer a la demora del Servicio de Información al Consumidor servidor del proveedor en Eureka Wiki tiene tantas palabras:

Todas las operaciones de cliente de Eureka puede tomar algún tiempo para reflexionar en los servidores de Eureka y posteriormente en otros clientes de Eureka. Esto es debido a la caché de de la carga útil en el servidor de Eureka, que se actualiza periódicamente para reflejar la nueva información. Eureka clientes también traen deltas periódicamente. Por lo tanto, puede tardar hasta 2 minutos para que los cambios se propagan a todos los clientes Eureka.

Mencionado en la última frase, cambie el servidor puede necesitar dos minutos en propagarse a todos los clientes, y por razones no está cubierta. Esto se debe a que hay tres caché Eureka y un retraso causado.

  • Eureka servidor a la lista de caché registrado, el tiempo predeterminado es de 30 años.
  • Eureka cliente para se almacena en caché el acceso a la información de registro, el tiempo predeterminado es de 30 años.
  • Cinta de la mencionada obtendrá una lista de servicios de cliente de Eureka, el resultado del equilibrio de carga 30s caché.
  • Si no utiliza estos componentes (Eureka, la cinta) en el entorno de la nube de Primavera, el servicio no se iniciará inmediatamente y registrado en Eureka, pero el registro tendrá que esperar hasta que la primera vez que se envía una solicitud de latidos del corazón. El latido del corazón de transmisión de solicitud por defecto 30s intervalo. Nube de la primavera ha hecho una modificación, el registro se iniciará inmediatamente después del servicio.

Basado instancia de servicio de Servicio al Cliente para obtener información, se puede llamar al servicio. La nube de primavera también ofrece una gran cantidad de herramientas para las llamadas de servicio de Servicio al Consumidor:

  • Cinta, el balanceo de carga del cliente.
  • Hystrix, interruptores de circuito.
  • Fingir, cliente de servicios Web REST, la integración de la cinta y Hystrix.

A continuación presentamos una por una.

3.2 Solicitudes de servicio de carga final de equilibrio --Ribbon

La cinta es Netflix lanzó un proyecto de código abierto, la función principal es lograr el equilibrio de carga para el cliente REST. Se compone principalmente de seis componentes:

  • ServerList, balanceo de carga del servidor utiliza la lista. Esta lista se almacena en el equilibrador de carga, y se actualiza regularmente. Cuando se utiliza junto con la cinta y Eureka, clase de implementación ServerList es DiscoveryEnabledNIWSServerList, se guardará la tabla instancia de servicio Eureka servidor registrado.
  • ServerListFilter, filtros de la lista de servidores. Se trata de una interfaz, que se utiliza principalmente para el servicio al consumidor para obtener una lista de servidor de pre-filtro, filtro de resultados también ServerList. Cinta proporciona para lograr una variedad de filtros.
  • Iping, para detectar si la estrategia de supervivencia instancia de servicio.
  • IRule, balanceo de carga estrategia, sus declaraciones de política de clase de implementación incluyen: sondeo, al azar, ponderados de acuerdo con el tiempo de respuesta y similares.

También podemos definir sus propias políticas de balanceo de carga, tales como nuestra propia implementación de la estrategia en el uso de los servicios para lograr un control de versiones y configuración de conexión directa. Después de darse cuenta, la clase de implementación puede ser re-inyecta en la cinta.

  • ILoadBalancer, equilibrador de carga. También es una interfaz, la cinta proporciona un múltiples implementaciones, tales como ZoneAwareLoadBalancer. La carga código de selección de equilibrio de llamada de servicio superior llamando a su API. General ILoadBalancer referencias clase de implementación de un iRule.
  • RESTClient, llamador del servicio. Como su nombre indica, este es el balanceo de carga, la cinta solicitud de apoyo para las herramientas para iniciar un proveedor de servicios.

La cinta va a hacer cuatro cosas en el trabajo:

  1. Preferencia en la misma zona y menos cargado Eureka servidor;
  2. Las actualizaciones regulares de Eureka y lista de instancias de servicio de la filtración;
  3. De acuerdo con la política especificada por el usuario, seleccionar una dirección de instancia de servidor para tomar la lista de registro de los servicios;
  4. Una llamada de servicio RESTClient.

3.3 llamadas de servicios Fin soplados --Hystrix

Netflix creó una biblioteca llamada Hystrix lograr un interruptor de patrón. "Breaker" es un aparato de conmutación en sí, cuando una unidad de servicio falla, el fallo de supervisión del interruptor (similar a un fusible soplado), y vuelve a la persona que llama una línea con las expectativas, la respuesta puede ser procesada alternativamente (retorno) en lugar de esperar durante mucho tiempo o lanzar una llamada excepción no puede manejar, asegurando de este modo la persona que llama al subproceso de servicio que no pasará mucho tiempo, innecesariamente ocupada, a fin de evitar la propagación de la falla en el sistema distribuido, e incluso avalancha.

Por supuesto, en las frecuencias más bajas de la petición falla, los mamíferos fracaso, o directamente de vuelta al cliente. Sólo cuando el número de fallos alcanza un valor umbral (por defecto no cinco veces dentro de 20 segundos), el disyuntor de circuito se abre y no se realiza la comunicación posterior, sino directamente volvió respuestas alternativas. Por supuesto, las respuestas alternativas Hystrix también pueden ser personalizados por los desarrolladores.

Además de llamar a los servicios dependientes de aislamiento, Hystrix también proporciona monitoreo de llamadas en tiempo casi real ( Hystrix tablero de instrumentos ), Hystrix continuará información de ejecución registro para todos en Hystrix inició la solicitud, y se presentan al usuario en forma de informes y gráficos estadísticos, incluidos cuántos ejecución exitosa del número de solicitud, el número de errores por segundo y así sucesivamente. Netflix cuenta de que el seguimiento de estos indicadores por proyectos hystrix-métricas de eventos-stream. Nube de primavera también proporciona integrado Hystrix tablero de instrumentos, y el control del contenido en la interfaz visual, Hystrix tablero de instrumentos Wiki en una descripción detallada del significado de cada indicador en el mapa.

3.4 Servicio del lado Call código abstracción y la encapsulación --Feign

cliente de servicios Web Fingir es una declarativa, su objetivo es hacer llamadas de servicio web más fácil. Se integra la cinta y Hystrix, de modo que ya no hay necesidad de utilizar explícitamente estos dos componentes. Fingir también proporciona una plantilla para las peticiones HTTP, a través de una interfaz sencilla para escribir e insertar anotaciones, podemos definir los parámetros de una buena solicitud de información HTTP, el formato, la dirección y así sucesivamente. A continuación, Feign completamente petición HTTP agente, sólo tenemos que llamar al mismo método que la llamada se puede completar una solicitud de servicio.

Feign tiene las siguientes características:

  • soporte de anotaciones enchufable, incluyendo Feign JAX-RS anotaciones y notas
  • HTTP apoyar codificador y decodificador enchufable
  • Hystrix apoyo y su repliegue
  • balanceo de carga de la cinta de soporte
  • Peticiones HTTP y las respuestas de compresión soportados

El siguiente es un ejemplo sencillo de un Feign:

@SpringBootApplication
@EnableDiscoveryClient //启用Feign
@EnableFeignClients
public class Application
{
    public static void main(String[] args)
    {
        SpringApplication.run(Application.class, args);
    }
}

@FeignClient(name = "elements", fallback = ElementsFallback.class) //指定feign调用的服务和Hystrix Fallback(name即eureka的application name)
public interface Elements
{
    @RequestMapping(value = "/index")
    String index();
}

//Hystrix Fallback  
@Component
public class ElementsFallback implements Elements
{
    @Override
    public String index()
    {
        return "**************";
    }
}

//测试类
@Component  
public class TestController {
    @Autowired
    Elements elements;

    @RequestMapping(value = "/testEureka", method = RequestMethod.GET)
    public String testeureka()
    {
        return elements.index();
    }
}
复制代码

Autor original: Qian Xiao Yi

Enlaces: www.jianshu.com/p/5eac16e98 ...

Escrito en los últimos:

Nº Doy la bienvenida a la atención de todos la apertura al público de la nueva [ tranquilo como código ], artículos relacionados con Java en masa, los materiales de aprendizaje serán actualizados en el interior, los materiales de acabado será en el interior.

Me siento bien para escribir en un punto de alabanza, más seguidores canto! Punto de atención, no se pierdan, continuará actualizando! ! !

Supongo que te gusta

Origin juejin.im/post/5e69f1a5f265da574b792733
Recomendado
Clasificación