Guía Completa de Configuración: Windows, Zookeeper, Maven y Dubbo

  1. Instalación de JDK

La versión de Java que instalé es java-1.8.0-openjdk-1.8.0.131-1

Configuración de la variable de entorno JAVA_HOME:

JAVA_HOME=C:\Program Files\RedHat\java-1.8.0-openjdk-1.8.0.131-1

Configuración de Path:

Path=%JAVA_HOME%\bin;

  1. Instalación y configuración de Zookeeper

La versión que instalé es zookeeper-3.4.13

Configuración de variables de entorno

ZOOKEEPER_HOME=C:\zookeeper-3.4.13

Path=%ZOOKEEPER_HOME%/conf;

En el directorio de instalación de zookeeper, ingrese al directorio conf, renombre el archivo zoo_sample.cfg a zoo.cfg

Edite el archivo zoo.cfg con un editor de documentos de la siguiente manera

# El número de milisegundos de cada tick (paquete de latido)
tickTime=2000
# El número de ticks que puede tomar la fase de
# sincronización inicial
initLimit=10
# El número de ticks que pueden pasar entre
# enviar una solicitud y recibir una confirmación
syncLimit=5
# el directorio donde se almacena la instantánea.
# no use /tmp para el almacenamiento, /tmp aquí es solo
# a modo de ejemplo.
dataDir=C:\\zookeeper-3.4.13\\data
dataLogDir=C:\\zookeeper-3.4.13\\log
# el puerto al que se conectarán los clientes
clientPort=2181
# el número máximo de conexiones de cliente.
# aumente esto si necesita manejar más clientes
#maxClientCnxns=60
#
# Asegúrese de leer la sección de mantenimiento de la
# guía del administrador antes de activar la purga automática.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# El número de instantáneas para conservar en dataDir
#autopurge.snapRetainCount=3
# Intervalo de tarea de purga en horas
# Establecer en "0" para deshabilitar la función de purga automática
#autopurge.purgeInterval=1

Detalles de la configuración del archivo

<em>
Nombre del parámetro

Descripción

clientPort
El puerto al que los clientes se conectan al servidor, es decir, el puerto de servicio externo, generalmente se establece en 2181.

dataDir
Directorio para almacenar archivos de instantánea (snapshot). Por defecto, los registros de transacciones también se almacenan aquí. Se recomienda configurar el parámetro dataLogDir simultáneamente, ya que el rendimiento de escritura de los registros de transacciones afecta directamente el rendimiento de zk.

tickTime
Una unidad de tiempo en ZK. Todos los tiempos en ZK se basan en esta unidad de tiempo y se configuran como múltiplos enteros. Por ejemplo, el tiempo de espera mínimo de sesión es 2*tickTime.

dataLogDir
Directorio de salida de registros de transacciones. Intente configurar la salida de registros de transacciones en un disco separado o punto de montaje, lo que mejorará enormemente el rendimiento de ZK.  (No hay propiedad del sistema Java)

globalOutstandingLimit
Número máximo de solicitudes acumuladas. Por defecto es 1000. Cuando ZK se está ejecutando, aunque el servidor ya no tiene espacio libre para manejar más solicitudes de clientes, aún permite a los clientes enviar solicitudes al servidor para mejorar el rendimiento. Por supuesto, para evitar el desbordamiento de memoria del Servidor, este número de solicitudes acumuladas aún necesita ser limitado.  (Propiedad del sistema Java: zookeeper.globalOutstandingLimit.)

preAllocSize
Espacio en disco preasignado para escribir registros de transacciones posteriormente. Por defecto es 64M, y el tamaño de cada archivo de registro de transacciones es 64M. Si la frecuencia de instantáneas de ZK es alta, se recomienda reducir adecuadamente este parámetro. (Propiedad del sistema Java: zookeeper.preAllocSize)

