zoukankan      html  css  js  c++  java
  • 【Dubbo学习】

    dubbo的介绍

    dubbo是一个分布式的开源框架,其核心部分如下:
    1、服务提供者:provider
    2、服务消费者:consumer
    3、注册中心:registry (仅仅只是负责通知)
    服务者在注册中心中注册服务,在注册中心中进行管理,消费者通过注册中心去获取服务的地址,实现直接连接。
    
    注册中心主要分为zookeeper、multicast、redis、simple四种。推荐使用zookeeper。
    zookeeper:是一个树型的目录服务,支持变更推送,适合作为Dubbo服务的注册中心,工业强度较高,可用于生产环境
    multicast:不能跨网络,使用范围比较小。
    redis:是一个高效的KV存储服务器,服务时间需要同步。
    simple:	只是简单实现,不支持集群,可作为自定义注册中心的参考,但不适合直接用于生产环境。
    

    自己搭建简易的zookeeper

    1、下载zookeeper的jar包
    2、把zoo-sample.cfg重命名为zoo.cfg
    3、在tomcat中web文件内配置dubbo-admin(端口50001)、dubbo-moniter(端口50002)插件来实现zookeeper的可视化
    4、在dubbo-admin文件夹中的dubbo.properties配置注册地址、管理账号及密码等
    5、因为dubbo会使用到8080端口,所以需要修改tomcat的端口号
    6、最后启动zookeeper ,再启动tomcat即可
    

    zookeeper的xml实现和api实现

    1、xml的实现
    	a、注册中心
    	<dubbo:registry address="" id="" />
    	
    	b、配置应用名
    	<dubbo:application name=" "/>  		
    
    	c、协议
    	<dubbo:protocol nama="协议名称" address=""  port="20880" />
    	协议分为 dubbo(NIO单一长连接)、KMI(基于TCP)、Hessian(基于http) ,一般使用dubbo作为协议。
    	
    
    	d、服务端 
    	<dubbo:provided registry=""  id=""/> 			(全局)
    	<dubbo:service ref="" interface ="" />      		 (接口)
    	<dubbo:service method=""/>	     			 (方法)
    
    	e、客户端
    	<dubbo:reference interface=""/>
    
    2、api的实现
    	a、提供者: ApplicaitonConfig ac = new ApplicaitonConfig()
    		  ac.setName("");等 设置一些属性
    	b、连接注册中心的配置: RegistryConfig
    	c、服务端提供者:ProtocolConfig
    	d、服务提供者暴露服务:ServiceConfig sc 
    					sc.export();
    	f、消费者:RefireeConfig rf
    			rf.get();
    

    dubbo的超时、重连机制

    超时:一般在服务端上配置timeout属性,指定超时时间,若超时时间一过,服务端没有返回则认为本次调用失败则会触犯重连机制。
    重连机制:一般默认发生2次重连。重试机制在出现调用失败时,会再次调用。如果在配置的调用次数内都失败,则认为此次请求异常,抛出异常。
    
    相关属性:timeout:设置超时时间、retries:设置重连次数
    重连机制类型:根据不同业务选择
    	retries:失败后直接重试	(在查询时使用,同时发出三次消息请求,采用最快的那一次请求)
    	failfast:快速失败,有一次失败就直接显示失败,不会发生重连 (在插入时使用)
    	failback:重连置于队列中,过一段时间后再重新使用(在消息队列中使用较多)
    
    retries的优化:
    	1、使用幂等,在提交的时候设置事务锁,限制其在一个时间段内只能有一个使用,多用于并发的情况
    	2、在数据库中使用唯一键,操作较为简单,但会影响数据库效率。
    
    优先级:方法 > 接口 > 全局
    

    问题总结:

    1、dubbo协议的长连接和短链接区别
    长连接是指连接成功后不会断开的链接;短连接是指连接成功后发送完数据后会断开连接。
    
    2、port端口的作用
    类似于程序方法的入口,在dubbo中只有服务端才有端口,客服端是不需要配置端口,而且端口为20880.
    
    3、四种注册中心的区别优势:
    zookeeper:	是一个树型的目录服务,支持变更推送,适合作为Dubbo服务的注册中心,工业强度较高,可用于生产环境
    multicast	不能跨网络,使用范围比较小。
    redis:		是一个高效的KV存储服务器,服务时间需要同步。
    simple:		只是简单实现,不支持集群,可作为自定义注册中心的参考,但不适合直接用于生产环境。
    
    4、为什么不是用api的方式实现zookeeper
    因为我们在开发的时候,会分为开发环境和测试环境,如果使用api方式来实现的话需要编写两套api,而xml的配置会方便很多。
    
    5、为什么客户端调用的时候不需要具体的实现类,而只要注入接口就可以使用呢?
    客户端调用的时候实际会根据接口生成一个spring bean实例,作为代理处理Dubbo请求,
    然后其他要调用处直接使用spring bean的方式使用这个实例即可
    
    
    6、超时的配置原因
    防止程序的假死状态,避免撑爆dubbo
    
    7、timeout属性指的是什么
    zookeeper只相当于一个通知的中介,在客户端来访问的时候,负责给予相应的服务端地址,在服务端地址发生改变的时候,负责通知客户端。
    服务端和客户端在里面其实是直连的,故需要一定的连接相应时间,这个时间值的最大超时时间就是timeout属性。
    

    学习参考链接

    Dubbo官网
    Dubbo与Zookeeper、SpringMVC整合使用
    Dubbo注册中心
    dubbo+zookeeper+dubboadmin环境搭建


  • 相关阅读:
    【面积并】 Atlantis
    【动态前k大 贪心】 Gone Fishing
    【复杂枚举】 library
    【双端队列bfs 网格图建图】拯救大兵瑞恩
    【奇偶传递关系 边带权】 奇偶游戏
    【权值并查集】 supermarket
    CF w4d3 A. Pythagorean Theorem II
    CF w4d2 C. Purification
    CF w4d2 B. Road Construction
    CF w4d2 A. Cakeminator
  • 原文地址:https://www.cnblogs.com/aikaiqiang/p/6826108.html
Copyright © 2011-2022 走看看