Prefacio
Debido a las razones laborales, es necesario integrar a Dubbo en el proyecto, por lo que revisé los documentos relacionados con Dubbo y descubrí que Dubbo no se ha actualizado en la actualidad, por lo que dirigí mi atención a Dubbox. Dubbox es un proyecto desarrollado por Dangdang.com basado en Dubbo, Dubbox. Porque uno de los proyectos de la compañía se basa en Spring MVC 3.0 y el otro se basa en Spring Boot, y Spring Boot tiene relativamente menos documentos, por lo que este artículo registra cómo heredar Dubbox en Spring Boot
1. Instale Zookeeper
1. Introducción al Zookeeper
Zookeeper es un servicio distribuido de coordinación de aplicaciones distribuidas de código abierto. Es una implementación de código abierto del gordito de Google y un componente importante de Hadoop y HBase. Es un software que proporciona servicios consistentes para aplicaciones distribuidas, y sus funciones incluyen: configuración y mantenimiento, servicios de nombres de dominio, sincronización distribuida, servicios grupales, etc.
El objetivo de Zookeeper es empaquetar servicios clave complejos y propensos a errores, y proporcionar a los usuarios interfaces simples y fáciles de usar y sistemas eficientes y estables.
Dubbo es un marco distribuido que se basa en Zookeeper. Por supuesto, el desarrollo secundario Dubbox definitivamente dependerá de Zookeeper, por lo que primero debemos instalar Zookeeper.
2. Descargar Zookeeper
Dirección del sitio web oficial de Zookeeper http://zookeepers.apache.org/
Descargar dirección http://apache.fayea.com/zookeeper/
La dirección de descarga local es más conveniente: //www.vevb.com/softs/578345.html
3. Instale Zookeeper
Debido a que lo configuré en el entorno de Windows, hablaré brevemente sobre la configuración a continuación Windows. Primero, descomprima el paquete comprimido, luego ingrese la carpeta conf, copie zoosample.cfg para crear una copia, y luego cambie el nombre de zoo.cfg, porque Zookeeper solo reconoce zoo.cfg, y el valor predeterminado no está disponible. zoosample.cfg es el archivo de configuración predeterminado, pero debido al nombre del archivo, Zookeeper no puede reconocerlo. Por supuesto, está bien cambiar el nombre directamente de zoo_sample.cfg, solo depende de tu favorito.
4. Comience Zookeeper
Simplemente ejecute zkserver.cmd en el directorio bin directamente en el entorno de Windows. Si es un entorno de Linux, ejecutarlo en el directorio bin.
./zkserver.sh inicio
se puede iniciar el chokeeper
5. Agregue dependencias de Dubbox
<Spendency> <MoupRid> com.alibaba </proupid> <artifactid> dubbo </artifactid> <versión> 2.8.4 </versión> </pendency> <pendency> <proupid> com.101tec </groupid> <artifactid> zkclient </artifactid> <production> 0.9 </lipeers> </persion> <pendency> <pendency> <MoupRid> org.apache.zookeeper </groupid> <artifactid> ZOOKEEPER </artifactid> <versión> 3.4.6 </versión> <exclusions> <Scusion> <ProupId> org.slf4j </proupid> <ariFactid> slf4j-log4j12 </artifactid> <///exclusion> <excolemid> <RATIFACTID> SLF4J-LOG4J12 </artifactid> <//exclusion> <excusion> <CroupId> <artifactid> log4j </arfactid> </extusion> </excusionions> </pepertency>
Tenga en cuenta que la versión 2.8.4 de Dubbo aquí es compilada por mí mismo, que no está disponible en el repositorio de Maven porque Dubbo ya no se actualiza, mientras que 2.8.4 es Dubbox de Dangdang.com, por lo que si desea usarlo, compile Dubbox o use la versión anterior de Dubbo de Dubbo de Dubbo
6. Agregue la clase de interfaz del proveedor de servicios:
paquete wang.raye.dubbo.Interfaces; interfaz pública dubbointerface {public string hello (nombre de cadena);}Clase de implementación de la interfaz:
paquete wang.raye.dubbodemo1; import org.springframework.stereotype.service; import wang.raye.dubbo.dubbointerface; @ServicePublic Class DubBoImpl implementa Dubbointerface {public String Hello (String Name) {return "Hello"+Name+"Esto es dubBodemo1"; }}7. Agregue el archivo XML XML de configuración DUBBO a la carpeta de fuentes. Puedes nombrar el nombre a voluntad. Aquí está dubbo.xml
<? 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: jee = "http://www.springframework.org/schema/jee" xmlns: tx = "http://www.springframework.org/schema/tx" xmlns: dubbo = "http://code.alibatech.com/schema/dubbo" xmlns: context = "http://www.springframework.org/schema/context" xsi: schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/spring-beans-3. http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd http://www.springframework.org/jee http://www.springframework.org/schema/jee/spring-Jee-3.1.xsd http://code.alibabatech.com/schema/dubbo http://code.alibatech.com/schema/dubbo/dubbo.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd "predeterminado-lazy-init =" false "> <!-Información del nombre de la aplicación del proveedor, esto es equivalente a dar un nombre. Nuestra página de administración de Dubbo es más clara qué aplicación expuesta-> <dubbo: name de la aplicación = "dubbo-provider1"> < /dubbo: aplicación> <!-Expone la interfaz utilizando anotación <dubbo: paquete de anotación = "wang.raye.dubbodemo1" />-> < address="zookeeper://192.168.1.126:2181" check="false" subscribe="false" register=""></dubbo:registry> <!-- Exposure the interface to be exposed--> <dubbo:service interface="wang.raye.dubbo.interfaces.DubboInterface" ref="dubboImpl" /> </beans>
Cada nodo aquí tiene una explicación, creo que no será demasiado explicación
8. Configure los consumidores
Referencias a proveedores remotos en clase
paquete wang.raye.dubbodemo3.controller; import org.springframework.beans.factory.annotation.aUtowired; importar org.springframework.stereotype.controller; importar org.springframework.web.bind.annotation.requestMapping; importar org.springframework.web.bind.annotation.ResponseBody; import wang.raye.dubbo.dubbointerface; @ControllerPublic DubBocontroll {@aUtoWired private Dubbointerface interface1; @RequestMapping ("/Hello") @ResponseBody Public String Hello (Nombre de cadena) {Interface de retorno1.hello (nombre); }}Configuración XML del consumidor
<Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschemainstance" xmlns: dubbo = "http://code.alibatech. xsi: schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beanss.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd "> <!-Nombre de la aplicación de consumo, utilizado para calcular las dependencias, no las condiciones coincidentes, no sean lo mismo que el proveedor-> <dubbo: Application name =" dubbo-custom-ddsp "/> <dubbo: Registrar dirección = "ZOOKEEPER: //192.168.1.126: 2181"/> <!-Generar el agente de servicio remoto, puede usar DemosService como los frijoles locales-> <dubbo: ID de referencia = "Dubboservice" interfaz = "wang.raye.dubbo.interfaces.dubboterface"/> </grans>
Aquí hay comentarios, por lo que no debería haber necesidad de decir más. Además, este artículo no presta atención a la configuración de Dubbo, pero principalmente habla sobre Spring Boot Integration Dubbox
9. Referencia Dubbo Configuración XML Para agregar anotaciones a la clase de aplicación de arranque de Spring
@ImporTresource ({"classpath: dubbo.xml"})Debido a que mi nombre XML es dubbo.xml, cuando lo usa, debe cambiarlo a su propio nombre XML. Nota: La clase de aplicación del proyecto de consumo y el proyecto del proveedor de servicios deben configurarse con esta anotación.
Final
En este punto, la integración de arranque de primavera Duubox está terminado. Por supuesto, debe estar vacío decir esto, por lo que el proyecto que probé se cargó a GitHub. Puedes referirte a él. Por supuesto, si desea probarlo, debe modificar la dirección Zookeeper en el nodo Dubbo: Registro de Dubbo.xml.
Dirección de demostración, para mostrar las ventajas de Dubbo, creé dos proveedores de servicios. Si llamo con frecuencia, seleccionaré automáticamente cualquiera de estos dos e incluso evitaré el equilibrio de carga. Debe ser hecho por el propio Zookeeper, así que siento que es bastante bueno.
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.