1.分布式服务架构关键在于:用于提高业务复用及整合的 分布式服务框架(RPC) 是关键。
注册中心是关键,提供业务复用和整合。

2、dubbo在消费方,获取服务列表后提供软负载均衡。dubbo在消费方提供软负载均衡。
消费方在调用的时候,dubbo提供了软负载均衡。

3.dubbo监控中心:监控中心负责统计各服务调用次数,调用时间等,统计先在内存汇总后每分钟一次发送到监控中心服务器,并以报表展示.
服务消费者向注册中心获取服务提供者地址列表,并根据负载算法直接调用提供者,同时汇报调用时间到监控中心,此时间包含网络开销.

4.怎么证明消费者和提供者只在启动的时候与zookeeper交互一次,且只一次?
答:注册中心宕机了并不影响消费者和提供者的运行,即使zookeeper服务器宕机了,消费者和提供者依然正常运行。
因为消费者在启动的时候从zookeeper获取了服务提供者列表。
注册中心和监控中心全部宕机,不影响已运行的提供者和消费者,消费者在本地缓存了提供者列表。

注册中心宕掉后,但不能注册新服务。不能再注册新服务了,旧的服务不影响运行。

5.注册中心也不能单点部署,要集群部署。防止单台宕机。叫注册中心对等集群。

5.dubbo配置时,注册中心是可选的,消费者可以和服务者直连。直接调用。

6.服务提供者的bean的方法,都是无状态的,所以即使一台service宕机后,不影响状态。

7.zookeeper有消息推送通知功能,当动态增加服务时候,消费者可以动态被通知,就可以调用。
服务提供者无状态,可动态增加机器部署实例,注册中心将推送新的服务提供者信息给消费者。

8.注意:服务提供者通过dubbo向zookeeper暴露服务时,向外面暴露的bean,必须首先自己bean依赖注入已经完毕,因为dubbo service标签有个必填的ref属性,指向本地ioc种

已经存在的bean。已经bean注入到ioc容器里了。
而且这时候最好手动注入,如下面方式:
<bean id=“xxxService” class=“com.xxx.XxxServiceImpl”/> <!-- 和本地服务一样实现远程服务 -->
<dubbo:service interface=“com.xxx.XxxService” ref=“xxxService” /> <!-- 增加暴露远程服务配置 -->

9.服务提供者是通过dubbo暴露服务的,通过dubbo向zookeeper。zookeeper只起到中介作用,会传输很多东西,包括服务提供者的ip地址,bean描述,方法描述等。

10.dubbo service标签,向zookeeper暴露服务。

11.服务消费方,注意,是与服务提供者沟通的,商量好消费方所写的,dubbo:reference标签,其中的id名字就是bean名字,提供者的bean名字,interface依旧是类全名。
<dubbo:reference id=“xxxService” interface=“com.xxx.XxxService” /> <!-- 增加引用远程服务配置 -->
dubbo service标签有interface属性,其值是整个接口名,类路径全名。ref属性,指向ioc容器中已经存在的bean。
<dubbo:service interface=“com.xxx.XxxService” ref=“xxxService” /> <!-- 增加暴露远程服务配置 -->

12.dubbo是没有单独配置文件的,dubbo的配置全在spring的配置文件里。不论是提供方还是消费方,dubbo都是没有配置文件的,都是在spring里。
dubbo是没有单独的配置文件的。dubbo是没有配置文件的。不论是提供方还是消费方,dubbo都是没有配置文件的,都是在spring里。
13.dubbo的配置,主要以下几条:
1)<dubbo:application 没多大意义,只是用来与消费方匹配,消费者必须不能是这个名字,消费者的application名字不能喝提供者一样。
2)<dubbo:registry address
3)<dubbo:protocol
4)<dubbo:service
就四个,就四个配置标签。

14.消费者在spring配置dubbo时候,只需要配置三个标签。
1)<!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->
<dubbo:application name="consumer-of-helloworld-app" />
2)<dubbo:registry
3)<dubbo:reference
只需要三个标签,比提供者配置少了dubbo protocol标签的配置。

15.再次理解服务提供者,服务提供者是对外提供直接调用的,zookeeper不对外提供调用,而是由真正的服务提供提供服务。所以服务提供者必须向外暴露协议和端口。
就如dubbo protocol标签,这个标签的作用就是这个。如下:暴露20880端口,通过dubbo调用。
<!-- 用dubbo协议在20880端口暴露服务 -->
<dubbo:protocol name="dubbo" port="20880" />

16.<dubbo:protocol/> 协议配置问题,用于配置提供服务的协议信息,协议由提供方指定,消费方被动接受。
服务方设置的dubbo protocol,消费方要调用的话,消费方就得被动接受提供方协议。
消费方被动接受。
消费方被动接受服务方提供和设置的协议。

16.选择合适的dubbo调用协议:
Dubbo协议 Stable 采用NIO复用单一长连接,并使用线程池并发处理请求,减少握手和加大并发效率,性能较好(推荐使用) 在大文件传输时,单一连接会成为瓶颈

可用于生产环境 Alibaba
Rmi协议 Stable 可与原生RMI互操作,基于TCP协议 偶尔会连接失败,需重建Stub 可用于生产环境 Alibaba
Hessian协议 Stable 可与原生Hessian互操作,基于HTTP协议 需hessian.jar支持,http短连接的开销大 可用于生产环境

