一、什么是dubbo
dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架, 使得应用可通过高性能的RPC实现服务的输出和输入功能, 可以和Spring框架无缝集成.
二、为什么要用dubbo
随着互联网的发展, 网站应用的规模不断扩大, 常规的垂直应用架构已无法应对, 分布式服务架构以及流动计算架构势在必行, 需一个治理系统确保架构有条不紊的演进;
单一应用架构
当网站流量很小时, 只需一个应用, 将所有功能都部署在一起, 以减少部署节点和成本. 此时, 用于简化增删改查工作量的数据访问框架(ORM)是关键;
垂直应用架构
当访问量逐渐增大, 单一应用增加机器带来的加速度越来越小, 将应用拆成互不相干的几个应用, 已提升效率. 此时, 用于加速前端页面开发的Web框架(MVC)是关键;
分布式服务架构
当垂直应用越来越多, 应用之间交互不可避免, 将核心业务抽取出来, 作为独立的服务, 逐渐形成稳定的服务中心, 使前端应用能更快速的响应多变的市场需求. 此时, 用于提高业务复用及整合的分布式服务框架(RPC)是关键;
流动计算架构
当服务越来越多, 容量的评估, 小服务资源的浪费等问题逐渐显现, 此时需要增加一个调度中心基于访问压力实时管理集群容量, 提高集群使用率. 此时, 用于提高机器使用率的资源调度中心和治理中心(SOA)是关键;
三、dubbo工作原理
节点角色说明:
调用关系说明:
0.服务容器负责启动, 加载, 运行服务提供者;
1.服务提供者在启动时, 向注册中心注册自己提供的服务;
2.服务消费者在启动时, 向注册中心订阅自己所需的服务;
3.注册中心返回服务提供者地址列表给消费者, 如果有变更, 注册中心将基于长连接推送变更消息给消费者;
4.服务消费者, 从提供者地址列表中, 基于软负载均衡算法, 选一台提供者进行调用, 如果调用失败, 再选另一台调用;
5.服务消费者和提供者, 在内存中累计调用次数和调用时间, 定时每分钟发送一次统计数据到监控中心;
四、dubbo使用方法
dubbo官网 http://dubbo.apache.org/zh-cn/index.html , 里面有一些文档及资源;
1.打开 https://github.com/apache/incubator-dubbo/releases , 下载dubbo2.6.0版本进行下载(此处使用2.6.0版本进行示例)
2.解压后, 找到dubbo-demo, 导入至eclipse;
3.导入后如下所示, 从名字可以看出:
dubbo-demo-api属于接口, 内部也只有一个接口类;
dubbo-demo-provider属于服务提供者, 也就是被调用方;
dubbo-demo-consumer属于服务调用者, 也就是调用方;
4.下载zookeeper, 用作注册中心, 进入bin目录执行zkServer.cmd即可(我这里使用zookeeper版本为3.3.6);
5.调整服务提供者与服务消费者zookeeper注册中心地址;
服务提供者:
服务消费者:
6.分别启动服务提供者(Provider.java)与消费者(Consumer)即可;
7.dubbo还提供一个管理控制台, 是一个war包, 也可以进入dubbo-admin自行打包, 这里我将war包分享出来, 链接:https://pan.baidu.com/s/1nLl2RbLMK2f_Pg90mE4h1w 提取码:fqbq
8.将war包解压到tomcat的ROOT目录中(需提前将ROOT中的文件清除), 然后启动tomcat;
9.浏览器中输入地址打开, 弹出登录窗口, 用户名密码都为root, 进入控制台后, 我们可以清晰的看到服务统计数量, 并且可以查看各个服务的状态;