dubbo 2.7.4.1 actualización de migración sin problemas a nacos

dubbo es un muy buen marco de gestión de servicios de tipo RPC, DUBBO destacado que gran arquitectura del sistema, el diseño modular exquisita, diseño flexible de SPI, implementar componente rico, micro-bloggers hacer la tecnología de servicio de tiempo dubbo estudio de selección, fue sorprendido en ese momento la gente ha sido capaz de crecer tan excelente proyecto que detrás de cada gente dice cuando se quiere estudiar arquitectura, yo le recomiendo leer dubbo código, el aprendizaje de los principios de diseño de arquitectura bajo el dubbo. A menudo se dice dubbo no sólo un marco RPC, debido a sus características de gestión de servicio de la comunicación RPC más prominente es relativo, esta característica me dejó en 2017, cuando la selección de manera decisiva lo eligió, en ese momento el funcionario no dubbo salida del arrancador de inicio de la primavera, y nuestro proyecto completado en gran medida la transformación de MVC primavera al proyecto de arranque primavera. Con el fin de simplificar el desarrollo de componentes dubbo integrado, basado en nuestra versión dubbo2.5.6 la investigación de un conjunto de componentes de primavera-boot-dubbo-arranque, y la exposición de servicios dubbo la costumbre y la introducción de los billetes, el modo de configuración de recarga dubbo personalizado. No había ninguna operación y mantenimiento profesional, para construir una alta disponibilidad ZK han invertido recursos, a fin de mantener unos pocos componentes simples, hemos sido elegidos directamente Redis (Ali nube de alta disponibilidad de instancia) como un centro de registro de dubbo. Y que esta vez aumentamos el fondo dubbo

¿Por qué actualizar a 2.7.4.1?

  • A partir de 2.5.6 a 2.7.x, punto de referencia intermedio una gran cantidad de errores, trajo un montón de nuevas características.
  • 2.5.x versión no se conserva como una versión de mantenimiento, 2.6.xy 2.7.x versiones, así como explorar la versión actual del principal de mantenimiento de 3,0. En otras palabras, incluso si hay un problema en el futuro 2.5.x, el funcionario no reparará a.
  • 2.7.4.1 versión fue elegido, porque después de estudio después de la edición oficial y el enfoque en el dubbo la situación del grupo y se encontró que esta versión es relativamente estable, pero el gobierno también ha recomendado para actualizar a esta versión.

¿Por qué migrar a registro nacos?

  • Actualmente ReDiS registro después, incluso después de un pozo de viaje "Redis dubbo registro utilizando una serie de problemas," estable, sino porque el público es demasiado pequeño, demasiado pocas personas utilizan y no causan muchos problemas expuestos (en proceso de actualización he descubierto un problema ReDiS registro), si se continúa utilizando Redis registro, siempre estará en el proceso de auto-pit viaje continuo no puede liberarse a sí mismos.
  • nacos registro es la idea central del proyecto dubbo oficial, aunque aún se está ejecutando iteración, pero una vez que los problemas son oficiales reacción es bastante oportuna. Use nacos más y más personas, el equivalente de veces en el pozo demasiado, en ninguna parte ocultar el fallo oculto. Y nacos y dubbo tienen un parentesco natural, ver caso reciente liberación nacos, encontró que hay varios registrado especialmente para solucionar el problema dubbo
  • nacos viene con una consola de administración web, puede ser muy conveniente para el registro de consulta dubbo que puede ser utilizado como un simple utilizar dubbo Gobierno Centro

Dos programa de actualización

Dado que estamos manteniendo actualmente su primavera-boot-dubbo-motor de arranque, por lo que cuando hacer la actualización, tuvimos dos diferentes escenarios de actualización, y hemos hecho una verificación completa.

Programa: arranque el cambio oficial de la Asamblea mágica

Con el fin de hacer la parte de desarrollo de la básica no actualización de la versión 2.7.4.1 percibido, hicimos dos cosas

  • notas compatibles

Al hacer anotaciones compatibles también consideró dos opciones, una es para realizar el procesamiento dubbo2.7.4.1 compatibles en el auto-desarrollo del motor de arranque, uno es compatible con nuestro proceso en el arranque oficial del 2.7.4.1. Volver decididamente eligió la última, porque la versión dubbo2.7.4.1 es un cuadro negro no saben lo que cambia, compatibles con las versiones difícil, compatibilidad hacia atrás tiene que ser mucho más fácil para nosotros. Nuestra anotación original de encargo del componente de investigación en la ruta del paquete de retención de una copia completa del proyecto oficial de arranque, y luego ReferenceAnnotationBeanPostProcessor y ServiceAnnotationBeanPostProcessor movido hacia fuera de dubbo los módulos de primavera, por encargo procesamiento de anotaciones compatibles. Este lugar, una vez más alarde bajo dubbo diseño, dubbo después donado a Apache, nombres de paquetes han cambiado, para las notas de compatibilidad en el paquete de Alibaba de edad, la exposición de servicios y la introducción de servicios han hecho un diseño compatible con anotaciones muy simples. Gracias a esto, se están haciendo muy fácil de personalizar para obtener las notas de procesamiento siempre que sea compatible.

