`
collegeyuan
  • 浏览: 30952 次
  • 性别: Icon_minigender_2
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

Dubbo入门

 
阅读更多

分布式服务框架:

   主要提供微服务发布,服务治理和服务监控,因为复杂的业务需求,会造成线上服务的混乱,和连接数据库的混乱.

微服务的好处是:业务解耦,方便扩容,方便系统按模块升级,模块重用,开发新业务简单,开发人员可以专注某一业务,方便代码管理,方便数据库优化

微服务的坏处:(分布式服务框架要解决的问题)每个系统之间的关系变得非常复杂,随着调用的业务增多,底层的模块需要高可用性和并发,需要分布式Session框架支持。

 

Dubbo入门:

dubbo是一个分布式服务框架。致力于提供高性能的和透明化的RPC(分布式服务框架)远程服务调用方案。

主要功能:

提供注册中心,动态的注册和发现服务,并在消费方获取服务提供地址列表,实现负载均衡和Failover,并降低对F5硬件负载均衡的依赖,并减少部分成本。

提供监控中心,统计服务的调用次数和调用时间。作为容量规划的参考指标。可以动态调整权重,在线上,将某台机器的权重一直加大,并在加大的过程中。记录响应时间的变化,直到响应时间到达阀值,记录此时的访问量,再以此访问量乘以机器数反推总容量。

 

节点角色说明:

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

调用关系说明:

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

(1) 连通性:

  • 注册中心负责服务地址的注册与查找,相当于目录服务,服务提供者和消费者只在启动时与注册中心交互,注册中心不转发请求,压力较小
  • 监控中心负责统计各服务调用次数,调用时间等,统计先在内存汇总后每分钟一次发送到监控中心服务器,并以报表展示
  • 服务提供者向注册中心注册其提供的服务,并汇报调用时间到监控中心,此时间不包含网络开销
  • 服务消费者向注册中心获取服务提供者地址列表,并根据负载算法直接调用提供者,同时汇报调用时间到监控中心,此时间包含网络开销
  • 注册中心,服务提供者,服务消费者三者之间均为长连接,监控中心除外
  • 注册中心通过长连接感知服务提供者的存在,服务提供者宕机,注册中心将立即推送事件通知消费者
  • 注册中心和监控中心全部宕机,不影响已运行的提供者和消费者,消费者在本地缓存了提供者列表
  • 注册中心和监控中心都是可选的,服务消费者可以直连服务提供者

(2) 健状性:

  • 监控中心宕掉不影响使用,只是丢失部分采样数据
  • 数据库宕掉后,注册中心仍能通过缓存提供服务列表查询,但不能注册新服务
  • 注册中心对等集群,任意一台宕掉后,将自动切换到另一台
  • 注册中心全部宕掉后,服务提供者和服务消费者仍能通过本地缓存通讯
  • 服务提供者无状态,任意一台宕掉后,不影响使用
  • 服务提供者全部宕掉后,服务消费者应用将无法使用,并无限次重连等待服务提供者恢复

(3) 伸缩性:

  • 注册中心为对等集群,可动态增加机器部署实例,所有客户端将自动发现新的注册中心
  • 服务提供者无状态,可动态增加机器部署实例,注册中心将推送新的服务提供者信息给消费者

(4) 升级性:

 

  • 当服务集群规模进一步扩大,带动IT治理结构进一步升级,需要实现动态部署,进行流动计算,现有分布式服务架构不会带来阻力:

DUBBO协议 :

Dubbo缺省协议采用单一长连接和NIO异步通讯,适合于小数据量大并发的服务调用,以及服务消费者机器数远大于服务提供者机器数的情况Dubbo缺省协议不适合传送大数据量的服务,比如传文件,传视频等,除非请求量很低。

    缺省协议,使用基于mina1.1.7+hessian3.2.1的tbremoting交互。

  •     连接个数:单连接
  •     连接方式:长连接
  •     传输协议:TCP
  •     传输方式:NIO异步传输
  •     序列化:Hessian二进制序列化
  •     适用范围:传入传出参数数据包较小(建议小于100K),消费者比提供者个数多,单一消费者无法压满提供者,尽量不要用dubbo协议传输大文件或超大字符串
  •     适用场景:常规远程服务方法调用

 

 

 

分享到:
评论

相关推荐

    Dubbo入门到精通架构高级课程(视频+课件+源码)

    【Dubbo入门到精通架构高级课程】是一门深入解析Dubbo框架的全面教程,旨在帮助初学者和进阶者理解并掌握这个强大的Java分布式服务框架。该课程包含了视频讲解、课件资料以及配套的源码,确保学习者能理论与实践相...

    dubbo入门教程+实例源码

    【Dubbo入门教程+实例源码】是一份针对初学者设计的教程,旨在帮助开发者快速理解和掌握Apache Dubbo这一高性能、轻量级的服务治理框架。Dubbo是阿里巴巴开源的一个分布式服务框架,它提供了服务注册与发现、负载...

    Dubbo入门到精通架构高级课程

    我感觉很不错的宝贝,现在和大家分享,希望能够帮到大家,如果你需要可以下载看看,很适合喜欢研究技术的人员

    Dubbo入门实例Demo

    【Dubbo入门实例Demo】是针对初学者设计的一个实践教程,旨在帮助新手快速理解并掌握Apache Dubbo这一高性能、轻量级的Java RPC框架。在学习过程中,新手往往会在配置、依赖、通信等方面遇到诸多问题,这个Demo就是...

    Dubbo入门_实战

    ### Dubbo入门实战详解 #### 一、Dubbo概述与应用场景 ##### 1.1 什么是Dubbo? Dubbo是一款由阿里巴巴开发的分布式服务框架,它致力于提供高性能和透明化的RPC远程服务调用方案。该框架是阿里巴巴SOA服务化治理...

    dubbo入门demo样例

    【Dubbo入门Demo详解】 Dubbo是一款高性能、轻量级的Java开源服务框架,由阿里巴巴开发并维护,它主要提供了服务治理、远程调用、集群容错、监控等核心功能,是微服务架构中常见的服务治理组件。在这个“dubbo入门...

    dubbo入门例子程序

    【Dubbo入门例子程序】是针对初学者设计的一个简单示例,旨在帮助理解并快速上手Apache Dubbo这一高性能、轻量级的Java远程服务框架。这个例子通过一个"Hello, World!"的应用来演示Dubbo的基本用法,采用Maven作为...

    dubbo 入门案例 helloworld

    【标题】"Dubbo入门案例HelloWorld"是一个基础的学习教程,旨在帮助初学者理解并实践Dubbo框架的基本用法。Dubbo是阿里巴巴开源的一款高性能、轻量级的Java RPC(远程过程调用)框架,它提供了服务治理、负载均衡、...

    Dubbo入门之HelloWorld

    本文将基于"Dubbo入门之HelloWorld"的主题,深入探讨如何从零开始学习并实践Dubbo的基本用法。 首先,我们需要了解什么是RPC(Remote Procedure Call)。RPC是一种使程序可以调用另一个系统中的函数或方法的技术,...

    dubbo入门的demo

    【标题】"dubbo入门的demo" Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了服务发现、服务治理、流量控制、熔断机制等功能,是阿里巴巴贡献给Apache基金会的重要项目。本Demo旨在帮助初学者理解并掌握...

    dubbo入门示例,zookeeper+dubbo-admin

    【标题】"dubbo入门示例,zookeeper+dubbo-admin" 涉及到的核心技术是Dubbo和Zookeeper,这两个都是Java生态系统中的关键组件,主要用于构建分布式服务系统。 【Dubbo】是阿里巴巴开源的一款高性能、轻量级的Java...

    dubbo入门 dubbo_demo.zip

    【标题】"dubbo入门 dubbo_demo.zip" 提供了一个初学者接触和了解Apache Dubbo的起点。Dubbo是一款高性能、轻量级的开源Java RPC框架,它致力于提供面向服务的治理方案,使得分布式系统开发更为便捷。在这个压缩包中...

    dubbo入门实例源码

    dubbo入门实例源码,直接解压后,分别将dubboprovider和dubboconsumer项目导入myeclipse中,先启动zookeeper注册中心(bin\zkServer.cmd或zkServer.sh),再启动provider中main…………

    新建文件夹 (6).rar_dubbo入门

    【标题】"新建文件夹 (6).rar_dubbo入门" 提供了我们即将探讨的主题——Dubbo入门。Dubbo是阿里巴巴开源的一款高性能、轻量级的Java服务治理框架,它致力于提供面向服务的RPC(远程过程调用)解决方案,帮助开发者...

    dubbo入门实例及性能测试

    1. **Dubbo入门** - **安装配置**:首先,你需要安装Java环境,并在项目中引入Dubbo依赖。通常,Dubbo项目基于Maven构建,因此你需要在`pom.xml`文件中添加Dubbo的依赖。 - **服务接口定义**:创建服务接口(API)...

    dubbo入门案例.rar

    这个"1-dubbo入门案例"文件应该包含了上述步骤的示例代码,你可以导入到IDE中运行,根据实际情况进行调整。这个案例是学习和理解Dubbo工作原理的一个很好的起点,通过实践,你可以深入理解Dubbo的特性,如动态配置、...

    Dubbo入门案例和项目源码

    【Dubbo入门案例和项目源码】是一个针对初学者的教程资源,包含了使用Dubbo构建Web服务的基础示例和完整的项目源代码。Dubbo是阿里巴巴开源的一款高性能、轻量级的Java服务框架,广泛应用于分布式系统开发,尤其在...

    Dubbo(四)------Dubbo入门示例(基于属性配置)

    在本篇中,我们将深入探讨Dubbo入门示例,特别是基于属性配置的方式。Dubbo是一个高性能、轻量级的开源Java RPC框架,旨在提供一种简单易用的服务治理方案。通过属性配置,我们可以更加灵活地控制服务的行为,实现...

    Dubbo入门搭建zookeeper集群+服务端消费端demo

    【标题】"Dubbo入门搭建zookeeper集群+服务端消费端demo"主要涵盖了两个核心的分布式服务框架——Dubbo和Zookeeper,以及如何在实际环境中整合它们进行服务的注册与发现。 Dubbo是阿里巴巴开源的一款高性能、轻量级...

Global site tag (gtag.js) - Google Analytics