Spring DUBBO入门

大家好,我是IT修真院郑州分院第6期的学员,一枚正直纯洁善良的JAVA程序员今天给大家分享一下,Spring DUBBO的入门


1.背景介绍

什么是Dubbo?

Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,

使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。

从服务模型的角度来看,Dubbo采用的是一种非常简单的模型,要么是提供方提供服务,

要么是消费方消费服务,所以基于这一点可以抽象出服务提供方(Provider)和服务消费方(Consumer)两个角色。关于注册中心、协议支持、服务监控等内容

应用架构进化史

单一应用架构:当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。此时,用于简化增删改查工作量的数据访问框架(ORM)是关键。

垂直应用架构:当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率。此时,用于加速前端页面开发的Web框架(MVC)是关键。

分布式服务架构:当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。此时,用于提高业务复用及整合的分布式服务框架(RPC)是关键。

流动计算架构:当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。此时,用于提高机器利用率的资源调度和治理中心(SOA)是关键。

进化图

Dubbo最基本的几个需求

当服务越来越多时,服务 URL 配置管理变得非常困难,F5 硬件负载均衡器的单点压力也越来越大。 此时需要一个服务注册中心,动态的注册和发现服务,使服务的位置透明。并通过在消费方获取服务提供方地址列表,实现软负载均衡和 Failover,降低对 F5 硬件负载均衡器的依赖,也能减少部分成本

当进一步发展,服务间依赖关系变得错踪复杂,甚至分不清哪个应用要在哪个应用之前启动,架构师都不能完整的描述应用的架构关系。 这时,需要自动画出应用间的依赖关系图,以帮助架构师理清理关系。

服务的调用量越来越大,服务的容量问题就暴露出来,这个服务需要多少机器支撑?什么时候该加机器? 为了解决这些问题,第一步,要将服务现在每天的调用量,响应时间,都统计出来,作为容量规划的参考指标。

        其次,要可以动态调整权重,在线上,将某台机器的权重一直加大,并在加大的过程中记录响应时间的变化,直到响应时间到达阀值,记录此时的访问量,再以此访问量乘以机器数反推总容量。

为什么要学习Spring Dubbo?

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

最近一段时间频繁出现在面试群中,为了面试储备知识

懒得列举的一些优点

已经恢复维护

缺点???

只支持JAVA语言

2.知识剖析

架构

节点角色说明

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

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

Registry:服务注册与发现的注册中心

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

Container:服务运行容器

调用关系说明

1.服务容器负责启动,加载,运行服务提供者

2.服务提供者在启动时,向注册中心注册自己提供的服务

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

4.注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者

5.服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用

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

3.常见问题

Zookeeper和DUBBO的关系

4.解决方案

http://blog.csdn.net/daiqinge/article/details/51282874#reply

5.编码实战

6.扩展思考

什么是长连接和心跳机制?

网络中的接收和发送数据都是使用操作系统中的SOCKET进行实现。但是如果此套接字已经断开,那发送数据和接收数据的时候就一定会有问题。可是如何判断这个套接字是否还可以使用呢?这个就需要在系统中创建心跳机制。其实TCP中已经为我们实现了一个叫做心跳的机制。如果你设置了心跳,那TCP就会在一定的时间(比如你设置的是3秒钟)内发送你设置的次数的心跳(比如说2次),并且此信息不会影响你自己定义的协议。所谓“心跳”就是定时发送一个自定义的结构体(心跳包或心跳帧),让对方知道自己“在线”。 以确保链接的有效性

7.参考文献

http://dubbo.io/books/dubbo-user-book/

http://www.baeldung.com/dubbo

http://shiyanjun.cn/archives/325.html

8.更多讨论

视频:



腾讯视频


PPT:https://ptteng.github.io/PPT/PPT-java/java-DUBBO-task10.html#/

Q:有没有什么更进阶的资料

dubbo管理员指南:http://dubbo.io/books/dubbo-admin-book/

Q:有没有什么更更进阶的资料

dubbo开发者指南:http://dubbo.io/books/dubbo-dev-book/

Q:现在用的公司多吗?

有不少,在DUBBO的gitter社区有很多登记了使用了DUBBO的公司

https://github.com/alibaba/dubbo/issues/1012


没了。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,951评论 6 342
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,915评论 18 139
  • 我成长在一个大家庭,在我懂事起,大哥已经在外面读书,回家的时间就很少了,我在四五岁时就觉得自己一定要好好读书,...
    梅梅心情阅读 511评论 1 1
  • 在365读书里无意中遇到你,浏览了一些文章和关注了一些作者,有高兴也有惶惶,里面的文章功底是我望尘莫及的,年龄段也...
    过网阅读 2,998评论 3 3
  • 咔嚓、咔、咔、咔嚓嘣!你在干嘛呢,快来一起嗑呀!不然你就要输了!咦,这是在干什么呢?哦,原来这是在玩一一嗑瓜子比赛...
    江南1118阅读 327评论 2 1