Red de conocimiento informático - Conocimiento informático - Cómo registrar beans de referencia en Dubbo

Cómo registrar beans de referencia en Dubbo

El propio SimpleRegistryService se expone como un servicio dubbo.

lt; dubbo: protocolport="9090" /gt;

lt; dubbo: service interface="com.alibaba.dubbo.registry.RegistryService" ref="RegistroService" ="N/A" ondisconnect="desconectar" callbacks="1000"gt;

lt; dubbo: métodoname="subscribe"gt; dubbo: .argument index="1" callback=" true"/gt;lt;/dubbo:methodgt;

lt;dubbo:methodname="unsubscribe"gt;lt;dubbo:argument index="1" callback="false"/gt;lt; /dubbo: métodogt;

lt; /dubbo: serviciogt;

lt; bean id="registryService" class="com.alibaba.dubbo..registry.simple.SimpleRegistryService" /gt;

Lo anterior revela la configuración del registro por el servicio dubbo,

define el número de puerto del servicio de registro

Al publicar el servicio RegistryService, el registro El atributo "N/A" significa que el registro no se puede obtener y publicar el servicio de registro también es un método de publicación común del servicio Dubbo. Si este atributo no está configurado, también buscará el registro y lo publicará a través del registro. porque ellos mismos son registros, publican servicios directamente al mundo exterior y publican servicios directamente al mundo exterior a través de ip: puerto.

La publicación de servicios define una interfaz de devolución de llamada, que define el servicio de devolución de llamada expuesto por la segunda clase de entrada de la suscripción. Cuando el estado del servicio registrado cambia, el registro devolverá la llamada y lo enviará al cliente.

El proceso de exposición y llamada del registro del protocolo Dubbo es en realidad el mismo que el del servicio Dubbo ordinario. Lo que puede ser diferente de la mayoría de los servicios en SimpleRegistryService es que al recibir una solicitud de suscripción, hará referencia a The. El servicio NotifyListener expuesto por la persona que llama se enviará automáticamente cuando cambien los datos de registro

El productor publica el servicio

El protocolo Dubbo publica el servicio en el registro: cuando el proveedor de servicios utiliza el protocolo dubbo , Al publicar servicios en el registro, cómo obtener el registro, cómo crear el registro, cómo registrarse y suscribirse al servicio, analicemos el proceso a continuación.

DemoService" ref="demoService"/gt;

1. Especifique el registro según el protocolo dubbo, la dirección del registro y el número de puerto

2. Publique el servicio DemoService, que utiliza DemoServiceImpl Formal implementación

Cada

1. obtiene el registro

2. Obtenga el registro a través de loadRegistries RegistrationUrls

registry://127.0.0.1:9090/com.alibaba.dubbo.registry.RegistryService?application=demo-provideramp. ;dubbo=2.5.4- SNAPSHOTamp;owner=williamamp;pid=7084amp;registry=dubboamp;timestamp=1415711791506

Para la URL del modelo de datos unificado:

protocol=registry Indica el URL de registro

Dirección de registro 127.0.0.1:9090

Llame al servicio de registro RegistryService

El protocolo de registro es registro=dubbo

.

2. URL de compilación: //192.168.0.102: 20880/com.alibaba.demo.DemoService trueamp;application=proveedor de demostraciónamp;dubbo=2.5.4-SNAPSHOTamp;generic=falseamp;interfaz. =com.alibaba.dubbo.demo.DemoServiceamp;loadbalance=roundrobinamp;methodology=com.alibaba.dubbo.demo.DemoService?amp;methods =sayHelloamp;owner=williamamp;pid=7084amp;side=provideramp;timestamp=1415712331601

Release Agreement=dubbo

La dirección del proveedor del servicio es 192.168.0.102:20880

p>

El servicio publicado es com.alibaba.dubbo.demo.DemoService

. . . . . .

3. Recorra las URL de registro para registrar servicios en el registro

Para cada URL de registro, agregue la clave de atributo y el valor que se exportará a la URL del servicio publicada anteriormente para obtener la siguiente URL de registro

p >

registry://127.0.0.1.9098/com.alibaba.dubbo.registry.RegistryService?application=demo-provideramp;dubbo=2.5.4-SNAPSHOTamp;export=dubbo3A2F2F 2F192.168.0.1023A208802Fcom.alibaba. dubbo .demo.DemoService3Fanyhost3Dtrue26application3Ddemo-provider26dubbo3D2.5.4- SNAPSHOT26generic3Dfalse26interface3Dcom.alibaba.dubbo.demo.Demo.DemoService26loadbalbalDemoService26loadbalance3Droundrobin26methods3DsayHello 26owner3Dwilliam26pid3 D70842 6side3Dprovider26timestamp3D1415712331601amp; propietario=williamamp; pid=7084amp; registro=dubboamp;1415711791506

4. proxyFactory de Obtenga el objeto Invoker, la interfaz de servicio y la URL de registro de la instancia de servicio publicada como parámetros. El objeto Invoker es el modelo central de Dubbo y todos los demás objetos están cerca de él o se convierten a él.

5. A través del objeto de protocolo protocolo.export(invoker)

Exponer el oyente del servicio a través del DubboProtocol (no esta sección)

Publicar la dirección del servicio en el registro a través de RegistryProtocol y suscríbase al servicio.

RegistryProtocol.export(Invoker) expone el servicio

1 Llame a DubboProtocol para exponer el oyente del servicio

2. Obtenga la conversión de URL del registro getRegistry(Invoker)

, la URL obtenida a través de Invoker es la URL del registro y su atributo de protocolo se utiliza para seleccionar qué protocolo, como RegistryProtocol, DubboProtocol o RedisProtocol, etc. El atributo de protocolo se utiliza para seleccionar qué protocolo utilizar.

Aquí, queremos seleccionar qué registro a través de la URL, por lo que de acuerdo con el atributo registro=dubbo, restablezca el atributo de protocolo de la URL a registroUrl

dubbo://127.0.0.1:9098/com.alibaba dubbo.registry.RegistryService?RegistryService?application=demo-provideramp;dubbo=2.5.4-SNAPSHOTamp;export=dubbo3A2F2F192.168.0.1023A208802Fcom.alibaba.dubbo.demo.DemoService3Fanyhost3Dtrue26application3Ddemo-provider26d. ubbo3D2 .5.4-SNAPSHOT26generic3Dfalse26interface3Dcom .alibaba.dubbo.demo DemoService26loadbalance3Droundrobin26methods3DsayHello26owner3Dwilliam26pid3D504026side3Dprovider26 26timestamp3D1415715706560amp;owner=williamamp;pid=5040amp;timestamp=1415715706529

RegistryFactory.getRegi. stry (url) crea un registro a través de la clase de fábrica. RegistryFactory obtiene la clase de fábrica correspondiente a través del mecanismo dubbo spi. basado en el protocolo dubbo, por lo que es DubboRegistryFactory

3. Obtener la URL de publicación es el valor del parámetro de exportación de RegistrationUrl

RegistryProvider.getRegistry(url) es el parámetro de exportación. valor de URL de registro.

registryProviderUrl=dubbo:/10.33.37.7:20880/com.alibaba.dubbo.demo.DemoService?anyhost=trueamp;application=demo-provideramp.dubbo=2.5.4-SNAPSHOTamp;generic=falseamp; interface=com.alibaba.dubbo.demoService?alibaba.dubbo.demo.DemoServiceamp; loadbalance=roundrobinamp; métodos = sayHelloamp; propietario=williamamp; side=proveeramp; DubboRegistry.register(registryProviderUrl)

Registrar un servicio en el registro a través del registrador

Tenga en cuenta que al comparar registroUrlUtils.ismatch(continuumerUrl, proveedorUrl).ProviderUrl), el atributo de categoría de proveedorUrl Tome el valor predeterminado proveedor,

En este momento, la suscripción del consumidor especificará la categoría = proveedores de la URL de suscripción para determinar si hay un proveedor registrado.

5. Cree el servicio de suscripción overrideProviderUrl, estamos publicando el servicio

provider://10.33.37.7:20880/com.alibaba.dubbo.demo.DemoService?anyhost=true&application. =demo-provideramp;category=configuratorsamp;check=falseamp;dubbo=2.5.4-SNAPSHOTamp;generic=falseamp;interface=com.alibaba.dubbo.demo.DemoServiceamp;loadbalance=roundrobinamp;methods=sayHelloamp;owner=williamamp;pid =6432amp;side=provideramp;timestamp=141515amp;checkfalseamp;dubbo=2.5.4-SNAPSHOTamp;generic=falseamp;interface=com.amp;timestamp=1415847417663

6. y Devolución de llamada para reexportar cuando cambie la URL de suscripción del registro

