前世今生
以前的以前,网站规模很小,简单,我们只需要一个应用,将所有的功能集成在一起,以减少部署节点和成本,这时单一应用架构。
之后,网站规模扩大,单一架构不支撑这样的规模,于是将一个大的应用拆分成互不相干的几个应用,提高效率。这时垂直应用架构(MVC应用而生)。
再之后,垂直应用越来越多,应用之间交互不可避免。于是,分布式服务框架(RPC)应运而生。
是什么
Dubbo:开源分布式服务框架,是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的RPC(远程过程调用)实现服务的输出和输入功能,可以和Spring框架无缝集成。
组成
1.Remoting:网络通信框架,实现了sync-over-async和request-response消息机制。
2.RPC:一个远程过程调用的抽象,支持负载均衡、容灾和集群功能。
3.Registry:服务目录框架用于服务的注册和服务事件发布和订阅。
Dubbo与HSF
Dubbo和HSF都是阿里巴巴开发的分布式服务框架,只不过2012年阿里巴巴对于dubbo就停止更新了,现在阿里巴巴内部使用的是HSF(俗称“好舒服”),不过不开源。HSF比dubbo性能要好很多。
dubbo独特优点
1.连通性。
2.健壮性。
3.伸缩性。
4.升级型。
架构介绍
由上图可知,dubbo具有五大节点。
provider:暴露服务的服务提供方。
consumer:调用远程服务的服务消费方。
registry:服务注册和发现的注册中心。
monitor:统计服务调用次数和调用事件。
container:服务运行容器。
五大节点的运行交互如下:
1.服务容器负责启动,加载,运行服务提供者。
2.服务提供者在启动时,向注册中心注册自己提供的服务。
3.服务消费者启动时,向注册中心订阅自己所需要的服务。
4.注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
5.服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
6.服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。