1、概念


  Dubbo是一个分布式服务框架,以及阿里巴巴内部的SOA服务化治理方案的核心框架。其功能主要包含:高性能NIO通讯及多协议集成。服务动态寻址与路由。软负载均衡与容错,依赖分析与降级等。

  说通俗点,就是首先将程序组件化成一个个相对独立的服务,然后就能够对服务进行分布式。并且,它有注冊中心通过监听,实时发现着新服务,并部署。还能够推送给client;它还集成了负载均衡的解决方式。利用随机算法来讲各个服务科学地分配到多台server上;当然,它也集成了容错机制,来提高集群的稳定性。

  

2、架构


  


 节点角色说明:

  Ø  Provider: 暴露服务的服务提供方。

  Ø  Consumer: 调用远程服务的服务消费方。

  Ø  Registry: 服务注冊与发现的注冊中心。

  Ø  Monitor: 统计服务的调用次调和调用时间的监控中心。

  Ø  Container: 服务执行容器。

 调用关系说明:

  0. 服务容器负责启动。载入,执行服务提供者。

  1. 服务提供者在启动时。向注冊中心注冊自己提供的服务。

  2. 服务消费者在启动时,向注冊中心订阅自己所需的服务。

  3. 注冊中心返回服务提供者地址列表给消费者。假设有变更,注冊中心将基于长连接推送变更数据给消费者。

  4. 服务消费者。从提供者地址列表中,基于软负载均衡算法。选一台提供者进行调用,假设调用失败,再选还有一台调用。

  5. 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。

 注冊中心(Registry)说明:

  对于Dubbo架构中的控制中心及Registry,阿里提供了两种方案:Zookeeper和Redis。生产环境建议大家都使用Zookeeper,推荐理由是:

  1.     Dubbo的官网上写着,使用Dubbo-2.3.3及以上的版本号,推荐使用Zookeeper注冊中心。

  2.     Zookeeper是Apache Hadoop的子项目。强度相对较好。可以全然胜任生产环境的扮演稳定的角色。

  3.     Dubbo未对Zookeeper服务端做不论什么侵入改动。仅仅需安装原生的Zookeeperserver就可以,全部注冊中心逻辑适配都在调用Zookeeperclient完毕。

3、实例


以下将不贴出来源代码,仅仅对项目结构即部分核心代码进行简单说明。

源代码自行下载,下载地址:点击打开链接

  为了简单起见,这个实例中。我们没有使用Zookeeper注冊中心暴露服务地址,而是使用外网的multicast广播注冊中心暴露服务地址。这样我们能够高速的认识一下Dubbo的作用。

  案例中。我们建立了两个WebProject:dubboprovider和dubboconsumer,前者为服务提供方。后者作为client。我们将dubboprovider服务类的接口引入到dubboconsumer项目中(不能引用服务的实现类)。然后通过multicast广播注冊中心(真实环境用Registry)来远程调用dubboprovider服务的实现,假设能成功调到,就算成功。(项目中applicationContext.xml会报错,是由http://code.alibabatech.com/schema/dubbo/dubbo.xsd引起。说是阿里的相关服务换地方了,只是没关系,能够正常执行)

  

暴露服务和引用服务的核心配置例如以下。其他代码比較简单,这里不多介绍。直接下载源代码(点击打开链接)看就可以看懂:

  

Dubbo简单介绍及实例的更多相关文章

  1. Linux守护进程简单介绍和实例具体解释

    Linux守护进程简单介绍和实例具体解释 简单介绍 守护进程(Daemon)是执行在后台的一种特殊进程.它独立于控制终端而且周期性地执行某种任务或等待处理某些发生的事件.守护进程是一种非常实用的进程. ...

  2. Tstrings类简单介绍及实例

    用TStrings保存文件;var  S: TStrings;begin  S := TStringList.Create();  { ... }  S.SaveToFile('config.txt' ...

  3. Solr之NamedList 简单介绍与实例解析

    大家都知道,Solr是一个基于Lucene高可配置的搜索服务器,大部分参数值以及相关优化等等都可以在solrconfig.xml中配置,那么就需要一个能够很快的进行解析和读取配置文件内容的数据结构,为 ...

  4. Dubbo简单介绍及其和zookeeper的关系

    何为Dubbo ​ Dubbox 是一个分布式服务框架,其前身是阿里巴巴开源项目Dubbo ,被国内电商及互联网项目中使用,后期阿里巴巴停止了该项目的维护,当当网便在Dubbo基础上进行优化,并继续维 ...

  5. Entity Framework 的简单介绍与实例

    1.下载与引用 a) 首先需要下载一个oracle clinent 12c 发行版(我这边下载的是发行版)并进行安装,下载内容如下图 B) 创建一个项目,通过Nuget引用  添加ODP.NET    ...

  6. (八十七)AutoLayout的简单介绍与实例

    AutoLayout是继AutoResizing之后的一种自己主动布局方法.攻克了AutoResizing无法处理控件间相互关系的问题. AutoLayout在storyboard中通过底部工具条设置 ...

  7. 003 -- Dubbo简单介绍

    1:Dubbo的基本概念 dubbo是阿里巴巴SOA服务治理 方案的核心框架,每天为20000+个服务次的数据量访问支持.dubbo是一个分布式的服务框架,致力于提供高性能和透明化的RPC远程服务调用 ...

  8. dubbo学习过程、使用经验分享及实现原理简单介绍

    一.前言 部门去年年中开始各种改造,第一步是模块服务化,这边初选dubbo试用在一些非重要模块上,慢慢引入到一些稍微重要的功能上,半年时间,学习过程及线上使用遇到的些问题在此总结下. 整理这篇文章差不 ...

  9. 【Dubbo基础】dubbo学习过程、使用经验分享及实现原理简单介绍

    一.前言 部门去年年中开始各种改造,第一步是模块服务化,这边初选dubbo试用在一些非重要模块上,慢慢引入到一些稍微重要的功能上,半年时间,学习过程及线上使用遇到的些问题在此总结下. 整理这篇文章差不 ...