20.<dubbo:method/> 方法配置,用于ServiceConfig和ReferenceConfig指定方法级的配置信息。

21.其中,服务提供方配置,通过URL经由注册中心传递给消费方。
建议由服务提供方设置超时,因为一个方法需要执行多长时间,服务提供方更清楚,如果一个消费方同时引用多个服务,就不需要关心每个服务的超时设置。

dubbo知识点理解的更多相关文章

  1. dubbo知识点理解2

    作者:网易云链接:https://www.zhihu.com/question/45413135/answer/226794957来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注 ...

  2. RPC 框架 Dubbo 从理解到使用(二)

    本篇文章为系列文章,未读第一集的同学请猛戳这里:RPC 框架 Dubbo 从理解到使用(一) 本篇文章讲解 Dubbo 支持的注册中心.Dubbo 负载均衡策略和 Dubbo 控制台的安装. 注册中心 ...

  3. 对于Dubbo的理解

    最近才开始看关于Dubbo,曾经居然把Dubbo跟ActiveMQ联系到了一起,很显然 ,是没有深入理解Dubbo的本质. 其实Dubbo是项目与项目(或者是系统与系统)之间通信用的.在Dubbo没出 ...

  4. RPC 框架 Dubbo 从理解到使用(一)

    技术架构演变 单一应用架构 通俗地讲,"单体应用(monolith application)"就是将应用程序的所有功能都打包成一个独立的单元.当网站流量很小时,只需一个应用,将所有 ...

  5. hibernate知识点理解

    1.只有业务逻辑层出现的问题? 1.切换数据库麻烦 2.sql编写起来麻烦 3.我们的程序员不需要关注数据库,只希望关心业务本身 2.hibernate的好处 1.程序员只关心业务逻辑,使角色更加清楚 ...

  6. odoo订餐系统之订单相关知识点理解

    1.对重载函数name_get的理解 第一,此函数位于Model基类中,返回值是一个list列表,列表中的每个值是如(key,value)形式的键值对,此处为(id,name). 第二,在自己的Mod ...

  7. Hbase框架原理及相关的知识点理解、Hbase访问MapReduce、Hbase访问Java API、Hbase shell及Hbase性能优化总结

    转自:http://blog.csdn.net/zhongwen7710/article/details/39577431 本blog的内容包含: 第一部分:Hbase框架原理理解 第二部分:Hbas ...

  8. Dubbo简单理解

    Dubbo 致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案.简单的说,Dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才有Dubbo这样 ...

  9. dubbo学习(十一)dubbo知识点总结

    一.基础概念 Dubbo是个啥? 定义:Dubbo是阿里巴巴开源的基于 Java 的高性能 RPC 分布式远程调用服务框架,现已成为 Apache 基金会孵化项目. 核心功能:远程服务调用. 为什么要 ...

随机推荐

  1. json_encode把中文字符的数组转为json格式

    function ch_json_encode($data) { /** * 将中文编码 * @param array $data * @returnstring */ function ch_url ...

  2. C++异常与析构函数及构造函数

    析构函数不要抛出异常. 构造函数可以抛出异常,但是要谨慎. 原因下面这篇文章讲的不错,转载如下: http://jarfield.iteye.com/blog/811703 写Java代码的时候,遇到 ...

  3. POI对Excel单元格进行颜色设置

    POI对Excel单元格进行颜色设置 学习了:http://www.myexception.cn/program/1932587.html HSSFWorkbook workbook = new HS ...

  4. 51nod 1413:权势二进制

    1413 权势二进制 题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题  收藏  关注 一个十进制整数被叫做权势二进制,当他的十进制 ...

  5. Android应用之——微信微博第三方sdk登录分享使用过程中的一些常见问题

    前言 近期在使用第三方登录和分享的过程中遇到了非常多问题,一方面能够归结为自己经验的不足,还有一方面事实上也说明了官方文档的含糊不清.这篇博文不会写关于怎样使用第三方登录分享,由于官方文档已经写明了步 ...

  6. VC与JavaScript交互(一) ———— 怎样实现

    为什么要让VC与JavaScript交互? 1.有时候我们须要让自己的软件打开一个网页.来获取页面上的一些数据. 这时,能够用mshtml解析HTML提取出数据.也能够向HTML文档动态写入我们准备好 ...

  7. 浅析PHP中cookie与session技术

    1.cookie是什么? cookie指某些站点为了辨别用户身份.进行session跟踪而储存在用户本地终端上的数据(通常经过加密). 通俗来理解就是,你去一个专卖店或者超市买东西,然后店里给你办一张 ...

  8. oracle数据泵备份与还原

    完整的常用的一套oracle备份以及还原方案 --在新库中新建数据目录,我没有特别说明在哪执行的语句都可在plsql中执行 CREATE OR REPLACE DIRECTORY dump_dir A ...

  9. MVC、控件、一般处理程序中的session and cookie

    Mvc中: session: if (!string .IsNullOrEmpty(find)) //设置 Session["oip"] = "无锡"; Vie ...

  10. 编码介绍(ANSI、GBK、GB2312、UTF-8、GB18030和 UNICODE)

    转载:http://blog.jobbole.com/30526/(前面内容)和http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf ...