You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@dubbo.apache.org by KimmKing <ki...@apache.org> on 2019/09/02 01:24:33 UTC

Re:Dubbo as OSGi Remote Service Distribution

Thanks, Scott, 

Integration with other popular frameworks is always in Dubbo Ecosystem Principles.
I am familiar with OSGi, and can you guide me how to implement this Dubbo extensibility.
Asynchronous events for disconnection or failure to reconnect is not supported now, should we complete this feature first for ECF?


At 2019-08-31 06:05:31, "Scott Lewis" <sl...@composent.com> wrote: >Hi, > >I'm the project lead for the Eclipse Communication Framework [1].   >Among other things, ECF provides an implementation of the OSGi R7 Remote >Services/Remote Service Admin specifications [2]. > >ECF supports pluggable 'distribution providers', responsible for the >rpc, serialization/marshalling, and wire protocol.   We have upwards of >10 distribution providers [3] created by us and others. > >I've recently learned about Apache Dubbo, and decided to use it to >create a new ECF Remote Service Distribution Provider [4]. What this >means is that Apache Dubbo can now be used as a distribution impl for >any OSGi remote service.   This also makes it quite possible to have  >Other Runtimes -> OSGi and OSGi->Other runtimes and retain all the OSGi >service dynamics, injection through declarative services, etc. > >If the Dubbo dev community is interested, I could easily describe how >Dubbo extensibility could be exposed via the OSGi service >registry/remote services.   This would make it possible for Dubbo to be >easily extended using the OSGi service registry. > >If Dubbo folks wanted to expose Dubbo modules as OSGi bundles, I believe >this could also be easily done and would be happy to contribute it back >to Dubbo. > >One technical question:  With Dubbo, is it possible to listen for >asynchronous events (such as disconnection/failed reconnect requests) >and respond to them?  If so are there docs or examples of how to do >this? (java API best). > >Thanks. > >Scott > >[1] http://www.eclipse.org/ecf https://wiki.eclipse.org/ECF > >[2] >https://osgi.org/specification/osgi.cmpn/7.0.0/service.remoteserviceadmin.html > >[3] https://wiki.eclipse.org/Distribution_Providers > >[4] https://github.com/ECF/DubboProvider

Re: Dubbo as OSGi Remote Service Distribution

Posted by Scott Lewis <sl...@composent.com>.
Hi KimmKing,

On 9/1/2019 6:24 PM, KimmKing wrote:
> Thanks, Scott,
>
> Integration with other popular frameworks is always in Dubbo Ecosystem Principles.
> I am familiar with OSGi, and can you guide me how to implement this Dubbo extensibility.

I've noticed that Dubbo uses the java ServiceLoader for extensibility.

I believe one good way to leverage the OSGi Service registry would be to 
use the ServiceLoader to load (e.g.) an OSGiRegistryFactory, and then 
have the impl of the OSGiRegistryFactory use the OSGi service registry 
to dynamically use or create instances of (e.g.) Registry instances.    
There is more to it than this, obviously, but the general point is that 
the OSGi Service Registry is sufficiently dynamic that it can support 
both load/start time extensibility (as ServiceLoader does) as well as 
runtime extensibility (bundles and services being added and removed from 
a running system).

> Asynchronous events for disconnection or failure to reconnect is not supported now, should we complete this feature first for ECF?

It would be a nice feature to have for ECF's usage of Dubbo. The main 
reason is that it would allow disconnection events (and/or reconnect 
failure) to be detected by clients...with the result in OSGi of 
automatic unregistration of proxy service instances.   This is something 
that some remote services users value...i.e. the ability to detect 
network failure, resulting in proxy unregistration.

Thanks,

Scott


>
>
> At 2019-08-31 06:05:31, "Scott Lewis" <sl...@composent.com> wrote: >Hi, > >I'm the project lead for the Eclipse Communication Framework [1].   >Among other things, ECF provides an implementation of the OSGi R7 Remote >Services/Remote Service Admin specifications [2]. > >ECF supports pluggable 'distribution providers', responsible for the >rpc, serialization/marshalling, and wire protocol.   We have upwards of >10 distribution providers [3] created by us and others. > >I've recently learned about Apache Dubbo, and decided to use it to >create a new ECF Remote Service Distribution Provider [4]. What this >means is that Apache Dubbo can now be used as a distribution impl for >any OSGi remote service.   This also makes it quite possible to have  >Other Runtimes -> OSGi and OSGi->Other runtimes and retain all the OSGi >service dynamics, injection through declarative services, etc. > >If the Dubbo dev community is interested, I could easily describe how >Dubbo extensibility could be exposed via the OSGi service >registry/remote services.   This would make it possible for Dubbo to be >easily extended using the OSGi service registry. > >If Dubbo folks wanted to expose Dubbo modules as OSGi bundles, I believe >this could also be easily done and would be happy to contribute it back >to Dubbo. > >One technical question:  With Dubbo, is it possible to listen for >asynchronous events (such as disconnection/failed reconnect requests) >and respond to them?  If so are there docs or examples of how to do >this? (java API best). > >Thanks. > >Scott > >[1] http://www.eclipse.org/ecf https://wiki.eclipse.org/ECF > >[2] >https://osgi.org/specification/osgi.cmpn/7.0.0/service.remoteserviceadmin.html > >[3] https://wiki.eclipse.org/Distribution_Providers > >[4] https://github.com/ECF/DubboProvider