内容简介
此篇文章是介绍Dubbo以及它的简单使用,会列举运用spring boot + dubbo搭建项目运用dubbo的步骤,主要是介绍一下dubbo的作用以及简单的配置,若有兴趣的朋友可以继续关注后续的dubbo系列文章,也可以参考官方文档进行学习.个人的一点心得和想法,有错误还请指正。
Dubbo介绍
1.什么是Dubbo
一个分布式服务治理框架
2.为什么用Dubbo
- 官方介绍
当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。 此时,用于提高业务复用及整合的分布式服务框架(RPC)是关键。
- 自我心得
小项目中dubbo作用不明显,因为项目中的Api都是通过直接依赖调用,当项目庞大比并且服务需要多次重复性的调用时,就需要一个框架来治理,dubbo可以做到的效果就是通多xml文件配置,达到一次提供,到处调用的效果,并且和可以对服务的提供者和消费者进行管理;就是将提供服务的Api打包到服务器,同时注册到注册中心(zookeeper),需要调用此服务的只需依赖服务器上的jar包,配置消费者服务即可调用Api。
3.基本概念
- 节点角色说明
- provider 服务的提供方 - consumer 服用的消费方 - registry 注册中心(可以对提供方和消费方统一管理) - monitor 统计中心 - container 运行容器
调用关系说明:
- 服务容器负责启动,加载,运行服务提供者。
- 服务提供者在启动时,向注册中心注册自己提供的服务。
- 服务消费者在启动时,向注册中心订阅自己所需的服务。
- 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
- 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
- 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。
dubbo-provider搭建(Simple)
1.准备工作
为了更加直观的体现dubbo的作用,在此我会搭建一个简单的maven项目,通过项目的搭建流程和dubbo的相关简单配置,介绍dubbo的使用,所以,需要做好以下最基本的准备工作:
- JDK(1.8)
- 开发工具(IDEA)
- maven(3.3.9)
- zookepper(注册中心)
2.项目结构
为了后续代码更好的演示,将两个项目建立在一个工作空间下(IDEA),创建简单的接口和实现类,简单的测试方法,基本结构为:
- 接口基本实现为:
public interface ISimpleService { public String sayHello(String name); } @Service public class SimpleServiceImpl implements ISimpleService { public String sayHello(String name) { return "Hello" + name; } }
3.spring boot配置
配置项目的pom文件,搭建spring boot运行环境,这里给出一个基本的模板,其中包含mysql的依赖,以及使用基本dubbo的依赖,还有注册中心zookeeper的相关依赖,可以根据实际情况修改:
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.2.8.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <artifactId>logback-classic</artifactId> <groupId>ch.qos.logback</groupId> </exclusion> <exclusion> <artifactId>log4j-over-slf4j</artifactId> <groupId>org.slf4j</groupId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId>