dubbo是什么
:Dubbo是阿里巴巴开源的基于 Java 的高性能 RPC 分布式服务框架,现已成为 Apache 基金会孵化项目。
##项目搭建
底层基础我们需要创建3个项目为了方便我们就以学生信息+输出elloword(证明我是个程序员)
1.student-common(公共):一般放置pojo\service(服务接口)\util(公共工具)
2.student-provider(提供者):service(实现)\mapper
3.student-consumer(消费者):controller\service(调用provider)
-----------------------------华丽的分割线--------------开始跑服务------------------------------------
zookeeper下载地址
http://archive.apache.org/dist/zookeeper/
解压进入》conf》zoo_sample修改为zoo》打开修改(创建目录)>>bin目录下点击zkService.cmd
dataDir=D:\java\SpringBoot\apache-zookeeper-3.5.5\data
dubbo-admin
生成教程
运行zk+dubbo后访问
http://localhost:8080/dubbo/ 账户密码都是root
为了捋顺逻辑我们先来张优雅的图片捋一下别乱了
将服务端注册(zk)到dubbo后
前端访问controller>controller业务逻service> @Reference调用provider服务实现
mysql
CREATE DATABASE school;
CREATE TABLE `student` (
id INT PRIMARY KEY KEY AUTO_INCREMENT,
`name` VARCHAR(10) ,
age INT ,
`class` VARCHAR(10)
);
INSERT INTO student VALUES(1,'张三',15,'三年一班')
INSERT INTO student VALUES(2,'王五',15,'三年二班')
-----------------华丽的分割线--------------开始写代码了-----------------
一.创建maven项目common项目包
1.创建pojo>创建Student.class
2.创建service>创建StudentService接口
3.使用maven install打包依赖
二.创建springboot项目provider
1.导入common依赖包,springbootStarterWeb(自带),zkClient,dubbo,mysql,mybatis依赖
分布式我们使用dubbo spring boot starter
https://mvnrepository.com/artifact/com.alibaba.boot/dubbo-spring-boot-starter
2.修改application文件名.yml 对tomcat dubbo mybayis设置
3.resources创建mapper.xml(与mapper接口对应)
4.src创建mapper.java接口使用@Mapper
5创建service>StudentServicelmpl实现类>使用dubbo @Service注解
6.启动类添加EnableDubboConfiguration
7.启动运行项目
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>cn.demo</groupId>
<artifactId>student-common</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba.spring.boot/dubbo-spring-boot-starter -->
<dependency>
<groupId>com.alibaba.spring.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.101tec/zkclient -->
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.10</version>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
</dependencies>
#tomcat 端口号
server:
port: 7001
spring:
application:
name: student-provider
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/school?useUnicode=true&characterEncoding=utf-8
username: root
password: 111
#dubbo设置
dubbo:
port: 20800
appname: dubbo-student-provider #控制台显示的名字
registry: zookeeper://127.0.0.1:2181
protocol: dubbo
#配置mapper路径
mybatis:
mapper-locations: classpath:mapper/**.xml
@Mapper
public interface StudentMapper {
List<Student> selectById(@Param("id") int id);
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.demo.mapper.StudentMapper">
<select id="selectById" resultType="cn.demo.pojo.Student">
select * from student
<trim prefix="where" prefixOverrides="and | or">
<if test="id != null">
and id=#{id}
</if>
</trim>
</select>
</mapper>
@SpringBootApplication
@EnableDubboConfiguration //启动类添加dubbo注解
public class StudentProviderApplication {
-----------------华丽的分割线--------------开始写代码了-----------------
1.复制provider的pom依赖 除去数据链接
2.复制provider的yml进行修改
3.编写service>StudentServicelmpl>调用dubbo@Reference注解
4.编写controllrt>调用本包service
5.启动类添加dubbo注解
6.dubboadmin查看注册服务是否为正常
server:
port: 8001
spring:
dubbo:
appname: Student-consumer
registry: zookeeper://localhost:2181
protocol: dubbo
port: 20802
application:
name: Student-consumer
@RestController
public class StudentControllrt {
@Autowired
private StudentService studentService;
@RequestMapping(value = "hi",method = RequestMethod.GET)
private String sayHi(@RequestParam("id") Integer id){
return studentService.sayHi(id);
}
}
@SpringBootApplication
@EnableDubboConfiguration
public class StudentConsumerApplication {