转载自:https://www.cnblogs.com/jiyukai/p/9459983.html

分布式服务框架(一)

一、RPC

  RPC(Remote Process Call),即远程服务调用,被广泛地应用在很多企业应用中,是早期主要的服务治理方案,其流程较为简单,客户端consumer携带参数发送RPC请求到服务提供方provider,provider根据参数路由到具体函数,方法,并将执行获得的结果返回,至此一次RPC调用完成。

  

  随着业务的发展,大数据时代的到来,服务提供方的压力也日益增大,单机应用的处理能力无论在软件,硬件上都受到限制,provider也不可能一直无限扩容,即使扩容,也存在着很多问题,即服务的路由,和Consumer的负载均衡问题。因此,分布式服务架构应运而生,RPC发展到一定阶段思考的变革,成为了分布式服务,云计算的计算机基础。

二、SOA

  由于简单的RPC调用已经不能随着时代发展满足需求,因此复杂的业务逻辑对于分布式应用架构体系的需求愈发强烈,业务希望自己的服务是分布式部署的,请求是分流的,对数据的操作是能读写分离的,同时能屏蔽许多复杂需要自己编写的底层服务,借助已有的公共服务,去快速的构建自己的应用,降低人力开发维护的成本和提高应用交付的效率,基因此,基于分布式服务思想的SOA(Service-Oriented Architecture)成了新的受追捧的架构。常见的SOA服务调用流程图如下: 

  

三、业界服务治理方案

  业界的互联网巨头公司,都有属于自己的分布式服务框架,如阿里巴巴的Dubbo,HSF,腾讯的Tars,京东的JSF,新浪的Motan,都已经是业界非常成熟的解决方案,其中开源的Dubbo和Motan受到了广大开发者的研究对象。

  纵观这些服务框架,设计的基本思路都如上图,无非涉及provider发布注册,consumer订阅,调用发起,负载均衡,服务分流和监控等模块,并在此基础上增加了很多玩法,形成了各具特色的分布式服务框架设计,下面就Dubbo,JSF,Motan的设计做下简单的介绍。

  (1)Dubbo:下图是Dubbo在服务治理方面的架构设计

  初始化阶段:部署在Container的Provider启动后向服务中心Registry发布并注册自己的服务,客户端Consumer初始化时即向Registry订阅自己想要的服务,同时Registry对Consumer保持着一个长连接,当订阅的服务新增或减少节点时,会及时通知到客户端更新(此过程是异步进行的,不会影响Consumer的主流程),如此一来,客户端Consumer便有了Provider的所有实时信息,便可以发起服务调用了。

  invoke阶段:客户端Consumer从获得的所有Provider列表中通过负载均衡等策略选出最适合调用的服务提供者Provider并发起同步调用。

  Monitor阶段:Consumer和Provider通过异步的方式向监控中心上报自己的需要被监控的数据。

  

  (2)JSF:下图是JSF在服务治理方面的架构设计

  初始化阶段:Provider启动后向服务注册中心发布注册自己的服务

  invoke阶段:与Dubbo不同的是,JSF的注册中心不向Consumer推送Provider实时数据,而是在发起调用时Consumer向注册中心询问并获得对应的Provider,然后组织匹配JSF协议的报文发起调用。

  Monitor阶段:Provider定期向监控中心发送性能统计数据,同时Provider还会上报事件给事件中心。

  

  (3)Motan:Motan是有名的轻量级服务框架,代码质量很高,下图是Motan在服务治理方面的架构设计

  Motan的服务治理设计与Dubbo十分的相似,都是Provider发布注册,Consumer订阅与接受推送,之后发起调用。

  

四、分布式服务框架主要模块名词释义

  无论是那种SOA的架构设计,都离不开几个模块的功能,即Provider,Consumer,Registry,Gateway,负载均衡,服务分流,监控等,通过上述所讲,应该对这些功能模块有了初步的认识,下面就这些名词再作下介绍

    (1)Provider:服务提供者,无论是业务服务,还是一个系统中公用的SAAS,都属于Provider

  (2)Consumer:即发起调用的客户端

  (3)Registry:服务注册中心,是分布式服务系统中的一个重要组成模块,管理Provider的Manager,在实际的运行环境中,服务注册中心Registry被动通知或Consumer主动询问,在Provider有节点宕机或新增节点时,客户端也可实时感知到,从而避免了某个Provider被无限调用或是无限闲置

  (4)Gateway:网关也是分布式服务框架中不可或缺的部分,每种系统与框架都有自己的一套协议,当异构系统互相调用时,网关的作用即显现出来,Gateway接受各种外部HTTP请求,完成相应的权限校验,报文适配,路由转发到对应的Provider,再将Provider返回的结果传递给异构系统的Consumer,完成异构系统的互相调用

  (5)负载均衡,服务分流:Consumer从Registry获得具体的Provider列表后,如何选取合适的Provider,取决与一定的负载均衡算法,常见的算法有轮询法,随机法,源地址哈希,加权轮询,加权随机等

  (6)监控:接收来自Consumer和Provider异步上报的性能监控数据,对有风险的节点发出告警

