Dubbo简单介绍及实例
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简单介绍及实例的更多相关文章
- Linux守护进程简单介绍和实例具体解释
Linux守护进程简单介绍和实例具体解释 简单介绍 守护进程(Daemon)是执行在后台的一种特殊进程.它独立于控制终端而且周期性地执行某种任务或等待处理某些发生的事件.守护进程是一种非常实用的进程. ...
- Tstrings类简单介绍及实例
用TStrings保存文件;var S: TStrings;begin S := TStringList.Create(); { ... } S.SaveToFile('config.txt' ...
- Solr之NamedList 简单介绍与实例解析
大家都知道,Solr是一个基于Lucene高可配置的搜索服务器,大部分参数值以及相关优化等等都可以在solrconfig.xml中配置,那么就需要一个能够很快的进行解析和读取配置文件内容的数据结构,为 ...
- Dubbo简单介绍及其和zookeeper的关系
何为Dubbo Dubbox 是一个分布式服务框架,其前身是阿里巴巴开源项目Dubbo ,被国内电商及互联网项目中使用,后期阿里巴巴停止了该项目的维护,当当网便在Dubbo基础上进行优化,并继续维 ...
- Entity Framework 的简单介绍与实例
1.下载与引用 a) 首先需要下载一个oracle clinent 12c 发行版(我这边下载的是发行版)并进行安装,下载内容如下图 B) 创建一个项目,通过Nuget引用 添加ODP.NET ...
- (八十七)AutoLayout的简单介绍与实例
AutoLayout是继AutoResizing之后的一种自己主动布局方法.攻克了AutoResizing无法处理控件间相互关系的问题. AutoLayout在storyboard中通过底部工具条设置 ...
- 003 -- Dubbo简单介绍
1:Dubbo的基本概念 dubbo是阿里巴巴SOA服务治理 方案的核心框架,每天为20000+个服务次的数据量访问支持.dubbo是一个分布式的服务框架,致力于提供高性能和透明化的RPC远程服务调用 ...
- dubbo学习过程、使用经验分享及实现原理简单介绍
一.前言 部门去年年中开始各种改造,第一步是模块服务化,这边初选dubbo试用在一些非重要模块上,慢慢引入到一些稍微重要的功能上,半年时间,学习过程及线上使用遇到的些问题在此总结下. 整理这篇文章差不 ...
- 【Dubbo基础】dubbo学习过程、使用经验分享及实现原理简单介绍
一.前言 部门去年年中开始各种改造,第一步是模块服务化,这边初选dubbo试用在一些非重要模块上,慢慢引入到一些稍微重要的功能上,半年时间,学习过程及线上使用遇到的些问题在此总结下. 整理这篇文章差不 ...
随机推荐
- logging日志模块,四种方式
1.最简单的用法 import logging logging.error("hah") logging.info("hah") logging.debug(& ...
- java之 List、Set、ArraylIst、 LinkList
LIst与set概述 List Set 1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构. 2.对于随机访问get和set,ArrayList优于 ...
- Java中IO流讲解(一)
一.概念 IO流用来处理设备之间的数据传输 Java对数据的操作是通过流的方式 Java用于操作流的类都在IO包中 流按流向分为两种:输入流,输出流 流按操作类型分为两种: 字节流 : 字节流可以操作 ...
- MySql update inner join!MySql跨表更新 多表update sql语句?如何将select出来的部分数据update到另一个表里面?
项目中,评论数,关注数等数据,是实时更新的.+1,-1 这种. 有的时候,可能统计不准确. 需要写一个统计工具,更新校准下. 用Java写SQL和函数,代码很清晰,方便扩展,但是太慢了. 为了简单起见 ...
- skkyk:线段树浅谈
推荐前辈学姐博客文章,写的很细 https://www.cnblogs.com/TheRoadToTheGold/p/6254255.html 学学半,此随笔主要是加深自己对线段树的理解 题目:洛谷P ...
- 工作中的Python脚本
本章内容 1.rawlog处理 2.域名item接口刷新 3.备案结果查询 4.多级域名中取主域 5.发送邮件 6.通过api获取cdn edge ip 7.多线程下载 1.rawlog处理 脚本 ...
- Centos7 安装python3详细教程,解决升级后不兼容问题
一.确认当前python版本 [root@centos Python-3.6.1]# python Python 2.7.5 (default, Nov 6 2016, 00:28:07) [GCC ...
- iOS转场动画初探
一般我们就用两种转场push和present present /** 1.设置代理 - (instancetype)init { self = [super init]; if (self) { se ...
- leetcode 144 先序遍历和中序遍历差不多
这是只写了先序遍历的非递归代码 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode * ...
- Codeforces956D. Contact ATC
$n \leq 100000$个飞机在坐标轴上,给坐标给速度,坐标速度异号,还有一个风速在$[-w,w]$区间,$w$比最小的速度绝对值要小.由于风速不知道,所以问有多少对飞机可能在原点相遇. 思维定 ...