snapCount
Después de generar registros de transacciones snapCount veces, se activa una instantánea (snapshot), en este momento, ZK generará un archivo snapshot.* y creará un nuevo archivo de registro de transacciones log.*. Por defecto es 100000. (En la implementación real del código, se realizará un procesamiento con números aleatorios para evitar que todos los servers realicen instantáneas al mismo tiempo y afecten el rendimiento) (Propiedad del sistema Java: zookeeper.snapCount)

traceFile
Registra todas las solicitudes en un log, generalmente se puede usar durante el proceso de depuración, pero no se recomienda en entornos de producción, ya que afectará gravemente el rendimiento. (Propiedad del sistema Java: requestTraceFile)

maxClientCnxns
Límite en el número de conexiones entre un cliente único y un servidor único, a nivel de IP, el valor predeterminado es 60, si se establece en 0, significa que no hay ninguna restricción. Tenga en cuenta el alcance de este límite, es solo un límite en el número de conexiones entre una sola máquina cliente y un solo servidor ZK, no una restricción para una IP de cliente específica, ni un límite en el número de conexiones del clúster ZK, ni un límite en el número de conexiones de un solo ZK para todos los clientes. La estrategia de restricción para una IP de cliente específica, aquí hay un parche, puede intentarlo: http://rdc.taobao.com/team/jm/archives/1334 (No hay propiedad del sistema Java)

clientPortAddress
Para máquinas con múltiples tarjetas de red, se puede especificar un puerto de escucha diferente para cada IP. Por defecto, todas las IP escuchan en el puerto especificado por clientPort.  Nuevo en 3.3.0

minSessionTimeoutmaxSessionTimeout
Límite de tiempo de espera de sesión, si el tiempo de espera establecido por el cliente no está en este rango, se establecerá forzosamente en el tiempo máximo o mínimo. El tiempo de espera de sesión predeterminado está en el rango de 2 * tickTime ~ 20 * tickTime. Nuevo en 3.3.0

fsync.warningthresholdms
Cuando se escriben los registros de transacciones, si el método fsync se excede del tiempo de espera especificado, se generará una información de advertencia en el registro. Por defecto es 1000ms. (Propiedad del sistema Java: fsync.warningthresholdms) Nuevo en 3.3.4

autopurge.purgeInterval
Como se mencionó anteriormente, en las versiones 3.4.0 y posteriores, ZK proporciona una función de limpieza automática de registros de transacciones y archivos de instantánea, este parámetro especifica la frecuencia de limpieza, la unidad es horas, se debe configurar un entero 1 o mayor, por defecto es 0, lo que significa que la función de limpieza automática está deshabilitada. (No hay propiedad del sistema Java) Nuevo en 3.4.0

autopurge.snapRetainCount
Este parámetro se usa junto con el parámetro anterior, este parámetro especifica el número de archivos que se deben conservar. Por defecto se conservan 3. (No hay propiedad del sistema Java) Nuevo en 3.4.0

electionAlg
En versiones anteriores, este parámetro permitía elegir el algoritmo de elección del líder, pero en versiones posteriores, solo se dejará un algoritmo "TCP-based version of fast leader election", por lo que este parámetro actualmente parece no tener utilidad, no se detalla aquí. (No hay propiedad del sistema Java)

initLimit
Durante el proceso de inicio, el Follower (seguidor) sincronizará todos los datos más recientes del Leader, luego determinará su estado inicial para poder servir al exterior. El Leader permite que el F complete este trabajo dentro del tiempo initLimit. Normalmente, no es necesario prestar demasiada atención a este parámetro. Si la cantidad de datos del clúster ZK es realmente grande, el tiempo que tarda el F en sincronizar datos del Leader también será relativamente largo, por lo que en este caso, es necesario aumentar adecuadamente este parámetro. (No hay propiedad del sistema Java)

syncLimit
Durante la operación, el Leader es responsable de comunicarse con todas las máquinas en el clúster ZK, por ejemplo, a través de algunos mecanismos de detección de latidos, para detectar el estado en línea de las máquinas. Si el L envía un paquete de latidos y después de syncLimit no recibe una respuesta del F, entonces se considera que este F ya no está en línea. Tenga en cuenta: no configure este parámetro demasiado grande, de lo contrario podría ocultar algunos problemas. (No hay propiedad del sistema Java)

