Prefacio
Con el desarrollo de Internet, la escala de las aplicaciones del sitio web se ha ampliado continuamente, y las arquitecturas de aplicaciones verticales convencionales ya no pueden hacer frente a ella. La arquitectura de servicio distribuido y la arquitectura de computación móvil son imperativas. Dubbo es un marco de servicio distribuido, que nació en este caso. Ahora el negocio principal se extrae como un servicio independiente, para que las aplicaciones frontales puedan responder de manera más rápida y estable.
Que es dubbo
Dubbo es el marco de servicio distribuido de código abierto de Alibaba. Su mayor característica es que está estructurada de manera en capas. Este método puede desacoplar (o maximizar el acoplamiento suelto) entre las capas. Desde la perspectiva del modelo de servicio, Dubbo adopta un modelo muy simple, ya sea el proveedor proporciona servicios o el consumidor consume servicios. Por lo tanto, según este punto, podemos abstraer los dos roles del proveedor de servicios y el consumidor de servicios. Sobre el centro de registro, soporte de acuerdo, monitoreo de servicios y otros contenidos
¿Qué puede hacer Dubbo?
Cuando el sitio web se hace más grande, es inevitable que la aplicación sea dividida y con servicio (microservicios) sea necesario para mejorar la eficiencia del desarrollo, optimizar el rendimiento, ahorrar recursos competitivos clave, etc.
A medida que más y más servicios, la información de la dirección de URL del servicio explotará, la gestión de la configuración se vuelve muy difícil y la presión de un solo punto del equilibrador de carga de hardware F5 se está volviendo cada vez mayor.
Cuando un mayor desarrollo, las dependencias entre servicios se vuelven complicadas e incluso no pueden saber qué aplicación se inicia antes de qué aplicación, los arquitectos no pueden describir completamente la relación arquitectónica de la aplicación.
Luego, el número de llamadas de servicios se vuelve cada vez más grande, y el problema de la capacidad de servicio está expuesto. ¿Cuánto soporte de máquina requiere este servicio? ¿Cuándo debo agregar la máquina? etc……
Al encontrar estos problemas, puede usar Dubbo para resolverlos.
Lo que comparto con usted esta vez es la configuración inicial de la aplicación Dubbo Framework y el uso del Centro de Registro Zookeeper; Cuando se trata del centro de registro, solo hay dos tipos de cosas que he usado: Zookeeper y Eureka. Uso ZK con Dubbo y Eureka con SpringCloud. Por lo tanto, compartiré con ustedes algunos capítulos sobre microservicios más tarde, con la esperanza de que sea útil para usted.
Instale el centro de registro Zookeeper
Proveedor y consumidor del marco de Dubbo
implementación de dubbo-admin
Instale el centro de registro Zookeeper
En primer lugar, necesitamos buscar la dirección de descarga de Zookeeper en línea. Estoy en el sistema Linux, por lo que descargamos el paquete Zookeeper-3.3.6.tar.gz y lo descomponemos a través de TAR -ZXVF ZOOKEEPER-3.3.6.tar.gz. Cabe señalar que los archivos de configuración en el paquete general son la versión de muestra predeterminada, y el nombre de archivo de configuración predeterminado de ZOOKEEper es solo zoo.cfg. Para no especificar el nombre del archivo cada vez, necesitamos crear un archivo de configuración llamado zoo.cfg en el directorio de conf. El contenido del archivo se puede copiar desde zoo_sample.cfg o cambiar el nombre del archivo. El contenido es el siguiente vim zoo.cfg:
# El número de millones de segundos de cada TickTicktime = 2000 #HeartBeat Frecuencia # El número de garrapatas que la fase inicial de # Sincronización puede tomarInitlimit = 10 #Restrict Connection # El número de garrapatas que puede pasar entre # enviar una solicitud y obtener un reconocimiento de reconocimiento en el que los clientes ConnectClientPort = 2081 #zookeeper Puerto externo
No modificaré la información del parámetro aquí y usaré el valor predeterminado; Introducir brevemente varios comandos de uso común sobre cómo editar el contenido del archivo en Linux:
vim zoo.cfg: ver contenido del archivo
Insertar: ejecute el comando insertar
ESC: Cancelar el comando, luego presione: P: Salir ,: WQ: Guardar y salir
Cuando tenemos zoo.cfg, solo necesitamos ingresar su directorio bin para encontrar el archivo zkserver.sh e iniciar el centro de registro ZOOKEEPER ejecutando el comando ./zkserver.sh iniciar. El mensaje de inicio normal es el siguiente:
Por lo general, Zookeeper está en un servidor separado como centro de registro, y el programa (aquí se refiere a mi local) debe llamar a otro centro de registro. Además, el centro de registro debe verificar si se puede conectar el puerto abierto de Zookeeper. Mi local es Windows 10, por lo que no necesita verificar el puerto a través del cliente Zookeeper. Solo necesita usar Telnet IP 2081 para detectar si el puerto está abierto;
Proveedor y consumidor del marco de Dubbo
En primer lugar, por conveniencia, necesitamos definir una interfaz unificada, que es la interfaz pública extraída por el negocio. Empacamos esta interfaz por separado en un módulo. Aquí está Dubbo_api. Definimos la siguiente interfaz en este módulo:
Public Interface UserService {list <Omuser> getUsers (); }Luego, cree un módulo de proveedor, que depende del módulo DUBBO_API e implementa la interfaz UserService, el código es el siguiente:
Public Class UserServiceImpl implementa UserService {@Value ("$ {server.port}") private int puerto; / ** * @return */ @Override Public List <Mouser> getUsers () {list <mouser> list = new ArrayList <> (); for (int i = 0; i <5; i ++) {mouser user = new Mouser (); user.setUsername ("shenniu" + i); user.setUserPWD ("Port:" + puerto); list.add (usuario); } Lista de retorno; }}Como proveedor de servicios, para usar el marco Dubbo, primero debe introducir Dubbo y luego hacer alguna configuración. Primero, necesitamos introducir dependencias de Dubbo a través de Maven en el módulo DUBBO_Provider. Zookeeper se usa en el centro de registro, por lo que también necesitamos introducir las dependencias correspondientes a través de Maven:
<Spendency> <MoupRoD> org.apache.zookeeper </groupid> <artifactid> Zookeeper </artifactId> <versión> 3.4.8 </versión> </pendency> <epardency> <MoupRupid> com.101tec </groupId> <AtifactId> zkclient </artifactid> <versions> 0.3 </presion> <//dependency> <MoupRid> com.alibaba </groupid> <artifactid> dubbo </artifactid> <versions> 2.5.3 </versewers> <exclusions> <exclusion> <proupid> org.springframework </groupid> <arifactid> spring> spring </artifactid> </sextusion> </scOtusions> </pendency> <proup.Moup.Exmampion </ExcopLaMid </ExcopLaMED </ExcopLaMED </ExcopLaMED </Group.Extampe </Exextampe </ExcopLaMED </ExcopLaMeMIME </EXCLOPEMAD </GROUPIMIS <artifactid> dubbo_api </arfactid> <versión> 0.0.1-snapshot </versión> </pendency>
Después de completar la dependencia, el resto es configurar el proveedor de Dubbo, crear el archivo de configuración de Resources/Dubbo-Conf/Server.xml, y el contenido del archivo:
<? xml versión = "1.0" encoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" "" "" xmlns: dubbo = "http://code.alibabatech.com/schema/dubbo" xsi: schemalocation = "http://www.springframework.org/schema/Beans http://www.springframework.org/schema/Beans/Spring-Beansd-Beansd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd "> <!-Nombre del proveedor-> <dubbo: application name =" Demo-Provider "/> <!-Dirección de servicio del Centro de registro de Zookeeper-> <Dubbo de Registro" Centro de registro de Zookeeper-<Dubbo de Registro ". dirección = "192.168.168.168:2081" /> <!-use el protocolo Dubbo para exponer el servicio en el puerto 20880, puerto de comunicación de protocolo-> <dubbo: protocol name = "dubbo" puerto = "20880" /> <!-Interfaz de servicio de usuarios-> <dubbo: servicio interfaz = "servicio.userseService" ref = "usingser Implementación de la interfaz-> <bean id = "UserService"/> </beans>
Agregar importación de recursos @ImpORTRESource ("ClassPath: Dubbo-Conf/*. XML") en el portal DubBoProviderApplication, y nuestro proveedor de servicios se completa aquí. Verifique el registro de inicio:
No hay excepción cuando comienza el proveedor de servicios. Veamos el llamado para crear un módulo de dubbo_consumer, y también introduzcas las dependencias del módulo de la interfaz pública DUBBO_API, luego cree un UserController y exponga una interfaz de usuario GET:
@RestControllerPublic Class UserController {@aUtowired private UserService UserService; @GetMapping ("/users") Lista pública <Omuser> getUsers () {return Userservice.getUsers (); }}El servicio de usuarios aquí es la inyección de la interfaz pública; Después de completar la codificación, el lado del consumidor presenta dependencias de Dubbo y Zookeeper:
<Spendency> <MoupRoD> org.apache.zookeeper </groupid> <artifactid> Zookeeper </artifactId> <versión> 3.4.8 </versión> </pendency> <epardency> <MoupRupid> com.101tec </groupId> <AtifactId> zkclient </artifactid> <versions> 0.3 </presion> <//dependency> <MoupRid> com.alibaba </groupid> <artifactid> dubbo </artifactid> <versión> 2.5.3 </versión> <exclusions> <exclusion> <grupoD> org.springframework </proupId> <artifactid> spring </artifactid> </excusion> </excusions> </pendency>
También creamos un archivo de configuración con el nombre de recursos/dubbo-conf/client.xml e presentamos este recurso en la entrada de la aplicación:
@ImporTresource ("Classpath: Dubbo-Conf/*. Xml")@SpringBootApplicationPublic Class DubBoconsumerApplication {public static void main (string [] args) {springApplication.run (dubBoconsumerApplication.class, args); }}El contenido de configuración de client.xml es el siguiente:
<? xml versión = "1.0" encoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" "" "" xmlns: dubbo = "http://code.alibabatech.com/schema/dubbo" xsi: schemalocation = "http://www.springframework.org/schema/Beans http://www.springframework.org/schema/Beans/Spring-Beansd-Beansd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd "> <!-Nombre del servicio-> <dubbo: application name =" Demo-Consumer "/> <!-Zookeeper Center exposición de la dirección del servicio-> <dubbo: name de la aplicación =" Demo-Consumer "/> <!-Zookeeper Center exposición de la dirección del servicio-> <dubbo: protister stecon dirección = "192.168.168.168:2081" /> <!-Interfaz de servicio de usuario-> <dubbo: reference id = "Userservice" interface = "Service.Userservice" /> < /beans>
En este momento, se completan un proveedor de servicios simple, la configuración y la codificación de la persona que llama, y los 3 módulos son los siguientes:
Luego comience al proveedor y al consumidor respectivamente; Luego solicite la interfaz a través de la interfaz del controlador expuesta por el consumidor. Mi dirección aquí es http: // localhost: 8082/usuarios:
El efecto es que el consumidor obtiene el resultado devuelto por el proveedor a través de la interfaz UserService inyectado que llame GetUsers (), lo que también significa que el uso simple del marco Dubbo se ha considerado exitoso.
implementación de dubbo-admin
Como un popular RPC Framework Dubbo tiene esta herramienta de monitoreo de código abierto Dubbo-Admin. Tengo que decir que el paquete dubbo-admin.war que está listo en Internet no se puede usar ahora o necesita descargar puntos CSSDN. Hay muchas versiones y es un poco complicado. Vaya decisivamente a GIT para extraer el código fuente y empaquetarlo usted mismo. La dirección GIT es: https://github.com/apache/incubator-dubbo-ops. Después de retirarlo, solo necesitamos prestar atención al proyecto Dubbo-Admin, y se pueden ignorar otras cosas por el momento; Después de abrir el proyecto, solo necesitamos modificar la siguiente configuración de captura de pantalla (también puede modificar el archivo de configuración empaquetado):
#zookeeper dirección de configuración y puerto dubbo.registry.address = Zookeeper: //127.0.0.1: 2081#contraseña de inicio de sesión de backend dubbo.admin.root.password = rootdubbo.admin.guest.password = invitado = invitado = invitado
Después de ejecutar el paquete, puede obtener el nombre: Dubbo-Admin-2.0.0.War Package, luego ponerlo en Tomcat y navegar por el navegador. La cuenta y la contraseña son raíz; Después de iniciar sesión, puede ver al proveedor y al consumidor que comenzamos antes. Esta es la interfaz del servicio del centro de registro de monitoreo de Dubbo-Admin. Puede hacer clic directamente en estos servicios. Si no dices mucho, pruébalo tú mismo.
Dirección de Git: https://github.com/shenniuboxing3 Nuget Publishing Paquete: https://www.nuget.org/profiles/shenniuboxing3
Resumir
Lo anterior es todo el contenido de este artículo. Espero que el contenido de este artículo tenga cierto valor de referencia para el estudio o el trabajo de todos. Si tiene alguna pregunta, puede dejar un mensaje para comunicarse. Gracias por su apoyo a Wulin.com.