Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可经过高性能的 RPC实现服务的输出和输入功能 ,能够和Spring框架无缝集成。是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的 远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。
上面提到了一个名字RPC,RPC是什么呢?在这里简单的介绍一个概念。 RPC(Remote Procedure Call)—远程过程调用,它是一种经过网络从远程计算机程序上请求服务,而不须要了解底层网络技术的协议。简单点说呢就是好比你在你本身本地能够调用别人在他服务器上部署的服务,至于在哪里部署,你彻底不须要了解。对你来讲是透明的。须要详细了解的能够参照一下url:参考1,参考2。
下面咱们开始dubbo,在咱们使用任何一门技术或者学习一门技术的时候确定有必定的缘由,不可能平白无故,那么咱们为何要使用Dubbo?它能解决咱们什么问题?
首先你们能够想一想在工做中是否有这样的场景?
若是咱们是在作一个很小的资讯类软件,流量很小的时候咱们确定只会是单服务器,一个项目把这个软件的业务所有承包起来。这样是彻底能够知足需求的。可是但咱们的这款产品上线获得好评,有人开始关注了,流量上来的时候,单应用加单服务器的缺点就显示出来了,服务器不能及时响应,前端渲染太慢,这个时候咱们就须要将服务拆分好比先后段分离,添加服务器。熬过这段时间后,哎呀哈,有人融资了,有钱了,项目要作的更加精细话,用户体验,后台处理数据的能力须要更加深一步的提升了,这个时候咱们就须要把以前的项目再进一步的进行拆分,好比用户模块,订单模块等核心模块专门提取出来,造成服务,业务层依靠底层模块进行开发。以后随着访问量愈来愈大,咱们添加了硬件负载均衡F5,可是咱们的单个模块的服务数量会愈来愈多,并且再加上服务器集群,这样url的配置会变的很是麻烦,咱们须要一个服务注册中心,动态的注册和发现服务,使服务的位置透明,并依靠软件实现部分负载均衡的压力,减小硬件压力。可是如今服务太多了,除了架构师可能不多有人能理清楚服务间的依赖关系,再加上系统总体访问量上来的时候咱们须要更加科学的可以统计每一个服务的请求量,评测服务器数量,又或者某些服务的请求量不是很高,是否是能够适量的下降?Dubbo就是用来处理上面的问题的。
咱们看下Dubbo官网的架构图: html
调用关系咱们举个例子来讲:好比如今有订单服务,它就是服务提供者(Provider)。注册中心(Registry)就比如咱们刚上学,咱们都去老师那里报名,老师有咱们全部人的信息。当咱们系统各个服务启动的时候,咱们的订单Provider会去在注册中心register本身,把本身注册成一个对外的服务,这样别人就能够经过老师这个注册中心知道咱们的任何信息了。与此同时消费者(Customer)想要去知道某我的的订单信息的时候就能够经过注册中心subscribe去获取。因此咱们在前端点击用户订单信息的时候,customer由于订阅了对应的订单服务,就能准确调用的找到对应的服务找到对应的信息。前端