2018.11.9 Dubbo入门学习

1.什么是Dubbo

dubbo.io 代表是开源的

DUBBO是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提供3,000,000,000+次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点

?单一应用架构

?当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。

?此时,用于简化增删改查工作量的 数据访问框架(ORM) 是关键。

?垂直应用架构

?当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率。

?此时,用于加速前端页面开发的 Web框架(MVC) 是关键。

?分布式服务架构

?当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。

?此时,用于提高业务复用及整合的 分布式服务框架(RPC) 是关键。

?流动计算架构

?当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。

?此时,用于提高机器利用率的 资源调度和治理中心(SOA) 是关键。

Dubbo就是资源调度和治理中心的管理工具。

Dubbo 就是类似于webservice的关于系统之间通信的框架,并可以统计和管理服务直接的调用情况(包括服务被谁调用了,调用的次数是如何,以及服务的使用状况)。

2.Dubbo的架构

节点角色说明:
   - Provider: 暴露服务的服务提供方。
   - Consumer: 调用远程服务的服务消费方。
    ?   Registry: 服务注册与发现的注册中心。
    ?   Monitor: 统计服务的调用次调和调用时间的监控中心。
    ?   Container: 服务运行容器。

调用关系说明:

?   0. 服务容器负责启动,加载,运行服务提供者。
?   1. 服务提供者在启动时,向注册中心注册自己提供的服务。
?   2. 服务消费者在启动时,向注册中心订阅自己所需的服务。
?   3. 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
?   4. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
?   5. 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。

使用方法

Spring配置

Dubbo采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载Dubbo的配置即可,Dubbo基于Spring的Schema扩展进行加载。

单一工程中spring的配置local.xml

<bean id="xxxService" class="com.xxx.XxxServiceImpl" />
       <bean id="xxxAction" class="com.xxx.XxxAction">
          <property name="xxxService" ref="xxxService" />
       </bean>

远程服务

在本地服务的基础上,只需做简单配置,即可完成远程化:

将上面的local.xml配置拆分成两份,将服务定义部分放在服务提供方remote-provider.xml,将服务引用部分放在服务消费方remote-consumer.xml。
并在提供方增加暴露服务配置<dubbo:service>,在消费方增加引用服务配置<dubbo:reference>。

服务层发布服务:

<!-- 和本地服务一样实现远程服务 -->
<bean id="xxxService" class="com.xxx.XxxServiceImpl" />
<!-- 增加暴露远程服务配置 -->
<dubbo:service interface="com.xxx.XxxService" ref="xxxService" />

表现层调用服务:

<!-- 增加引用远程服务配置 -->
<dubbo:reference id="xxxService" interface="com.xxx.XxxService" />
<!-- 和本地服务一样使用远程服务 -->
<bean id="xxxAction" class="com.xxx.XxxAction">
    <property name="xxxService" ref="xxxService" />
</bean>

原文地址:https://www.cnblogs.com/qichunlin/p/9933968.html

时间: 2024-07-29 04:56:51

2018.11.9 Dubbo入门学习的相关文章

2018年最新Linux入门学习路线图

进入全新的2018年之后,感觉Linux入门学习的路线也应该进行一下更新了.过去一年里Linux版本更新过不少版本,而且很多新技术冲击了应用市场,不及时更新一下很可能跟用人需求南辕北辙. 正好拿到一份不错的入门路线图,所以就先发出来给大家做个参考. 原文地址:http://blog.51cto.com/12592106/2072693

dubbo入门学习

官方网址:http://dubbo.apache.org/zh-cn/index.html 学习可以参考官网中文文档:http://dubbo.apache.org/zh-cn/docs/user/quick-start.html 1.Apache Dubbo是一款高性能.轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现. 1 如果项目表现层.服务层是不同的项目,可以使用dubbo实现两个系统之间的通信.服务层和表现层相互

记 2018/11/08 面向对象基础学习 1#

一.类与对象概述 1.为了把日常生活中实物用学习语言描述出来 2.如何描述现实事物 属性:就是该事物的描述信息(名词) 行为:就是该事物能够做什么(动词) 3.Java中最基本单位是类 成员变量:事物的属性 成员方法:事物的行为 4.定义类其实就是定义类的成员(成员变量和成员方法 ) 成员变量 和在类中,方法外 成员方法 去掉satatic 5.类和对象的概念 类: 是一组相关的属性和行为的集合 对象: 是该类事物的具体体现 类定义实例: class Student String name; i

dubbo入门学习(三)-----dubbo整合springboot

springboot节省了大量的精力去配置各种bean,因此通过一个简单的demo来整合springboot与dubbo 一.创建boot-user-service-provider 本篇博文基于上篇中的dubbo项目,整体工程如下: 1.pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"

dubbo入门学习(五)-----dubbo的高可用

zookeeper宕机与dubbo直连 现象 zookeeper注册中心宕机,还可以消费dubbo暴露的服务. 原因 健壮性 l 监控中心宕掉不影响使用,只是丢失部分采样数据 l 数据库宕掉后,注册中心仍能通过缓存提供服务列表查询,但不能注册新服务 l 注册中心对等集群,任意一台宕掉后,将自动切换到另一台 l 注册中心全部宕掉后,服务提供者和服务消费者仍能通过本地缓存通讯 l 服务提供者无状态,任意一台宕掉后,不影响使用 l 服务提供者全部宕掉后,服务消费者应用将无法使用,并无限次重连等待服务提

2018年最新Linux云计算入门学习路线图

近年来,Linux在技术行业里的重要性越来越高,成为了IT从业者的必备技能之一,据统计,Linux相关岗位增长达到了惊人的24%.市场需求扩大后Linux技术人员的薪资也一路上升,1-3年Linux运维工程师的平均薪资上升了13%. 因为几年来很多人都选择转行从事Linux运维行业,入门学习的需求很旺盛,在这几年中也出现了不少对新手非常友好的入门学习路线图.然而从2017年中段开始,Linux运维的技能需求变化很大,这些入门学习路线路线图大部分已经不适应新时代的技能需求了.举例而言,Kubern

我整理的一些不错的Java学习书籍和学习教程,送给正在入门学习Java的你!

书籍推荐: 1. Effective Java 3rd Edition 如果你之前都没读过这本书,那么它绝对是你要阅读的第一本书,这个版本按说很早就应该出版了,此版本涵盖了JDK 7.8 和 9 的新特性事实上,我在 2018 年 1 月份就已经入手这本书了,并且花了一周左右的时间来阅读,我会在阅读过程中,寻找新的知识点,特别是关于 Java 8 和 Java 9 的.我从这本书中很好的理解了 Java 的模块化,它也帮我理清了之前对于 Java 8 特性的一些误解.2. Modern Java

OpenGL入门学习

说起编程作图,大概还有很多人想起TC的#include <graphics.h>吧? 但是各位是否想过,那些画面绚丽的PC游戏是如何编写出来的?就靠TC那可怜的640*480分辨率.16色来做吗?显然是不行的. 本帖的目的是让大家放弃TC的老旧图形接口,让大家接触一些新事物. OpenGL作为当前主流的图形API之一,它在一些场合具有比DirectX更优越的特性. 1.与C语言紧密结合. OpenGL命令最初就是用C语言函数来进行描述的,对于学习过C语言的人来讲,OpenGL是容易理解和学习的

鱼C《零基础入门学习Python》10-17节课时知识点总结

第10讲:列表:一个打了激素的数组 1. 列表都可以存放一些什么东西?  我们说 Python 的列表是一个打了激素的数组,如果把数组比喻成集装箱,那么 Python 的列表就是一个大仓库,Ta 可以存放我们已经学习过的任何数据类型. 2. 向列表增加元素有哪些方法?  三种方法想列表增加元素,分别是:append().extend() 和 insert().    3. append() 方法和 extend() 方法都是向列表的末尾增加元素,请问他们有什么区别?  append() 方法是将