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. [MongoDB实战]Part1 起步

    本书的这部分对MongoDB进行了一个大致的简介.包括了Javascript Shell和Ruby驱动,这俩都有例子 在第一章,我们将了解到MongoDB的历史,设计目的和实际使用的场景.我们还将了解 ...

  2. 关于synchronized与volatile的一点认识

    贪婪是一种原罪,不要再追求性能的路上离正确越来越远. 内存模型 java内存模型 pageId=27903261#%E5%85%B3%E4%BA%8Esynchronized%E4%B8%8Evola ...

  3. BEGINNING SHAREPOINT&#174; 2013 DEVELOPMENT 第11章节--为Office和SP解决方式开发集成Apps 集成SP和Office App

    BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第11章节--为Office和SP解决方式开发集成Apps  集成SP和Office App         你能够用两种 ...

  4. crm2013使用图片字段

    在CRM2013能够加入图片字段(一个实体仅仅能加入一个图片字段) watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveV9mMTIz/font/5a6L5L2 ...

  5. hdoj 5092 Seam Carving 【树塔DP变形 + 路径输出】 【简单题】

    Seam Carving Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Tot ...

  6. SDUT OJ 1124 飞越原野 (三维BFS练习)

    飞跃原野 nid=24#time" title="C.C++.go.haskell.lua.pascal Time Limit5000ms Memory Limit 65536K ...

  7. 软件測试、ios中的測试概念以及步骤

    软件測试: 软件測试的目标是应该服务于软件项目的目标,能够通过建议反馈使用更加高效的方法和工具,提升软件开发效率以及软件开发质量.同一时候还能够通过过一些手段,更早.更快.很多其它地发现缺陷.从容减少 ...

  8. 刚接触Joomla,写一下瞎折腾的初感受~

    我这几天一直在苦苦寻找一款能够长期投靠的CMS产品,要求的是 1)必须支持命名空间 2)必须OOP + MVC分层 3)丰富分文档和使用群体,至少是出名的.免得哪一天他们解散了 4)-- 一開始我把目 ...

  9. NumPy和Pandas常用库

    NumPy和Pandas常用库 1.NumPy NumPy是高性能科学计算和数据分析的基础包.部分功能如下: ndarray, 具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组. 用于对整组数 ...

  10. Asp.net Web Api中使用配置Unity

    第一步:建立web api,添加unity.webapi. 第二步:在添加了该引用之后,在App_Start中会自动生成UnityConfig.cs文件 第三步:添加数据做测试 第四步:展示效果