Apache Dubbo is an open source, remote procedure call framework based on Java(RPC).
open sourced in 2011, and entered the Apache Incubator in February 2018
Dubbo brings key functionalities such as interface based remote call, fault tolerance and load balancing, and automatic service registration and discovery.
(Image taken from https://dubbo.apache.org/)
- Container is responsible for launching, loading, and running the service Provider
- Provider registers its services to Register during its initialization
- Consumer subscribes the services it needs from the Register when it starts
- Register returns the Providers list to Consumer, and when a change occurs, the Register push the changed data to Consumer
- Based on a soft load balancing algorithm, the Consumer will select one of the Providers and executes the invocation, automatically choose another Provider when a fail occurs.
- Both Consumer and Provider will count the number service invocations and time-consuming in memory, and send the statistics to Monitor every minute.
- A transparent interface based RPC
- Intelligent load balancing, which supports multiple load balancing strategies out of the box
- Automatic service registration and discovery
- High extensibility, micro-kernel and plugin design which ensures that it can easily be extended by third party implementation across core features like protocol, transport, and serialization
- Runtime traffic routing, which can be configured at runtime so that traffic can be routed according to different rules, making it easy to support features such as blue-green deployment, data center aware routing, etc
- Visualized service governance, which provides rich tools for service governance and maintenance such as querying service metadata, health status, and statistics
(above: article taken from infoq)
- 为什么要独设Monitor, 虽然很多Frame都会这么做.减少Registry资源消耗?
- Load Balance是谁的LD? Consumer还是Provider?
- container提供Proivder运行环境? container可以分布式扩展吗?
- 最后的问题, RPC的应用场景是什么? 为什么要RPC? 用于局域网? 公网? 从功能上看, RPC类似于API接口, 那为什么要细化到方法的程度? 耦合性不是更强?