Dubbo
1 Dubbo简介
Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才有dubbo这样的分布式服务框架的需求,并且本质上是个服务调用的东东,说白了就是个远程服务调用的分布式框架(告别Web Service模式中的WSdl,以服务者与消费者的方式在dubbo上注册)
2 Dubbo的功能
其功能主要包括:高性能NIO通讯及多协议集成,服务动态寻址与路由,软负载均衡与容错,依赖分析与降级等。
- 透明化的远程方法调用,就像调用本地方法一样调用远程方法,只需简单配置,没有任何API侵入。
- 软负载均衡及容错机制,可在内网替代F5等硬件负载均衡器,降低成本,减少单点。
- 服务自动注册与发现,不再需要写死服务提供方地址,注册中心基于接口名查询服务提供者的IP地址,并且能够平滑添加或删除服务提供者。
Dubbo采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载Dubbo的配置即可,Dubbo基于Spring的Schema扩展进行加载。
3 Dubbo 的特点
Dubbo具有4个特点,分别是连通性、健壮性、伸缩性、以及向未来架构的升级性。
- 连通性说明他们之间都存在着关系,比如说Provider,Consumer和Registry三者之间都是长连接,而Provider,Consumer向Registry注册服务以及订阅服务的时间都得向Monitor汇报。
- 健壮性说明具有稳定性,比如说注册中心对等集群中的任意一台宕掉后,将自动切换到另一台。就算注册中心全部宕掉,服务者和消费者仍可以通过本地缓存进行通讯。
- 伸缩性就是可以通过增加机器部署实例进行添加新的注册中心和服务提供者。
- 升级性是文档中提到的对未来架构的设想,比起目前框架它的特点是可以实现自动部署服务的本地代理以及可以通过访问压力来自动增减服务提供者。
4 Dubbo架构
参考视频:https://www.bilibili.com/video/BV1Q4411N7JS?p=4
4.1 节点角色说明
4.2 节点间的调用关系
- Container负责启动,加载然后运行Provider。
- Provider在启动时会向注册中心注册自己提供的服务,
- Consumer在启动时会向Registry订阅自己所需服务,
- 此时Registry会返回Provider地址列表给Consumer。如果地址有变更,Registry会基于长连接推送变更数据给Consumer。
- Consumer会基于软负载均衡算法选一台提供者进行调用,如果调用失败,则再选一台。
- Provider和Consumer在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到Monitor。
补充:
① 负载均衡算法
这个概念其实是对流量通过一定的手段进行重新分配,避免单一机器直接被较为集中的流量击穿,或者避免部分机器由于没有合理分配流量导致过于空闲。
负载均衡算法有4种:
- 基于权重随机算法
- 基于一致性哈希算法
- 基于随机算法
- 基于加权轮训算法
参考链接:https://blog.csdn.net/wueryan/article/details/91129212
来源:oschina
链接:https://my.oschina.net/u/4419899/blog/4550878