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环境搭建


  • 相关阅读:
    解决Chrome 70及以上版本的证书问题:Failed to load resource: net::ERR_CERT_SYMANTEC_LEGACY
    VUE使用axios数据请求时报错 TypeError: Cannot set property 'xxxx' of undefined 的解决办法
    生辰八字推算
    OneNote巧妙设置标题
    Kibana安装与介绍
    Logstash入门简介
    Metricbeat入门简介
    FileBeats入门简介
    ElasticSearch集群部署
    ElasticSearch安装与介绍
  • 原文地址:https://www.cnblogs.com/aikaiqiang/p/6826108.html
Copyright © 2011-2022 走看看