注:如需删除,请直接留言告知。

分布式服务框架(一)相关推荐

  1. 分布式服务框架 Zookeeper -- 管理分布式环境中的数据

    2019独角兽企业重金招聘Python工程师标准>>> 转自:http://www.ibm.com/developerworks/cn/opensource/os-cn-zookee ...

  2. 分布式服务框架-原理与实践:14---流量控制-学习笔记(理论篇)

    2019独角兽企业重金招聘Python工程师标准>>> 上次学了灰度发布,这次我们学习流控. ============================================ ...

  3. XXL-RPC v1.3.2,分布式服务框架

    Release Notes 1.泛化调用:服务调用方不依赖服务方提供的API: 2.新增通讯方案 "NETTY_HTTP": 3.新增序列化方案 "KRYO": ...

  4. 分布式服务框架 Zookeeper — 管理分布式环境中的数据

    FROM: http://www.superwu.cn/2014/11/26/1461 本节本来是要介绍ZooKeeper的实现原理,但是ZooKeeper的原理比较复杂,它涉及到了paxos算法.Z ...

  5. 阿里分布式服务框架Dubbo的架构总结

    Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合).从服务模型的角度来看,Dubbo采用的是一种非常简单的模 ...

  6. 阿里巴巴分布式服务框架 Dubbo 团队成员梁飞专访

    专家访谈 目录(?)[-] 先来个自我介绍吧! Dubbo是什么?能做什么? Dubbo适用于哪些场景? Dubbo的设计思路是什么? Dubbo的需求和依赖情况? Dubbo的性能如何? 和淘宝HS ...

  7. 分布式服务框架 Zookeeper -- 管理分布式环境中的数据--转载

    原文:http://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/ Zookeeper 分布式服务框架是 Apache Hadoop ...

  8. Dubbo分布式服务框架简介

    概览 Dubbo是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提供3,000,000,000+次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点:        自开源后,已有不 ...

  9. 有问有答 | 分布式服务框架精华问答

    戳蓝字"CSDN云计算"关注我们哦! 随着社会的发展,技术的进步,以前的大型机架构由于高成本.难维护等原因渐渐地变得不再主流,替代它的就是当下最火的分布式架构.要说分布式架构有多重 ...

  10. 分布式服务框架Dubbo使用小结

    介绍: Dubbo是一个被国内很多互联网公司广泛使用的开源分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA 服务治理方案,每天为2,000+个服务提供3,000,000,0 ...

最新文章

  1. python 案例串接_来撸串,一个案例轻松认识Python 字符串——翻转拼接游戏
  2. 使用zlib库进行数据压缩
  3. U3D 动画帧事件问题
  4. 【JS 逆向百例】网洛者反爬练习平台第六题:JS 加密,环境模拟检测
  5. 两种设置安卓背景图片的方法
  6. Mongodb db.serverStatus()所关心的几个输出值
  7. mmp格式转换_mmp是什么意思
  8. 计算机操作系统 (第四版汤小丹老师) 复习笔记完整版——第一章:操作系统引论
  9. Power Query M语言日期时间函数(Date、DateTime、DateTimeZone、Duration)分类汇总,快速掌握
  10. python背单词代码实现
  11. 360全景倒车影像怎么看_360度全景倒车影像真的很有用?水分有多少!
  12. ESP8266深度睡眠计时器唤醒
  13. echarts 3D圆柱形图 实现简单 带图例完美显示隐藏
  14. 智能匹配 — 百度SEM
  15. viewsets.ModelViewSet
  16. 红米8a的android版本是多少,小米Redmi 8A推送最新MIUI 11稳定版 基于安卓10大版本
  17. 安卓四种launchMode的理解
  18. 2023 号码归属地查询API接口PHP源码
  19. # 靠谱:开源IM项目OpenIM压测程序介绍-自己动手压测性能和稳定性
  20. dp主机_一键证件复印 东芝DP-2523A优惠价2500-东芝 DP-2523A_成都复印机行情

热门文章

  1. mysql charindex()_mysql中有没有类似charindex的函数?
  2. 20170609问题记录1
  3. 被“误解”的游戏开发者
  4. HTML---布局(详解)
  5. 智能温室,智慧农业发展大趋势
  6. 什么是ClickHouse?
  7. 如何查看网页的编码格式
  8. Centos安装Steam和安装报错libva-intel-driver
  9. 手机版_仿微信 陌陌 安卓版(android)/苹果版(iPhone ios),移动社交APP系统源码,企业即时通讯APP程序源码,手机聊天软件源码,移动聊天APP开发...
  10. 010:图片类爬虫项目实战