leaderServes
Por defecto, el Leader aceptará conexiones de clientes y proporcionará servicios de lectura y escritura normales. Sin embargo, si desea que el Leader se concentre en la coordinación de las máquinas en el clúster, puede establecer este parámetro en no, de esta manera, mejorará enormemente el rendimiento de las operaciones de escritura. (Propiedad del sistema Java: zookeeper.leaderServes).

server.x=[hostname]:nnnnn[:nnnnn]
Aquí x es un número, que es consistente con el id en el archivo myid. A la derecha se pueden configurar dos puertos, el primer puerto se usa para la sincronización de datos y otra comunicación entre F y L, el segundo puerto se usa para la comunicación de votación durante el proceso de elección del Leader.  (No hay propiedad del sistema Java)

group.x=nnnnn[:nnnnn]weight.x=nnnnn
Configuración de agrupación y peso de las máquinas, puede ver aquí (No hay propiedad del sistema Java)

cnxTimeout
Tiempo de espera para abrir una conexión durante el proceso de elección del Leader, por defecto es 5s. (Propiedad del sistema Java: zookeeper.cnxTimeout)

zookeeper.DigestAuthenticationProvider<br></br>
.superDigest
Configuración de permisos de ZK, consulte específicamente "Uso de la identidad super para operar nodos con permisos" y "Control de permisos de ZooKeeper"

skipACL
No realizar comprobaciones ACL para todas las solicitudes de clientes. Si anteriormente se establecieron restricciones de permiso en los nodos, una vez que este encabezado se abra en el servidor, también se invalidará. (Propiedad del sistema Java: zookeeper.skipACL)

forceSync
Este parámetro determina si se debe llamar a FileChannel.force para garantizar la sincronización completa de datos en el disco al escribir los registros de transacciones. (Propiedad del sistema Java: zookeeper.forceSync)

jute.maxbuffer
Cantidad máxima de datos por nodo, por defecto es 1M. Esta restricción debe configurarse tanto en el servidor como en el cliente para que surta efecto. (Propiedad del sistema Java: jute.maxbuffer)

 
</em>

Iniciar zk

No cierre esta ventana, asegúrese de que zk se ejecute constantemente

  1. Configuración de MAVEN

Descagra: http://maven.apache.org/download.cgi

Descargue y descomprima

Agregue las variables de entorno M2_HOME y MAVEN_HOME a las variables de entorno de Windows y apúntelas a su carpeta de Maven.

Actualice la variable PATH, agregue la carpeta bin de Maven al final de PATH, como: %M2_HOME%\bin, de esta manera puede ejecutar comandos de Maven en cualquierr directorio.

Path=%M2_HOME%\bin;%MAVEN_HOME%\bin;

Para verificar, ejecute mvn –v en el símbolo del sistema, como se muestra en la siguiente salida:

  1. Configuración de Dubbo

Descarga: https://github.com/apache/incubator-dubbo/tree/dubbo-2.5.8

Descomprima, abra cmd e ingrese al directorio dubbo-admin, como el directorio donde descomprimí: C:\Users\Administrator\Desktop\Herramientas\dubbo-dubbo-2.5.8\dubbo-dubbo-2.5.8\dubbo-admin, en cmd ingrese el comando: mvn clean install

shift+clic derecho

En el directorio target se genera el archivo dubbo-admin-2.5.8.war, coloque este archivo war en el directorio webapps de tomcat, inicie tomcat, acceda a localhost:[puerto]/dubbo-admin-2.5.8, ingrese el nombre de usuario y contraseña predeterminados: root/root

  1. Configuración de Spring Boot
  2. Desarrollo con Dubbo

Sitio web oficial de dubbo: http://dubbo.apache.org/zh-cn/index.html

Etiquetas: JDK Zookeeper maven Dubbo Spring Boot

Publicado el 6-1 09:31