ReferenceAnnotationBeanPostProcessor constructor de encargo entrante anotación:

    public ReferenceAnnotationBeanPostProcessor() {
        super(AutowiredDubbo.class, Reference.class, com.alibaba.dubbo.config.annotation.Reference.class); } 

Agregar anotaciones personalizados apoyan al escanear ServiceAnnotationBeanPostProcessor

        scanner.addIncludeFilter(new AnnotationTypeFilter(www.zhuyngyule.cn Service.class));

        /**
         * Add the compatibility for legacy Dubbo's @Service * * The issue : https://github.com/apache/dubbo/issues/4330 * @since 2.7.3 */ scanner.addIncludeFilter(new  www.yixingylzc.cn AnnotationTypeFilter(com.alibaba.dubbo.config.annotation.Service.class)); // 兼容@DubboService注解 scanner.addIncludeFilter(new AnnotationTypeFilter(DubboService.class)); 

Última DubboAutoConfiguration Modificado de servicio y los servicios expuestos en nuestro procesador de magia puede lograr una reforma

  • configuración compatibles

la investigación costumbre de auto-configuración se carga con aperturas spring.dubbo, y la Corona es dubbo comienzo con la distinción de la siguiente manera:

自研的配置:
spring.dubbo.application.name = xxx
spring.dubbo.registry.address = xxx spring.dubbo.protocol.port = -1 官方starter配置 dubbo.application.name = xxx dubbo.registry.address = xxx dubbo.protocol.port = -1 

Para lograr la configuración de compatibilidad, una configuración modificada lógica dubbo de arranque de carga, eliminado el resorte aperturas, los DubboUtils filterDubboProperties modificados, tales como:

    public static SortedMap<String, Object> filterDubboProperties(ConfigurableEnvironment environment) {
        SortedMap<String, Object> dubboProperties = new TreeMap<www.javachenglei.com>(); Map<String, Object> properties = EnvironmentUtils.extractProperties(environment); for (Map.Entry<String, Object> entry : properties.entrySet()) { String propertyName = entry.getKey(); if (propertyName.startsWith(DUBBO_PREFIX + PROPERTY_NAME_SEPARATOR) && entry.getValue(www.tengyueylzc.cn) != null) { dubboProperties.put(propertyName, entry.getValue().toString()); } if (propertyName.startsWith("spring." + DUBBO_PREFIX + PROPERTY_NAME_SEPARATOR) && entry.getValue(www.shentuylgw.cn ) != null) { propertyName = propertyName.substring(7); dubboProperties.put(propertyName, entry.getValue().toString()); } } return Collections.unmodifiableSortedMap(dubboProperties); } 

El último paquete de carga a PW, los desarrolladores sólo tienen que actualizar el frasco próxima versión, la configuración y el código no se mueven se puede actualizar a la versión 2.7.4.1 de dubbo, lugares mágicos pueden cambiar más que el código publicado anteriormente, pero en este caso conduce a la idea de que este este es el final del programa, las ventajas de este programa es desarrollar más transparente debido a la migración a nacos pasos son los mismos, la segunda opción para conversaciones

Opción II: El uso directo del motor de arranque oficial de la Asamblea - se aprobó finalmente

El abajo discusión final, teniendo en cuenta las versiones de mantenimiento internos, cuando la actualización oficial vinculación mejora sería más problemas, como dirigir un dolor a través de la configuración del código de transformación tablero de transformación, utilizando la actualización directa de arranque oficial, por lo que, seguido por una actualización de la versión sin la aportación de mano de obra mantener un oficial consistente y auto-desarrollo.

El primer paso: introducir dependen experto

Oficial de arranque dubbo dependientes

<dependency>
    <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>2.7.4.1</version> </dependency> <dependency> <groupId>com.alibaba.nacos</groupId> <artifactId>nacos-client</artifactId> <version>1.1.www.feishenbo.cn</version> </dependency> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0<www.lecaixuanzc.cn /version> </dependency> <!-- 注意,引入dubbo官方依赖后,需要同时挪除我们维护的starter包--> 