随机推荐

  1. php框架的特性总结

    今天面试问到了php框架的特性,特此在这汇总一下,方便以后查看. Thinkphp 3.2特性: 1.多表查询非常方便,在model 里几句代码就可以完成完成多表的关联操作. 2.融合了smarty ...

  2. 【STL初步】不定长数组:vector + 集合:set + 映射:map

    一.vector 为了节省空间,有时我们会使用动态数组vector. 定义动态数组 vector<类型名>变量名 vector<int>que //定义que为一个int类型的 ...

  3. c++ 整数读入优化

    这个函数!!!! 它真的巨好用!!! 改了两天 换了两个版本的代码 都TLE了 然后尝试着在文件头加了这个替换了cin和scanf 结果意外地发现两个文件都突然能过了??? 太神奇了叭! 强烈安利! ...

  4. VIJOS1476 旅行规划(树形Dp + DFS暴力乱搞)

    题意: 给出一个树,树上每一条边的边权为 1,求树上所有最长链的点集并. 细节: 可能存在多条最长链!最长链!最长链!重要的事情说三遍 分析: 方法round 1:暴力乱搞Q A Q,边权为正-> ...

  5. 代理授权验证_web客户端授权验证

    HTTPPasswordMgrWithDefaultRealm() HTTPPasswordMgrWithDefaultRealm()类将创建一个密码管理对象,用来保存 HTTP 请求相关的用户名和密 ...

  6. 彻底理解Python中的yield

    阅读别人的python源码时碰到了这个yield这个关键字,各种搜索终于搞懂了,在此做一下总结: 通常的for…in…循环中,in后面是一个数组,这个数组就是一个可迭代对象,类似的还有链表,字符串,文 ...

  7. tomcat启动后 404 页面无法访问

    如果修改端口后还不能访问,先关闭tomcat, 在bin目录下命令 ./shutdown.sh 找到80进程  netstat -an | grep 80 杀死80进程 ps -ef | grep h ...

  8. awk中next以及getline用法示例

    在awk中,如果调用next,那么next之后的命令就都不执行了.此行文本的处理到此结束,开始读取下一条记录并操作. 实例如下: [plain] view plain copy zoer@ubuntu ...

  9. MFC CString 和int相互转化

    CString str = _T("123"); int i = _ttoi(str); =============== int i = 123; CString str ; st ...

  10. Wp 导航到手机定位设置页面

    WP开放了很多选择器和启动器,找了半天没发现有打开定位设置页面的,找了好久终于找到了解决办法: await Windows.System.Launcher.LaunchUriAsync(new Uri ...