SpringBoot-Dubbo⼊门教程
SpringBoot框架和SSM框架Dubbo⼊门教程
在学习之前我们需要,安装Zookeeper,和Dubbo管理控制台,这⽅⾯我博客⾥有教程⾃⾏查
介绍
当服务越来越多时,容量的评估,⼩服务资源的浪费等问题逐渐显现,此时需要增加⼀个调度中⼼基于访问压⼒实时管理集容量,提供集利⽤率。其中,⽤于提⾼机器利⽤率的资源调度和治理中⼼是关键。
Dubbo 是阿⾥巴巴开源项⽬的⼀个分布式服务框架。其致⼒于提供⾼性能和透明化的 RPC 远程调⽤⽅案,以及 SOA 服务治理⽅案。
原理图
调⽤关系说明:
1. 服务容器启动、加载和运⾏服务提供者;
2. 服务提供者在启动时,向注册中⼼注册⾃⼰提供的服务;
3. 服务消费者在启动时,向注册中⼼订阅⾃⼰所需的服务;
4. 注册中⼼返回服务提供者地址列表给消费者,如果有变更,注册中⼼将基于长连接推送变更给消费者;
5. 服务消费者从地址列表中,基于软负载均衡算法选⼀台服务提供者进⾏调⽤,如果调⽤失败再选另⼀台;
6. 服务消费者和服务提供者在内存中累计调⽤次数和调⽤时间,定时每分钟发送⼀次统计数据到监控中⼼。
节点⾓⾊说明
节点⾓⾊说明
Container服务运⾏容器
节点⾓⾊说明
Provider暴露服务的服务提供者
Consumer调⽤远程服务的服务消费者
Registry服务注册与发现的注册中⼼
Monitor统计服务的调⽤此处和调⽤时间的监控中⼼
Dubbo 采⽤全 Spring 配置⽅式,透明化接⼊应⽤,对应⽤没有任何 API ⼊侵,只需⽤ Spring 加载 Dubbo 配置即可。官⽅推荐使⽤ Zookeeper 作为注册中⼼,因此本次测试使⽤ Zookeeper,具体相关教程,在本⼈博客⾥都能到
搭建服务提供者
创建⼀个普通的Maven项⽬ 项⽬名称 dubbo-provider-springboot
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.4.RELEASE</version>
</parent>
<dependencies>
<!-- 开发 web 项⽬必须添加的-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- dubbo starter 这⾥已经集成了zookeeper的客户端jar -->
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>
<!--fastjson json解析-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.51</version>
</dependency>
</dependencies>
<!-- ⾃动查主类⽤于打包 -->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
server:
port:8062#Tomcat端⼝号
dubbo:
application:
name: dubbo-provider-springboot #当前应⽤名称,⽤于注册中⼼计算应⽤间依赖关系,注意:消费者和提供者应⽤名不要⼀样registry:
address: 49.232.169.170:2181# 换成⾃⼰的zookeeperip
protocol: zookeeper #使⽤的什么注册中⼼
check:false#检测 zookeeper 是否可⽤在开发阶段建议关掉 false
timeout:3000
protocol:# 协议和port 端⼝默认是20880 端⼝号别和其他服务重复
name: dubbo
port:30003
springboot框架的作用monitor:
protocol: register
服务搭建
User1Service
package;
/**
* 该地⽅只定义接⼝, ⼀般为公⽤接⼝
* 可以定义许多接⼝; 这⾥为了演⽰, 只定义⼀个
*/
public interface User1Service {
String getUserById();
}
User1ServiceImpl
package;
import Service;
import User1Service;
@Service//这⾥是dubbo的注解, 将接⼝暴露在外, 可以供调⽤, 这⾥就是放在了注册中⼼public class User1ServiceImpl implements User1Service {
@Override
public String getUserById(){
return"hello-springboot";
}
}
启动类
package;
import EnableDubbo;
import SpringApplication;
import SpringBootApplication;
// 开启基于注解的dubbo功能
@EnableDubbo
@SpringBootApplication
public class DubboApplication {
public static void main(String[] args){
SpringApplication.run(DubboApplication.class, args);
}
}
启动启动类 查询Dubbo Admin
以上就是Dubbo的服务搭建了
需要注意的是 如果有实体类的话必须继承 Serializable 进⾏序列化 因为是⽹络传输如何使⽤这些服务呢? 我们下⾯将创建消费者 调⽤这些服务
搭建消费者
创建⼀个普通的Maven项⽬ 名称 dubbodemo-consumer-springboot
添加Maven (和服务提供者⼀样)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论