1、Dubbo是一个Rpc框架,Rpc也是它很重要的特性,不过他慢慢的也会称为一个微服务框架,所以他慢慢的功能不仅仅包含Rpc还会有一些功能比如说网关、微服务里边的链路跟踪,当然Dubbo最大的特点依旧是Rpc,DubboRpc性能来讲跟SpringCloud相比还是比较高的。
2、Dubbo底层是通过Rpc来完成服务和服务间的调用的,Dubbo支持很多的协议,默认的Dubbo协议,比如http协议,比如rest都是支持的,他们底层使用的技术不太一样,比如dubbo底层协议使用的是netty,也可以使用面,http协议底层使用的事Tomcat或者jetty。
3、服务消费者在调用某个服务时,会将当前所调用的服务接口接口信息,当前方法信息,执行方法所传入的入参等信息组装成一个Invocation对象,然后不同的协议通过不同的数据组织方式和传输方式,将这个对象传送给服务提供者,提供者接收到这个对象之后,找到对应的服务实现,利用反射执行具体对应的方法,得到方法结果后在通过网络响应给服务的消费者。当然Dubbo在调用过程中还有很多其他的设计,包括服务容错,负载均衡,Filter机制,动态路由机制等等,来满足企业使用时的具体的一些需求。
Dubbo的负载均衡策略有:
1、平衡加权轮询算法
2、加权随机算法:
3、一致性哈希算法:
4:最小活跃数算法:
Dubbo当中最经典的就是他的分层架构,我们掌握Dubbo必须了解他的五个角色:
1、注册中心registry
服务注册和发现。注册中心在我们的分布式系统当中呢包括我们的微服务系统当中都是一个非常核心的一个组件,首先要解决的一个概念。我们在分布式或者微服务之间有很多的服务节点,我们服务节点之间需要相互调用的时候,我们一个节点拿到剩下所有节点的服务信息和增加了节点或者有节点宕机之后被其他节点能够知道是必须要解决的,注册中心解决的就是这个问题。dubbo中所有的节点都将自己的地址信息注册到注册中心上边去,我们的服务消费者和服务调用方去调用某个服务的时候就会去注册中心上获取到这个地址。
2、服务提供者provider
暴露服务
3、服务消费者consumer
调用远程服务
4、监控中心monitor
统计服务的调用次数和调用时间。监控中心也是微服务和分布式系统当中非常重要的一个组件,他记录调用的次数,和具体的调用时间,及时发现集群中服务调用超时,或者出故障的节点,及时的进行报告。
5、容器container
服务允许容器。这个容器是在启动的时候加载运行provider服务提供者,服务提供者都是放在服务容器中
1、Container启动的时候负责启动、加载和运行provider。
2、Provider在启动时向registry中心注册自提供的服务,在Dubbo是以接口的维度来提供服务的,暴露一个接口表示暴露了一个新的服务。提供者和注册中心之间维护了一个长链接,注册中心向提供者发送心跳检测,超时则认为服务宕机,注册中心将服务在自己列表中进行删除。
3、consumer在启动的时候,向Registry中心订阅自己的服务。。
4、registry返回提供者列表给消费者,如果有变更,registry将基于长连接推送变更数据给到consumer,Consumer也和注册中心维护了一个长链接,当服务提供者列表有变化的时候,注册中心也会将最新的服务列表发送给消费者。
5、consumer调用provider服务,基于负载均衡算法将请求路由到具体提供者上执行请求,并返回结果给consumer
6、consumer调用provider的统计,基于短连接每分钟一次统计到monitor当中。



