double+zookeeper

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

你可能感兴趣的:(生产者和消费者的配置)