java akka_Akka系列(九):Akka分布式之Akka Remote

本文介绍了Akka Remote如何构建分布式应用,对比了RMI和JMS两种Java远程通信方式,并详细展示了Akka Remote的配置与使用,包括发送无返回消息和有返回消息的场景。此外,文章还探讨了Akka的默认序列化策略及其优化,推荐使用Kryo作为替代方案。
摘要由CSDN通过智能技术生成

Akka作为一个天生用于构建分布式应用的工具,当然提供了用于分布式组件即Akka Remote,那么我们就来看看如何用Akka Remote以及Akka Serialization来构建分布式应用。

背景

很多同学在程序的开发中都会遇到一个问题,当业务需求变得越来越复杂,单机服务器已经不足以承载相应的请求的时候,我们都会考虑将服务部署到不同的服务器上,但服务器之间可能需要相互调用,那么系统必须拥有相互通信的接口,用于相应的数据交互,这时候一个好的远程调用方案是一个绝对的利器,主流的远程通信有以下几种选择:

RPC(Remote Procedure Call Protocol)

Web Service

RMI (Remote Method Invocation)

JMS(Java Messaging Service)

这几种方式都是被采用比较广泛的通信方案,有兴趣的同学可以自己去了解一下,这里我会讲一下RMI和JMS。

JAVA远程调用

RMI和JMS相信很多写过Java程序的同学都知道,是Java程序用来远程通信的主要方式,那么RMI和JMS又有什么区别呢?

1.RMI

i.特征:

同步通信:在使用RMI调用远程方法时,线程会持续等待直到结果返回,所以它是一个同步阻塞操作;

强耦合:请求的系统中需要使用的RMI服务进行接口声明,返回的数据类型有一定的约束;

ii.优点:

实现相对简单,方法调用形式通俗易理解,接口声明服务功能清晰。

iii.缺点:

只局限支持JVM平台;

对无法兼容Java语言的其他语言也不适用;

2.JMS

i.特征:

异步通信:JMS发送消息进行通信,在通信过程中,线程不会被阻塞,不必等待请求回应,所以是一个异步操作;

松耦合:不需要接口声明,返回的数据类型可以是各种各样,比如JSON,XML等;

ii.通信方式:

(1)点对点消息传送模型

顾名思义,点对点可以理解为两个服务器的定点通信,发送者和接收者都能明确知道对方是谁,大致模型如下:

d660c04d959cd106def44aec22defa07.gif

(2)发布/订阅消息传递模型

点对点模型有些场景并不是很适用,比如有一台主服务器,它产生一条消息需要让所有的从服务器都能收到,若采用点对点模型的话,那主服务器需要循环发送消息,后续若有新的从服务器增加,还要改主服务器的配置,这样就会导致不必要的麻烦,那么发布/订阅模型是怎么样的呢?其实这种模式跟设计模式中的观察者模式很相似,相信很多同学都很熟悉,它最大的特点就是较松耦合,易扩展等特点,所以发布/订阅模型的大致结构如下:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值