Dangdang recently open source Dubbox project, can provide the Dubbo service framework with a number of extension functions, including restful remote calls, KRYO/FST serialization and so on.
Dangdang Architecture Department and Technical Committee architect Shenli introduced the Dubbox project to Infoq Chinese station, and the development background and main features are described as follows:
Dubbo is an open source distributed service framework widely used by many internet companies in China, even if it is a very comprehensive SOA infrastructure from a global perspective. As an important technical research topic, we have implemented some new functions for Dubbo according to our own demand, and named it Dubbox (i.e. Dubbo eXtensions).
The main new features include:
- supports restful remote calls (HTTP + json/xml) : Based on a very mature JBoss resteasy framework, remote calls to restful (HTTP + json/xml) are implemented in Dubbo to significantly simplify cross-language interactions within the enterprise, while significantly simplifying the enterprise's external open APIs, Development of wireless APIs and even Ajax server-side. In fact, this rest call also allows Dubbo to provide basic support for today's particularly popular "microservices" architectures. In addition, rest calls have achieved relatively high performance, with only about 1.5 times times the difference between the HTTP + JSON and the Dubbo 2.x default RPC protocol (that is, TCP + Hessian2 binary serialization) under benchmark tests, as described in the benchmark report below.
- supports Kryo and FST-based Java efficient serialization implementations : Based on today's more well-known kryo and FST High-performance serialization libraries, add a new serialization implementation for the Dubbo default RPC protocol, and optimize its serialization system, significantly improving the Dubbo RPC performance, see the benchmark report in the documentation.
support for embedded Tomcat-based HTTP remoting system : embedded Tomcat implementation of Dubbo HTTP remoting system (i.e. dubbo-remoting-http), To gradually replace the older version of the embedded jetty in Dubbo, you can significantly improve remote invocation performance for rest and more, and upgrade the Servlet API support from 2.5 to 3.1. (Note: In addition to Rest,dubbo in WebServices, Hessian, HTTP Invoker and other protocols are based on this HTTP remoting system).
upgrade Spring: Upgrade the spring in Dubbo from 2.x to the most commonly used 3.x version, reducing the hassle of version conflicts in your project.
Upgrade the Zookeeper client : Upgrade the Zookeeper client in Dubbo to the latest version to fix bugs included in the old version.
Many of the above features have been used in the internal stability of Dangdang, and now open source for everyone to reference and correct. Also hope that interested friends also to contribute more improvements for Dubbo.
Note: The Dubbox and Dubbo 2.x are compatible and do not change any of the existing features and configurations of the Dubbo (in addition to the upgrade of versions such as spring). In addition, Dubbox also strictly complies with the requirements of the Apache 2.0 license.
Attached: Distributed service framework and RPC framework
There are also a number of distributed service frameworks found in the open source field, including Finagle (Scala-based), Flipkart (the largest business-to-business site in India), Phantom (less documentation), Apache Tuscany (a bit old, and not very suitable for internet companies) and so on, in fact, there are a few companies in the country to provide open source Java service Framework, but Dubbo in its functional integrity, architectural elegance, ease of use and other aspects still have its relatively unique advantages, Although most of Dubbo's development was done before 2012.
In addition, the industry's open source RPC framework is numerous and difficult to count, but the general RPC framework and the Distributed service framework we discussed still have a considerable distance, such as in the remote invocation of multi-protocol, multi-serialization support, perfect service governance and so on have a lot of missing. It is also because of this lack, the famous Apache thrift and other frameworks can also be attributed to the RPC framework, and the main building on thrift above the Finagle, Phantom and other frameworks closer to the full Distributed service Framework (of course, Dubbo actually support thrift, Just not perfect yet).
About Shenli
Shenli, currently working as an architect at Dangdang's architecture and technical committees, is responsible for the development of Dangdang's SOA implementation (i.e., service-oriented) and distributed service frameworks. There have been long-term work experiences in foreign companies such as Bea, Oracle, Redhat, and many different SOA-related frameworks and containers.
Dangdang Open Source Dubbox, Extended Dubbo Service Framework supports restful remote invocation