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: 调度中心基于访问压力自动增减服务提供者。

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 漫画自动下载工具。

    漫画自动下载工具。

    2021年9月17日
    44
  • java高级工程师面试情景题_Java高级工程师面试题III

    java高级工程师面试情景题_Java高级工程师面试题III今天依然讲解Java高级题型面试试题与答案解析。shorts1=1;s1=s1+1;有错吗?shorts1=1;s1+=1;有错吗?对于shorts1=1;s1=s1+1;由于1是int类型,因此s1+1运算结果也是int型,需要强制转换类型才能赋值给short型。而shorts1=1;s1+=1;可以正确编译,因为s1+=1;相当于s1…

    2022年5月25日
    25
  • 使用多重循环打印平行四边形「建议收藏」

    packagecom.qfedu.test1;/*** 使用多重循环打印平行四边形* 当我们打印三角形的时候:* 1.观察第一行符号的个数,第一行符号的个数决定了循环计数器的初始值* 2.观察形状符号的个数是越来越多的话就++越来越少就–* 3.当计数器变化为++的时候判断条件一定要小于或者小于等于某个值相当于设定一个上限* 4.当计数器变化为–的时候判断条件一定要大于或者大于等于某个值相当于设定一个下限*/publicclassT

    2022年4月7日
    73
  • 经典手眼标定算法之Tsai-Lenz的OpenCV实现

    经典手眼标定算法之Tsai-Lenz的OpenCV实现本文主要是讲解经典手眼标定问题中的TSAI-LENZ文献方法,参考文献为“ANewTechniqueforFullyAutonomousandEfficient3DRoboticsHand/EyeCalibration”,并且实现了基于OpenCV的C++代码程序,code可去CSDN资源下载。

    2022年6月11日
    31
  • 关于putty连接服务器提示server unexpectedly closed connection解决方法「建议收藏」

    关于putty连接服务器提示server unexpectedly closed connection解决方法「建议收藏」1.今日在对服务器进巡检时,发现无法使用putty连接到服务器,提示错误serverunexpectedlyclosedconnection。之前在连接服务器的时候也没遇到这样的情况,遂在网上进

    2022年7月2日
    63
  • Chrome您的连接不是私密连接解决办法–一个比较实用的技巧分享[通俗易懂]

    Chrome您的连接不是私密连接解决办法–一个比较实用的技巧分享[通俗易懂]问题:运行项目在Chrome中打开出现以下问题您的连接不是私密连接攻击者可能会试图从x.x.x.x窃取您的信息(例如:密码、通讯内容或信用卡信息)。了解详情NET::ERR_CERT_INVALID将您访问的部分网页的网址、有限的系统信息以及部分网页内容发送给Google,以帮助我们提升Chrome的安全性。隐私权政策x.x.x.x通常会使用加密技术来保护您的信息。GoogleChrome此次尝试连接到x.x.x.x时,此网站发回了异常的错误凭据。这可能是因为有攻击者在试图

    2022年5月2日
    164

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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