dubbo少盲帖

作为测试经常会听到后端开发说起dubbo服务,dubbo服务到底使用干啥,查阅了网上资料再次简单介绍下(不涉及代码)

按用户人数,通过用一个图来具体说明架构和开发框架的演进过程


image.png
  • 单一应用架构
    当网站流量较小,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。此时,用户简化增删改查的数据访问框架(ORM,object-relational mapping 对象关系映射)是关键。
    如Django的model举例:
from django.db import models
class User1(models.Model):
    name = models.CharField(max_length=225)

对应的数据库中可能就是一个表:user,里面有一个字段。
如有个User的实例,如:

user = User1()
user.name = 'jc'
user.save() //保存数据库

那么对应着数据可中就有一条记录,name为jc。此时的user实例,对应的正是这个表的一条记录
使用ORM的好处就是不用操作表,可以在程序中用面向对象的思路,直接操作对象即可。如上述代码,插入一条记录,直接 user.save()。对应ORM会帮助我们生成一条SQL语句。

Insert into user1(name) values('jc')
  • 垂直应用架构
    当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率。此时,用于加速前端页面开发的Web框架(MVC,模型,视图,控制器)是关键。

  • 分布式服务架构
    当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。此时,用于提高业务复用及整合的分布式服务框架(RPC,Remote Procedure Call)是关键。
    RPC-远程过程调用,它是一种通过网络从远程计算机上请求服务,而不需要了解底层网络技术的协议。RPC采用客户机和服务器模式。请求程序是一个客户机,而服务提供程序就是一个服务器。
    1.客户机调用进程发送一个进程参数的调用信息到服务进程然后等待应答消息
    2.服务端,经常保持睡眠直到调用信息到达为止
    3.当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息
    4.客户端调用进程接受答复信息,获取进程结果,然后调用执行进行

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

Dubbo服务原理

下图是从Dubbo官网直接拿来的,看一下基于RPC层,服务提供方和服务消费方之间的调用关系,如图所示


image.png

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

调用关系说明:

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

Dubbo架构采用的是一种非常简单的模型,要么是提供方提供服务,要么是消费方消费服务,所以基于这一点可以抽象出服务提供方(Provider)和服务消费方(Consumer)两个角色。另外Dubbo架构还具有以下几个特点,连通性、健壮性、伸缩性、升级性,有关注册中心、协议支持、服务监控等内容,也在特点里有详细的描述。

连通性(服务消费者和服务提供者的关联)

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

健壮性(任意节点宕掉后,服务仍然可用)

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

伸缩性(节点可以自动增加)

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

升级性(可平滑升级)

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,542评论 6 504
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,822评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,912评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,449评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,500评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,370评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,193评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,074评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,505评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,722评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,841评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,569评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,168评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,783评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,918评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,962评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,781评论 2 354

推荐阅读更多精彩内容

  • 1、微服务简介 微服务是一种用于构建应用的架构方案。微服务架构有别于更为传统的单体式方案,可将应用拆分成多个核心功...
    桥头放牛娃阅读 942评论 4 16
  • 本文来自于我的个人主页:Apache Dubbo,转载请保留链接 ;) 在2011年10月27日,阿里巴巴开源了自...
    程序猿天璇阅读 3,103评论 1 8
  • Dubbo是什么 Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式...
    Coselding阅读 17,216评论 3 196
  • 一、产生的背景 随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算...
    Java大生阅读 619评论 0 0
  • 今天写麦桶饼?是这么叫吗,可能各地有不同的叫法。初中门口有一家小摊,卖现做的麦桶饼。一勺面糊摊开,均匀的铺满整个平...
    火星民政局阅读 96评论 0 0