1,前言:

第一次了解dubbo是在15年刚工作的时候在瑞友,项目是给凯撒旅游公司签证部做一个签证系统,项目需要调用一些凯撒的方法,比如权限、部门信息,跟签证相关的一些如签证国家城市、领区啥玩意的,等等,,,由于凯撒提供的是dubbo接口,所以我们项目也就用了dubbo,dubbo官方文档也很详细,我这里只是记录一下项目中如何使用。

工作中遇到的项目之间的调用,没有用到dubbo的,就是以HttpClient直接以http方式传递json。还有公司用WebService(我工作过得公司没用过)。

我以大白话说说自己理解的dubbo吧!传统的项目结构:Controller调用service,service调用dao

使用了dubbo后的项目结构:dao+service组成一个单独的工程,是一个jar包,放到一个或者多个机器上运行,供其他web项目来调用。这样如果项目大的话,可以把每个服务进行拆分,如用户注册服务、账户服务、等等。(我还没见过把服务拆分的这么细的公司,可能自己工作过得公司都不大,其实很多公司没分这么细吧!)项目之间相互调用接口多的话,用dubbo就比用HTTPClient传递json要好了,dubbo提供了可视化的管控台,可以进行服务治理,查看服务的情况,根据服务器情况动态设置负载均衡,,等等。

2,dubbo简介

Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要的,只有在分布式的时候,才有dubbo这样的分布式服务框架的需求,并且本质上是个服务调用的东西。说白了就是个远程服务调用的分布式框架(告别WebService模式中的wsdl,以提供者和消费者的方式在dubbo上注册)

贴几个官网的图:

 

其核心部分包括:

1,远程通讯:提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。

2,集群容错:提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持。

3,自动发现:基于注册中心目录服务,使服务消费方能动态地查找服务提供方,使地址透明,使服务提供方可以平滑增加或减少机器。

3,dubbo用途

Dubbo能做什么?

1,透明化的远程方法调用,就像调用本地方法一样调用远程方法,只需简单配置,没有任何API侵入。

2,软负载均衡及容错机制,可在内网替代F5等硬件负载均衡器,降低成本,减少单点。

3,服务自动注册与发现,不再需要写死服务器提供方的地址,注册中心基于接口名查询服务提供者的IP地址,并且能够平滑添加或删除服务提供者。

4,Dubbo采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载Dubbo的配置即可,Dubbo基于Spring的Schema扩展进行加载。

 

接下来,开始安装软件,打代码。