Dubbo详解
What:
Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和Spring框架无缝集成。
Do:
- 透明化的远程方法调用,就像调用本地方法一样调用远程方法,只需简单配置,没有任何API侵入。
- 软负载均衡及容错机制,可在内网替代F5等硬件负载均衡器,降低成本,减少单点。
- 服务自动注册与发现,不再需要写死服务提供方地址,注册中心基于接口名查询服务提供者的IP地址,并且能够平滑添加或删除服务提供者。
Spring整合:
Dubbo采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载Dubbo的配置即可,Dubbo基于Spring的Schema扩展进行加载。
...配置文件
原理:
- ConfigServer
- 配置中心,和每个Server/Client之间都会做一个实时的心跳检测(因为他们都是建立的Socket长连接),比如几秒钟检测一次;
- 收集每个Server提供的服务的信息,每个Client的信息,整理出一个服务的列表;
- Client
- 调用服务的机器,每个Client启动时,主动与ConfigServer建立Socket长连接,并将自己的ip等相应信息发给ConfigServer;
- 当有多个服务提供者的时候,Client根据一定得规则来进行负载均衡,比如:轮询、随机、权重等;
- Server
- 真正提供服务的机器,每个Server启动时,主动与ConfigServer建立Socket长连接,并将自己的ip,提供的服务名称,端口等信息直接发送给ConfigServer,ConfigServer会收集到每个Server提供的服务信息;
优点:
1,只要在Client和Server启动的时候,ConfigServer是好的,服务就可调用了,如果后面 ConfigServer挂了,那只影响ConfigServer挂了以后服务提供者有变化,而Client还无法感知这一变化。
2,Client每次调用服务是不经过ConfigServer的,Client只是与它建立联系,从它那里获取提供服务者列表而已
3,调用服务-负载均衡:Client调用服务时,可以根据规则在多个服务提供者之间轮流调用服务。
4,服务提供者-容灾:某一个Server挂了,Client依然是可以正确的调用服务的,当前提是这个服务有至少2个服务提供者,Client能很快的感知到服务提供者的变化,并作出相应反应。
5,服务提供者-扩展:添加一个服务提供者很容易,而且Client会很快的感知到它的存在并使用它。