7. subscribe (overrideProviderUrl, OverrideListener), el registro se suscribe a overrideProviderUrl en el centro de registro y expone Override Listener como un servicio de devolución de llamada. Cuando los datos de overrideProviderUrl en el centro de registro cambien, se volverá a llamar

.

El registro.

El registro, la suscripción, la cancelación del registro y la cancelación de suscripción del registrador DubboRegistry son similares y son todas llamadas al servicio remoto de Dubbo

El proceso de creación de un registro de DubboRegistryFactory

1. la Reconstrucción de la URL del Registro entrante

Eliminar EXPORT_KEY REFER_KEY

Agregar parámetros de devolución de llamada de suscripción

dubbo://127.0.0.1:9098/com.alibaba.dubbo.registry. RegistryService ?application=dubbo.registry.RegistryService?RegistryService?application=demo-provideramp; callbacks=10000amp; connect.timeout=10000amp; dubbo=2.5.4-SNAPSHOTamp; trueamp ;methods=register,subscribe,unregister,unsubscribe,lookupamp;owner=williamamp;pid=8492amp;reconnect=falseamp;sticky=trueamp;subscribe.1.callback=trueamp;timeout=10000amp;timestamp=1415783872554amp;unsubscribe.1. callback =false

2. Construya el objeto del directorio de registro RegistryDircectory basado en la interfaz del servicio de registro de URL e implemente NotiyfLisener. La implementación de NotiyfLisener aquí se refiere principalmente al servicio remoto RegistryService para obtener el Invoker correspondiente. y vuelve a hacer referencia cuando cambia la URL; el servicio de directorio puede enumerar todos los invocadores ejecutables

3. Utilice el método de unión del clúster para utilizar FailoverClusterInvoker de DirectX para utilizar ProxyFactory para obtener el objeto proxy. Servicio RegistryService

5. El objeto proxy del servicio RegistryService se utiliza para obtener el objeto proxy del servicio RegistryService. El objeto proxy del servicio RegistryService y FailoverClusterInvoker crean el registro DubboRegistry del protocolo dubbo

6. Llame al método notify (urls) de RegistryDircectory

Principalmente según las URL de registro, se hará referencia a cada registro implementado por el servicio RegistryService. La clave de servicio = menthodName/value = caché del invocador. caché de invocador, servicio de directorio Directory.list(Invocation) enumerará todos los Invokers que llaman al método, y un Invoker representa la entidad que llama de un registro.

8. Para suscribirse al servicio de registro, el proveedor de servicios RegistryService que llama al servicio de registro pertenece al consumidor, por lo que la URL del protocolo del servicio de suscripción es el consumidor

consumidor: //192.168.0.102 /com.alibaba.dubbo.registry.RegistryService?application=demo-provideramp; callbacks=10000amp; connect.timeout=10000amp; dubbo=2.5.4-SNAPSHOTamp; RegistryServiceamp; lazy=trueamp;métodos=registrarse,suscribirse,cancelar registro,cancelar suscripción,lookupamp;owner=williamamp;owner=williamamp;pid=6960amp;reconnect=falseamp;sticky=trueamp;subscribe.1.callback=trueamp;timeout=10000amp; timestamp= 1415800789364amp; unsubscribe.1.callback=false

El propósito de la suscripción es enviar cambios a los suscriptores cuando cambian los datos del registro

directory.subscribe(url) eventualmente llamará al registro El RegsryService de la tabla es remoto, que es una llamada remota normal de Dubbo. Para hablar de la diferencia con la mayoría de las llamadas remotas de Dubbo: el parámetro de URL subscribe.1.callback=true significa que el segundo parámetro NotifyListener del método de suscripción de RegistryService está expuesto como un servicio de devolución de llamada; el parámetro de URL unsubscribe.1.callback=false; .callback=false El segundo parámetro NotifyListener del método de cancelación de suscripción de RegistryService se expone como un servicio de devolución de llamada de destrucción.

Aquí, la estrategia de llamada de clúster predeterminada utilizada por el centro de registro del protocolo Dubbo para llamar a los servicios del centro de registro es FailOver. Seleccione un centro de registro y solo vuelva a intentarlo con otros servidores cuando falle. También es relativamente simple. No tiene función de agrupación. Si desea inicializar la función de agrupación, puede usar BroadcastCluster. Puede registrarse con cada llamada transversal del centro de registro.