1.Dubbo是什么?
Dubbo是一个服务框架,为了便于理解,举一个例子:
有一天,多啦A梦要去4s店买车,售车员会给我们提供一些车的类型(包括进口还是国产,奔驰还是宝马,50万还是100万),然后加入我们要买的是:进口宝马100万,然后我们把这个告诉给售车员,售车员在他们的售车系统上按照我们的条件进行筛选,然后给我们一个地方,我们去看车,取车,拿回家用,我们买了,售车员就会在他们的系统上进行登记一次信息,我们什么时候买的,多少价钱车型号等。
dubbo官方给出的框架是
Consumer:调用远程服务的服务消费方。
Registry:服务注册与发现的注册中心。
Monitor:统计服务的调用次调和调用时间的监控中心。
Container:服务运行容器。
所谓SOA也好,分布式服务框架也好,不是服务消费者从中间件(一般都是Zookeeper)上去拿数据,而是服务消费者从中间件上拿到可用的服务生产者的集群地址,再从集群地址中选出一个进行直连。
dubbo适合小数据量大并发的服务调用,以及消费者机器远大于生产者机器数的情况,不适合传输大数据量的服务比如文件、视频等,除非请求量很低。
这是我当时遇到的问题:
1. 为什么不采用配置,把提供者的信息配置到消费者里面?
当服务越来越多时,服务URL配置管理变得非常困难,F5硬件负载均衡器的单点压力也越来越大。
此时需要一个服务注册中心,动态的注册和发现服务,使服务的位置透明。并通过在消费方获取服务提供方地址列表,实现软负载均衡和Failover,降低对F5硬件负载均衡器的依赖,也能减少部分成本。
2. 注册中心的责任到底是什么?
注册中心只是在服务提供者向注册中心提供某一个服务,然后当消费者提供需要某个请求的时候,注册中心在提交了的服务里面查找并返回给消费者,消费者拿到之后和提供者进行调用和业务逻辑的处理,注册中心只是扮演了一个传递的作用,并没有实质性的作用,具体的功能调用是消费者和服务提供者之间的互相作用和配合。
所以dubbo是Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才有dubbo这样的分布式服务框架的需求,并且本质上是个服务调用的东东,说白了就是个远程服务调用的分布式框架。
备注:
F5硬件负载均衡器:是一种采用各种分配算法把网络请求分散到一个服务器集群中的可用服务器上去,通过管理进入的Web数据流量和增加有效的网络带宽,从而使网络访问者获得尽可能最佳的联网体验的硬件设备。
SOA:面向服务的架构,是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。
RPC:(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。