java rmi与dubbo

java rmi与dubbo首先得知道什么是分布式,以及和集群的区别?分布式:一个业务分拆成多个子业务,部署在不同的服务器上,多半是为了业务解耦,不同的业务可以分别部署,互不干扰,只在需要时相互调用,提升效率。集群:同一个业务,部署在多个服务器上,多半是为了解决高并发,高访问量,提高系统性能。RMIRMI(RemoteMethodInvocation)即远程方法调用,是java在JDK1.1中实现的一…

大家好,又见面了,我是你们的朋友全栈君。

首先得知道什么是分布式,以及和集群的区别?
分布式:一个业务分拆成多个子业务,部署在不同的服务器上,多半是为了业务解耦,不同的业务可以分别部署,互不干扰,只在需要时相互调用,提升效率。
集群:同一个业务,部署在多个服务器上,多半是为了解决高并发,高访问量,提高系统性能。
##RMI
RMI(Remote Method Invocation)即远程方法调用,是java在JDK1.1中实现的一组用于开发分布式应用程序的API,它大大增强了Java开发分布式应用的能力。
(RMI的具体用法这里不说了,在我另一篇文章中已经有讲解了)
知道了分布式,就知道RMI到底用来干嘛的了,就是用来让不同业务的子系统之间进行服务调用,例如A系统要调用B系统的某个方法,就可以用RMI实现。
但是RMI本身并没有集群的功能,就是同一个业务部署了多台服务器,他只会根据你配置的ip地址,端口去调用其中一台,不会去调用另外的,所以,
怎么去有规则的调用另外的服务器就是负载均衡的工作了,这需要你自己实现。
总结:RMI能实现分布式服务,但单凭他自己不支持集群。

当你的系统需要集群时,远程服务调用就不能用RMI了,他已经不在满足需求,除非你自己在他的基础上继续完善,使之起码可以完成负载均衡的工作,才能开始适应集群环境。
但这是比较麻烦的事情,有没有现有的框架可以代替呢,dubbo就是一个很好的选择!
##Dubbo
DUBBO是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提供3,000,000,000+次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。

先来了解一下随着互联网的发展,应用架构的产生的变化:
##单一应用架构
当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。
此时,用于简化增删改查工作量的 数据访问框架(ORM) 是关键。
##垂直应用架构
当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率。
此时,用于加速前端页面开发的 Web框架(MVC) 是关键。
##分布式服务架构
当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。
此时,用于提高业务复用及整合的 分布式服务框架(RPC) 是关键。
##流动计算架构
当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。
此时,用于提高机器利用率的 资源调度和治理中心(SOA) 是关键。

通过上面的了解,我们知道了应用架构的发展变化:
就一个应用 -> 多个应用共同工作,但互不联系 -> 多个应用具有不同功能,相互协作,共同完成工作的分布式架构 -> 同一个功能也有多台服务器,集群部署后实时管理,均衡地调用各服务的流动计算分布式架构
显然之前介绍的RMI就是第三个(分布式服务架构),而dubbo就是目前最前沿的流动计算架构,他通过自己的调度中心根据监控中心提供的访问压力可以实时告诉服务消费方到底调用哪一个服务提供方的服务。
dubbo的主要节点角色:
Provider: 暴露服务的服务提供方。
Consumer: 调用远程服务的服务消费方。
Registry: 服务注册与发现的注册中心。
Monitor: 统计服务的调用次调和调用时间的监控中心。
Scheduler: 调度中心基于访问压力自动增减服务提供者。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/149295.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Debug | ERROR: Could not install packages due to an OSError: [WinError 5] 拒绝访问。

    Debug | ERROR: Could not install packages due to an OSError: [WinError 5] 拒绝访问。在安装pipinstalljupyterthemes时遇到了无法快乐pip的情况:报错信息ERROR:CouldnotinstallpackagesduetoanOSError:[WinError5]拒绝访问。:’C:\\Users\\…\\AppData\\Local\\Temp\\pip-uninstall-xq6nqdvs\\jupyter-notebook.exe’Considerusingthe–useroptionorchecktheper

  • CSDN 2018博客之星评选,感谢大家的投票

    那些曾走过的路,看过的风景!2018博客之星评选,我在CSDN三年了,虽然没成为大神,大佬,但是这一路上一直在坚持,在进步, 感谢大家一路对我的支持和鼓励,虽然2018年这一年过的比较压抑,但是我期待2019。2019我会好好调整自己,输出更多好的内容!谢谢你为我投票! 2019祝你我 有酒,有肉 ,有故事! 我的投票专属地址 : 点我投票 #70 ,谢谢感谢 2018 那些走…

  • 微服务架构基础之API网关

    微服务架构基础之API网关

  • 计算机二级公共基础知识点整理

    计算机二级公共基础知识点整理1流程图箭头表示控制流 2结构化程序设计:自顶向下,逐步求精,模块化,限制使用goto语句 3堆排序O(nlog2n)比较次数最少,其他都是n(n-1)2 4栈先进先出的原则 5E-R图转换关系模型是逻辑设计阶段6ASII码为7位,所有大写ASII码都小于小写字母 7系统总线包括数据总线,控制总线和地址总线 8存储在RAM中的数

  • 网络层传输层(计算机网络传输层大题)

    概述传输层的意义网络层可以把数据从一个主机传送到另一个主机,但是没有和进程建立联系。传输层就是讲进程和收到的数据联系到一起,使数据能够为应用服务所以说传输层是主机才有的层次传输层的两个协议传输层的寻址和端口端口号只用于计算机分辨本地进程,总共有2^16=65536种端口号,端口号有很多种,不能随便使用常见的应用程序端口号UDP协议UDP概述注释:因为UDP一次发送一个完整报文不会分片,所以需要应用层传输过来的数据不要太大,否则网络层分片任务就很重,但是也不能太小,不然效率较低

  • java实现在线预览–poi实现word、excel、ppt转html

    java实现在线预览–poi实现word、excel、ppt转htmljava实现在线预览–之poi实现word、excel、ppt转html

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号