Arquitectura de microservicio basada en la implementación de Docker (2): proveedor de servicios y persona que llama
Arquitectura de microservicio basada en la implementación de Docker (1): Centro de registro de servicios El centro de registro de servicios se ha creado correctamente. Ahora creemos un microservicio simple y registremos el servicio en el centro de registro de servicios. Luego cree una persona que llama para llamar al microservicio creado anteriormente.
Cree un nuevo proyecto maven y modifique pom.xml para introducir dependencias de Spring Cloud:
Cree un archivo de configuración application.yml en el directorio de recursos y agregue el contenido en el archivo de configuración:
Aquí eureka registrará la dirección establecida en el artículo anterior
Cree una demostración del paquete en el directorio java y cree un elemento de inicio AddServiceApplication.java
Cree un nuevo controlador de subpaquete en demostración y cree un nuevo controlador de subpaquete AddServiceApplication.java en el controlador y cree un controlador en el subpaquete de controlador para proporcionar una interfaz externa.
Con el registro de servicios ya en ejecución, ejecute el método principal en AddServiceApplication.java para iniciar el microservicio.
Visite la página de registro del servicio en http://localhost:8000 para comprobar si el servicio ADD-SERVICE-DEMO se ha registrado correctamente.
Inicie la segunda instancia, cambie el puerto a 8101 y cambie la salida en AddController.java a
Ejecute el método principal en AddServiceApplication.java nuevamente.
Visite la página de registro de servicios en http://localhost:8000 y podrá ver que dos servicios ADD-SERVICE-DEMO se han registrado correctamente en los puertos 8100 y 8101. fuerte>.
Cree un nuevo proyecto maven y modifique pom.xml para introducir dependencias de Spring Cloud:
Cree un archivo de configuración application.yml en el directorio de recursos y agregue el contenido en el archivo de configuración:
Crea una demostración del paquete en el directorio java.
Cree una demostración de paquete en el directorio de Java y cree un elemento de inicio RibbonClientApplication.java
Configure un restTemplate con equilibrio de carga que lea la lista de servicios del registro de servicios. .
Cree un nuevo controlador de subpaquete en el paquete de demostración y un controlador en el subpaquete de controlador para proporcionar la interfaz externa.
Puedes ver que la URL de solicitud aquí utiliza la Aplicación correspondiente al registro de servicios.
Ejecute el método principal en RibbonClientApplication.java para iniciar el proyecto.
Visite http://localhost:8200/add?a=1&b=2 en el navegador y obtenga el resultado:
Visite y vea la consola de AddServiceApplication varias veces. Se puede ver que los dos ADD-SERVICE-DEMO son llamadas de equilibrio de carga.
Código fuente de demostración spring-cloud-1.0/ribbon-client-demo
Cree un nuevo proyecto maven y modifique pom.xml para introducir dependencias de Spring Cloud:
En el directorio de recursos, cree el archivo de configuración application.yml e incluya el siguiente contenido en el archivo de configuración:
En el directorio java, cree una demostración del paquete y cree la entrada de inicio FeignClientApplication en el paquete. java
En el paquete de demostración del nuevo paquete, cree un nuevo subpaquete de servicio y cree una interfaz AddService.java en el subpaquete de servicio para llamar al microservicio ADD-SERVICIO-DEMO creado previamente.
Los parámetros en la anotación @FeignClient aquí son la Aplicación correspondiente al registro de servicios.
Cree un nuevo subpaquete de controlador en el paquete de demostración y cree un FeignController.java en el subpaquete de controlador para proporcionar una interfaz con el mundo exterior.
FeignController inyectará la interfaz AddService que acaba de crear.
Ejecute el método principal en FeignClientApplication.java para iniciar el proyecto.
Visite http://localhost:8300/add?a=1&b=2 en el navegador y obtenga el resultado:
Visite y vea la consola de AddServiceApplication varias veces. Se puede ver que los dos ADD-SERVICE-DEMO son llamadas de equilibrio de carga.
Código fuente de demostración spring-cloud-1.0/feign-client-demo
Tome add-service-demo como ejemplo,
Copie application.yml y copie Cámbiele el nombre a application-docker.yml y cambie defaultZone a Docker.strong> defaultZone a:
Esto cambiará la URL de acceso de defaultZone, que depende del parámetro --link al implementar el contenedor de Docker. .
Modifique el nodo Spring en application.yml para:
Agregue archivos de configuración aquí para cargar diferentes archivos de configuración en el paquete maven.
Agregue el archivo pom.xml:
Seleccione el archivo de configuración de Docker, ejecute mvn install -P docker, empaquete el proyecto y genere una imagen de Docker, preste atención a Docker- maven-plugin.tag El
Después de ejecutarlo correctamente, inicie sesión en el nodo de Docker y ejecute Docker Images. Debería ver la imagen que acaba de empaquetar.
En el artículo anterior, creamos una imagen acoplable de service-registry-demo, ejecutémosla.
La breve descripción de este comando es: -d especifica el contenedor que se ejecutará en segundo plano; --name especifica el nombre del contenedor; --publish especifica la asignación del puerto al host; contenedor y utiliza la zona horaria establecida por el host. Para resolver el problema de la inconsistencia de la zona horaria del contenedor, finalmente especifique la imagen de la ventana acoplable que se utilizará; Finalmente, especifique la imagen de la ventana acoplable que se utilizará.
El nombre y la etiqueta de la imagen deben modificarse según la situación real.
Después de ejecutar este comando, se iniciará el contenedor service-registry-demo. Ingrese http://host IP:8000 para abrir la página de registro.
A continuación, inicie el contenedor add-service-demo.
Este comando es similar al comando anterior, excepto que agrega un parámetro --link, es decir, --link. , utilizado para especificar la conexión entre contenedores, en forma de --link nombre-contenedor:alias, es decir, conectarse al contenedor creado previamente llamado service-registry-demo, donde el alias es el mismo que el configurado en la aplicación -archivo docker.yml La zona predeterminada es la misma. Puede encontrar la dirección IP de un contenedor por su alias. Si observa el archivo de hosts, verá que ha agregado la asignación de hosts.
Una vez que el contenedor add-service-demo esté funcionando correctamente, puede actualizar la página del centro de configuración para ver que se ha registrado en el centro de configuración.