Paso dos: la transformación de una nota relacionada

  • Cuando está habilitado dubbo: @EnableDubbo en @EnableDubbo [org.apache.dubbo.config.spring.context.annotation.EnableDubbo], y sugirió la adición de ruta del paquete scanBasePackages, tales como: @EnableDubbo (scanBasePackages = "cn.keking.service") . Cuando la velocidad de exploración de los servicios y mejorar dubbo expuestos a introducir servicios
  • Cuando el servicio se expone: @DubboService en @Service] [org.apache.dubbo.config.annotation.Service
  • Cuando se introduce en el servicio: @AutowiredDubbo en @Reference] [org.apache.dubbo.config.annotation.Reference, tres puntos a tener en cuenta aquí:

1, el servicio oficial de arranque por defecto introducido verificará la existencia del servicio, para lanzar una excepción, que afectan a la aplicación se inicia, puede agregar configuración global, redefinir el comportamiento por defecto, no hay ninguna configuración es la siguiente: dubbo.consumer.check = false

2, ya que el motor de arranque INVESTIGACIÓN @AutowiredDubbo tiempo de espera de parámetros tales como los segundos, los parámetros de anotación oficiales @Reference milisegundos, como se ha configurado anteriormente timeout = 30, entonces el tiempo de espera en el motor de arranque oficial sólo 30 milisegundos.

3, en el uso de multi-registro, dubbo servicio será introducido al mismo tiempo desde dos centros de registro, mientras que su URL es exactamente el mismo, también tiene dos instancias de servicio a nivel local, el modo de modo modo cuando tolerante a fallos se transmite ( clúster = modo paralelo "Broadcast") o se genera cuando (cluster = "bifurcar") se activa una vez que el consumidor, el productor recibió una pregunta dos veces. La política de clúster predeterminado para la conmutación por error, se llevará a la carga normal de la Llamada al azar, no tiene este problema. Si hay un modo de difusión, o utilizar el modo paralelo, se puede establecer nacos centro de registro, el registro es no sólo el consumidor. Configuración de la siguiente, y otros servicios son tan oportuna mover para eliminar la configuración después de nacos: dubbo.registries.nacos.parameters.subscribe = false

El tercer paso: configuración modificación dubbo

Extracción de la primavera. Para prefijo, nota que una vez que la actualización de arranque oficial, es necesario añadir una configuración para establecer los Redis tamaño de agrupación de conexiones, el incumplimiento del 8, dubbo.registries.redis.parameters.max.total = 200

El siguiente ejemplo ilustra un dubbo configuración mejorada:

dubbo.application.name = xxx
dubbo.protocol.port = -1
dubbo.provider.timeout = 300000
dubbo.consumer.check = false
dubbo.registries.nacos.address = nacos://xxx:80
dubbo.registries.redis.address = redis://xxx:6379 dubbo.registries.redis.parameters.max.total = 200 

Suavizar la migración a nacos registro

Uso de soportes dubbo funciones multi-registro, dos fases a migrar suavemente desde redis nacos, la primera etapa, las mejoras modificando configurados para centro dual de registro, una segunda fase, retire la transición REDIS centro de registro, dispuestas como sigue :

dubbo.registries.nacos.address=nacos://www.jianjiylzc.com xxx:80
dubbo.registries.redis.address=redis://www.jiaaoylzc.cn  xx:6379

Tenga en cuenta que algunos de los problemas

  • Cuando se utiliza redis registro, si hay sólo una instancia de redis, que se distingue por el ambiente DB redis a control, por ejemplo como sigue:

dubbo.registry.parameters.db.index = 2

  • Y nacos Registro distinguen por la configuración específica de espacio de nombres es la siguiente:

dubbo.registry.parameters.namespace = www.pingguoyul.cn xxxxxx

  • Si se trata de configuración multi-registro, tenga en cuenta el uso del prefijo correspondiente registro, tales como: dubbo.registries.nacos.parameters.namespace = adefa98f-f4d9-4af8-9eb3-e0cab5a39cc7

epílogo

dubbo programa de actualización es simple, pero muy suave transición de actualización no es fácil, o se encuentran muchos problemas durante este establo es un proceso de optimización continua. Hasta ahora no hemos extendido en todos los ámbitos de la producción, pero las aplicaciones individuales Onto producción no verificar, el riesgo de ésta, necesidad de ser cuidadoso y cauteloso

Supongo que te gusta

Origin www.cnblogs.com/laobeipai/p/12636671.html
Recomendado
Clasificación