1. dubbo框架是什么
分布式框架,解决大量访问请求
是alibaba旗下的产品,后来交给apache基金会维护管理
dubbo核心底层技术实现用的是Hessian,相比WebService,Hessian 更简单、快捷。采用的是二进制RPC协议,因为采用的是二进制协议,所以它很适合于发送二进制数据。
dubbox是基于注解方式发布接口
dubbo核心部件:
provider:生产者, 暴露服务的提供方,可以通过jar或者容器的方式启动服务
consumer:消费者,调用远程服务的服务消费方。
registry: 注册中心,服务注册中心和发现中心
Monitor: 统计服务和调用次数,调用时间监控中心。(dubbo的控制台页面中可以显示,目前只有一个简单版本)
Container:服务运行的容器。
dubbo loadbalance检测机制:
roundrobin轮询机制
random #随机机制
leastactive #最少活跃调用数机制
负载均衡机制:保证每台机器请求量一致,平衡每台机器的访问量
springboot 整合dubbo+zookeeper
创建生产者项目,选择Web MySql Mybatis
创建消费者项目,选择Web Thymeleaf
生产者和消费者,实体类对象要一致、service接口要一致、除了上面指定jar包不一致,其他jar包要一致
生产者和消费者项目中实体类对象必须实现序列化接口:implements Serializable
1.导入pom jar包
com.alibaba.spring.boot
dubbo-spring-boot-starter
2.0.0
com.101tec
zkclient
0.10
配置dubbo服务端生产者
在application.properties中配置
#配置dubbo服务提供者
#服务名称
spring.dubbo.application.name=provider
spring.dubbo.server=true
#注册中心地址
spring.dubbo.registry.address=zookeeper://127.0.0.1:2181
#dubbo 协议
spring.dubbo.protocol.name=dubbo
spring.dubbo.protocol.port=20880
配置本地zookeeper
在zookeeper/conf/zoo.cfg中配置数据目录和日志目录位置,注意目录需要手动创 建
#数据位置
dataDir=D:\\zookeeper-3.3.6\\data
#日志位置
dataLogDir=D:\\zookeeper-3.3.6\\logs
本地启动zookeeper:在zookeeper/bin目录下文件地址栏中输入cmd,执行zkServer回车即可启动zookeeper
在service实现类上加上dubbo提供的Service注解
//通过dubbo提供的Service注解将接口发布出去
@Service(interfaceClass = UserService.class)
@Component spring注入需要用到
6.在application启动类中加上开启dubbo配置注解@EnableDubboConfiguration
消费者:
1.导入pom jar包
com.alibaba.spring.boot
dubbo-spring-boot-starter
2.0.0
com.101tec
zkclient
0.10
2.配置dubbo消费者
#为防止和生产者端口号冲突
server.port=8081
#配置dubbo消费者
spring.dubbo.application.name=consumer
#配置注册中心
spring.dubbo.registry.address=zookeeper://127.0.0.1:2181
#dubbo协议
spring.dubbo.procotol.name=dubbo
spring.dubbo.procotol.port=20880
#消费者启动检测生产者是否已启动,当值为true时才会检测,默认为true
spring.dubbo.consumer.check=false
#roundrobin轮询机制
#random #随机机制
#leastactive #最少活跃调用数机制
spring.dubbo.reference.loadbalance=roundrobin
3.在controller中通过dubbo提供的Reference注解引用接口
@Reference
private UserService userService;
在application启动类中加上开启dubbo配置注解@EnableDubboConfiguration
application.properties所需配置:
修改端口号以免被占用:server.port=端口号
数据库连接:ee
spring.datasource.url=jdbc:mysql://localhost:3306/ssh2_maven?useUnicode=true&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
#配置dubbo服务端生产者
#在application.properties中配置
#配置dubbo服务提供者
#服务名称
spring.dubbo.application.name=provider
spring.dubbo.server=true
#注册中心地址
spring.dubbo.registry.address=zookeeper://127.0.0.1:2181
#dubbo 协议
spring.dubbo.protocol.name=dubbo
spring.dubbo.protocol.port=20880
时间处理
#指定Date时间类型输出格式为yyyy-MM-dd HH:mm:ss;
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
#指定时区,解决8小时的时间差问题
spring.jackson.time-zone=GMT+8
消费者(consumer) 包结构:controller,model,service(只有接口)
StringbootConsumerApplication中需要继承:extends WebMvcConfigurationSupport
重写:
//这里配置静态资源文件的路径
@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/static/**").addResourceLocations(ResourceUtils.CLASSPATH_URL_PREFIX + “/static/”);
super.addResourceHandlers(registry);
}
在static里把css样式 js…引入进去
在templates写静态页面(html)
application.properties中配置:
#为防止和生产者端口号冲突
server.port=8081
#配置dubbo消费者
spring.dubbo.application.name=consumer
#配置注册中心
spring.dubbo.registry.address=zookeeper://127.0.0.1:2181
#dubbo协议
spring.dubbo.procotol.name=dubbo
spring.dubbo.procotol.port=20880
#消费者启动检测生产者是否已启动,当值为true时才会检测,默认为true
spring.dubbo.consumer.check=false
#roundrobin轮询机制
#random #随机机制
#leastactive #最少活跃调用数机制
spring.dubbo.reference.loadbalance=roundrobin
#thymeleaf配置
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.mode=HTML5
spring.thymeleaf.encoding=UTF-8
spring.thymeleaf.servlet.content-type=text/html
spring.thymeleaf.cache=false
#指定Date时间类型输出格式为yyyy-MM-dd HH:mm:ss;
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
#指定时区,解决8小时的时间差问题
spring.jackson.time-zone=GMT+8