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试用在一些非重要模块上,慢慢引入到一些稍微重要的功能上,半年时间,学习过程及线上使用遇到的些问题在此总结下. 整理这篇文章差不 ...
随机推荐
- Python解释器镜像源修改
目录 Windows Mac 这篇文章将解除你使用python的pip install xxx受到的网速限制,如果只是下载较小的第三方库,可以尝试pip --default-timeout=100 i ...
- python--内置函数03
一 . 正则表达式 匹配字符串 元字符 . 除了换行 \w 数字, 字母, 下划线 \d 数字 \s 空白符 \n \t \b 单词的边界 \W 非xxx \D \S [ ] 字符组 or的关系 [^ ...
- LeetCode(125) Valid Palindrome
题目 Given a string, determine if it is a palindrome, considering only alphanumeric characters and ign ...
- magic mouse 2 在Mac上灵敏度太低的解决办法
1.打开终端 2.输入以下代码查看当前鼠标移动速度 defaults read -g com.apple.mouse.scaling 你会看到输出的是 “3”,这是初始速度 3.输入以下代码改变鼠标移 ...
- appium之toast处理
注意 toast要appium1.6.3以上版本才支持,Android 5.0以上(需使用夜神多开模拟器),jdk1.8且配置了环境变量. toast定位 1.先看下toast长什么样,如下图,像这种 ...
- Python基础数据类型之字符串
Python基础数据类型之字符串 一.Python如何创建字符串 在python中用引号将一些文本包起来就构成了字符串(引号可以是单引号.双引号.单三引号,双三引号,它们是完全相同的) >> ...
- C/C++的类型安全
类型安全很大程度上可以等价于内存安全,类型安全的代码不会试图访问自己没被授权的内存区域.“类型安全”常被用来形容编程语言,其根据在于该门编程语言是否提供保障类型安全的机制:有的时候也用“类型安全”形容 ...
- 【LeetCode】To Lower Case(转换成小写字母)
这道题是LeetCode里的第709道题. 题目要求: 实现函数 ToLowerCase(),该函数接收一个字符串参数 str,并将该字符串中的大写字母转换成小写字母,之后返回新的字符串. 示例 1: ...
- NYOJ 747 蚂蚁的难题(三)
蚂蚁的难题(三) 时间限制:2000 ms | 内存限制:65535 KB 难度:4 描述 蚂蚁终于把尽可能多的食材都搬回家了,现在开始了大厨计划. 已知一共有 n 件食材,每件食材有一个美味 ...
- 算法总结——主席树(poj2104)
题目: Description You are working for Macrohard company in data structures department. After failing y ...