Dubbox 简介
https://mp.csdn.net/mdeditor/85122973#
分布式服务框架Dubbox的由来
单一应用架构
当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。
垂直应用架构
当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率。
分布式服务架构
当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。
流动计算架构
当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。
对比传统架构。
1.最为明显的一点,在传统的架构中,如果某个功能需要进行维护,那么我们必须停掉整个服务,这对于公司的运营会造成损失。分布式系统在核心功能模块使用单独服务器,维护部分模块不影响用户的其他操作。
2.在海量数据处理方面,传统架构显得比较乏力;分布式系统架构采用服务器集群,使用负载均衡,海量数据处理游刃有余!
3.在性能(检索)以及维护方面,分布式系统架构也有较为明显的优势。
在电商发展的初期.一个简单的后台管理等页面还有功能的实现,日常访问量少,用户的需求简单,实现的功能简单,单一的MVC系统架构就可以满足其要求了.
但随着电商项目的日益壮大发展,日常访问增加,用户的需求复杂,实现的功能变难.单一的MVC系统架构就会使得在开发过程中,占用的资源越来越多,而且随着流量的增加使得维护起来越来越难以维护。于是就产生了垂直应用架构。
垂直应用架构解决了单一应用架构所面临的扩容问题,使得流量可以分散到各个子系统当中,而且系统的体积是可控的.
但是垂直架构中相同的逻辑代码是不能复用的,需要不断的复制,无法对已有的服务拆分,改一个地方,其它地方会有影响
补充: 单一应用架构就是垂直应用架构.垂直应用架构就是从接到请求开始一直是垂直调用到数据库,中间没拐过弯的。
所以就有了 分布式应用架构
用来对服务提供、服务调用、连接处理、通信协议、序列化方式、服务发现、服务路由、日志输出等行为进行封装的服务框架。
单一应用架构就是一个厨师.垂直应用架构就是给厨师配了些切菜打下手的.都是客户和厨师直接调用.没有其他中间者.客户只能来店里调取厨师能炒的菜.想吃别的就只能自己去别家.
而分布式就是加入外卖员.客户只用告诉外卖员要什么.外卖员去找拿相应的菜,就可以达到远端调用了.
为什么要使用dubbox
Dubbox 致力于提供高性能和透明化的 RPC 远程服务调用方案,本质上是个服务调用的东西,说白了就是个远程服务调用的分布式框架。
使用 Dubbo 可以将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,可用于提高业务复用灵活扩展,使前端应用能更快速的响应多变的市场需求。
因为是阿里开源项目,国内很多互联网公司都在用,已经经过很多线上考验。内部使用了 Netty、Zookeeper,保证了高性能高可用性。
简单点说,因为现实很多互联网公司都用的是它,而且经过了很多线上的考虑
Duboo常见面试题
Dubbo 和 Spring Cloud 有什么区别?
1.通信方式不同
Dubbo 使用的是 RPC 通信,而 Spring Cloud 使用的是 HTTP RESTFul 方式。
2.组成部分不同
dubbo推荐用哪种协议?
dubbo://(推荐)
Dubbo推荐默认的注册中心是?
推荐使用 Zookeeper 作为注册中心
在使用过程中都遇到了些什么问题?
Dubbo 的设计目的是为了满足高并发小数据量的 rpc 调用,在大数据量下的性能表现并不好,建议使用 rmi 或 http 协议。
Dubbo必须依赖的包有哪些?
Dubbo 必须依赖 JDK,其他为可选。
说一下dubbox的使用方法。
Dubbox是一个分布式服务框架,提供了统一的高性能的远程服务调用平台。所有的业务逻辑都使用dubbox发布供表现层工程调用。发布dubbox服务需要使用spring容器的支持来发布服务,调用服务同样使用spring容器来应用服务。其中服务的发布和服务的发现都是通过注册中心来实现,我们使用zookeeper作为注册中心。
服务提供者能实现失效踢出是什么原理?
服务失效踢出基于 Zookeeper 的临时节点原理。
如何解决服务调用链过长的问题?
Dubbo 可以使用 Pinpoint 和 Apache Skywalking(Incubator) 实现分布式服务追踪,当然还有其他很多方案。