The choice of distributed architecture , A lot at the moment , With Ali's dubbo Service governance scheme for representative , Including Sina montan,rpcx,grpc,Thirft wait , They can be integrated into a set of excellent distributed performance framework by themselves or other third-party open source software . The other type is emerging in people's eyes Spring-cloud,spring With perfect function and good reputation, it has been developed and recognized , Become an integral part of the field ,spring-cloud Relying on its powerful function and influence , And its own powerful set of functional solutions , It can construct a brand structure for enterprise application independently . Which is the most suitable one at present ? Here's a comparison from a great man's blog , I also summed up a comparison of the characteristics
Name Dubbo Spring-cloud
OpenSource Yes Yes
Source alibaba, Has contributed to apache Spring
Reputation High popularity in China Domestic popularity is not high , But relying on Sping Strong technology system
file perfect perfect
Community activity Slow update More active
Architecture Service only governance Providing all aspects of microservice architecture
Distributed configuration You can use Taobao diamond, Baidu's disconf To achieve distributed configuration management pring
Cloud Medium Config In addition to providing configuration management , Because its storage can be used git, Therefore, it naturally implements version management of configuration content , It can be perfectly integrated with application version management
Service tracking Can use Jingdong open source Hydra
Batch task Can use Dangdang open source Elastic-Job
communication main RPC,Dubbox support REST REST
use Dubbo Of RPC To realize some pain points of calling between services
Service provider and caller interface dependency is too strong ： We have defined their own service Abstract interface , And publish to private warehouse through continuous integration , The caller application has strong dependence on the abstract interface provided by microservices , Therefore, regardless of development , test , Integrated environments require strict management of version dependencies , There will not be a series of problems such as the inconsistency between the service side and the caller, resulting in the application can not be compiled successfully , And it will also directly affect the environmental requirements of local development , Often an upper application that relies on many services , A lot of code is updated every day install After that, the subsequent development can be carried out . If there is no strict version management system or develop some automation tools , Such dependencies can be a nightmare for development teams . and REST Interface comparison RPC More lightweight , The dependence of the service provider and the caller depends only on a contract , There is no strong dependency at the code level , of course REST There are also pain points in the interface , Because the interface definition is too light , It is easy to lead to the inconsistency between the definition document and the actual implementation, leading to problems in service integration , But the problem is easy to solve , Only through each service integration swagger, Integrate code and documentation for each service , It can be solved . So in the distributed environment ,REST The service dependence of mode is better than RPC The dependence of mode is more flexible .
Service is platform sensitive , It is difficult to reuse simply ： Usually when we provide external services , In the city REST The way to provide it out , This can achieve cross platform features , The callers of any language can be implemented according to the interface definition . So in Dubbo We need to provide REST Interface time , Have to implement a layer of proxy , Used to transfer RPC Interface conversion to REST Interface for external release . If each of our services REST Interface mode exists , When services are to be provided , Mainly in API The service reuse can be realized by configuring mapping relationship and authority control in gateway
1,Dubbo The foundation of service governance is realized , But to complete a complete microservice architecture , It is also necessary to expand and improve each link to ensure the health of the cluster , To reduce development , Increased pressure on all aspects of testing and operation and maintenance , Only in this way can we really focus on the business logic .
2, and Spring Cloud Still carry forward Spring Source The style of integrating everything , Some mature products and frameworks of microservice architecture are integrated in a standardized manner , And inherited Spring
Boot Simple configuration , Rapid development , Features of easy deployment , Make the original complex architecture work relatively easy to start
3, therefore , If you choose Dubbo Please be sure to prepare the whole solution in each link , Otherwise, it is likely that as the number of services increases , The entire team will struggle to cope with the difficulties caused by various architectural deficiencies . And if you choose Spring
Cloud, Relatively speaking, each link has its corresponding component support , Some may not meet all your needs , But its active community and high-speed iteration progress can also be a strong backing for you .
Comparison of other distributed performance frameworks
For reference only