模拟AkkaRpc

Akka java 入门【二】 Actor详解 Akka是一个基于Actor模型的并发编程框架,它支持三种Actor类型:AbstractActor、UntypedActor和TypedActor。 阅读详情

消息匹配类 

package com.ws.akka

// 启动消息
case object StartOkMsg
// 注册成功消息
case object RegistOkMsg
// 注册信息消息
case class RegistMsg(id: String, memory: Int, core: Int)
// 自己给自己的心跳信息
case object HeartbeatSelfMsg
// 心跳信息
case class HeartbeatMsg(id: String)
// 移出超时的worker信息
case object RemoveErroActorMsg

注册信息类 

package com.ws.akka

class RegistInfo(val id: String, var memory: Int, var core: Int) {
  var hearTime: Long = _
}

worker类 

package com.ws.akka

import java.util.UUID

import akka.actor.{Actor, ActorSelection, ActorSystem, Props}
import com.typesafe.config.ConfigFactory

import scala.concurrent.duration._

class Worker extends Actor {
  val id: String = UUID.randomUUID().toString
  var masterprox: ActorSelection = _

  override def preStart(): Unit = {
    masterprox = context.actorSelection("akka.tcp://MASTER_ACTOR_SYSTEM@localhost:8888/user/MASTER_ACTOR")
    println("WORKER去这里注册了" + "akka.tcp://MASTER_ACTOR_SYSTEM@localhost:8888/user/MASTER_ACTOR")
    masterprox ! RegistMsg(id, 4096, 8)
  }

  override def receive: Receive = {
    case RegistOkMsg =>
      // 注册成功后 向master定时通讯报活
      import context.dispatcher
      context.system.scheduler.schedule(0 millisecond, 5000 millisecond, self, HeartbeatSelfMsg)

    case StartOkMsg => println("WORKER启动完成")

    case HeartbeatSelfMsg =>
      println("Master我还活着")
      masterprox ! HeartbeatMsg(id)
  }
}

object Worker {
  def main(args: Array[String]): Unit = {
    val hostname = "localhost"
    val port = 9999
    val confstr: String =
      s"""
         |akka.actor.provider = "akka.remote.RemoteActorRefProvider"
         |akka.remote.netty.rpc.hostname="$hostname"
         |akka.remote.netty.rpc.port="$port"
         |""".stripMargin

    val conf = ConfigFactory.parseString(confstr)
    val workeractorsystem = ActorSystem("WORKER_ACTOR_SYSTEM", conf)
    val workeractor = workeractorsystem.actorOf(Props[Worker], "WORKER_ACTOR")
    workeractor ! StartOkMsg
  }
}

Master类 

package com.ws.akka

import akka.actor.{Actor, ActorSystem, Props}
import com.typesafe.config.ConfigFactory

import scala.collection.mutable
import scala.concurrent.duration._

class Master extends Actor {
  val registInfo = new  mutable.HashMap[String, RegistInfo]()

  override def preStart(): Unit = {
    import context.dispatcher
    context.system.scheduler.schedule(0 millisecond, 10 * 1000 millisecond, self, RemoveErroActorMsg)
  }

  override def receive: Receive = {
    case RegistMsg(id, memory, core) =>
      registInfo.put(id, new RegistInfo(id, memory, core))
      println("Worker注册成功,ID:" + id + "--->内存:" + memory + "--->cpu核数:" + core)
      sender() ! RegistOkMsg
    case StartOkMsg => println("Master启动完成")
    case HeartbeatMsg(id) =>
      if (registInfo.contains(id)) {
        registInfo(id).hearTime = System.currentTimeMillis()
        println("收到心跳信息")
      }
    case RemoveErroActorMsg =>
      val errs = registInfo.values.filter(System.currentTimeMillis() - _.hearTime > 10000)
      errs.foreach(registInfo -= _.id)
      println("当前worker个数----" + registInfo.size)
  }
}

object Master {
  def main(args: Array[String]): Unit = {
    val hostname = "localhost"
    val port = "8888"
    val confstr: String =
      s"""
         |akka.actor.provider = "akka.remote.RemoteActorRefProvider"
         |akka.remote.netty.tcp.hostname="$hostname"
         |akka.remote.netty.tcp.port="$port"
         |""".stripMargin
    val config = ConfigFactory.parseString(confstr)
    val masteractorsys = ActorSystem("MASTER_ACTOR_SYSTEM", config)
    val mact = masteractorsys.actorOf(Props[Master], "MASTER_ACTOR")
    mact ! StartOkMsg
  }
}
Akka 通信框架在java端项目的安装,环境的准备,简介和入门程序(1) 一 Akka简介 1 akka的定义 Akka是JAVA虚拟机平台上构建高并发、分布式和容错应用的工具包, 是异步、非阻塞、高性能的事件驱动编程模型 /通信框架。Akka用Scala语言编写,同时提供了Scala和Java的开发接口。Akka处理并发的方法基于Actor模型,Actor之间通信的唯一机制就是消息传递。 在Akka中执行单元是Actor ,在Actor模型中并不是通过Actor对象的某个方法来告诉Actor需要做什么,而是给Actor发送一条消息。当一个Actor收到消息后,它... 阅读详情

相关推荐

Akka:Scala与Java的高性能并发框架

本文还有配套的精品资源,点击获取 简介:Akka是一个高性能、容错的并行计算框架,使用Scala编写,通过Actor模型实现分布式计算。其核心概念包括轻量级线程Actor,通过消息传递实现并发,监督和监控机制提供强大的容错能力,Cluster支持真正的分布式计算,而持久化特性确保了数据在系统崩溃后的可恢复性。Akka Streams提供声明式数据流处理,配合Play Fra...

weixin_42515842的博客 2722

Java版Akka-Rpc实现与应用

Akka框架作为Akka是一个以Actor模型为基础构建的基于事件的并发编程框架,由于Akka框架底层使用Scala语言实现,加之存在一些“月经”问题,因此使用JAVA基于Actor模型去现实了一个RPC,从大致上来说,可以将该RPC认为是一个JAVA版的Akka,不过,在实现的过程中一些处理方式又不尽相同。

bossfriday - 个人博客 2399

akka java实现tcp远程调用

akka实例 java实现tcp远程调用,一个服务端,一个客户端

akka for java

akka for java 入门第一步,通过 akka 模拟 flink 的心跳检测

小王是个弟弟 1551

不止于HTTPS请求:用VS2022编译的libcurl玩转文件上传和代理设置

本文详细介绍了如何使用VS2022编译的libcurl库实现文件上传和高级代理配置。通过实战代码示例,展示了多部分表单上传、二进制数据上传以及各种代理设置技巧,帮助C++开发者提升网络编程能力。

weixin_28595749的博客 206

周志华《机器学习》课程系列笔记——目录导航页

最近自学机器学习课程,注意到了南京大学周志华老师的课程。我是在学堂在线平台观看的,注意到b站上也有相应视频,但b站上并未获得授权,随时有消失的可能。周志华老师的网络教学视频中,与其西瓜书相比确实少了一些内容。但幸运的是,缺失的内容实际上对于初学者来说并不会产生太大影响。目前这一笔记也遵循视频内容,相比西瓜书中也会有一些缺失,敬请谅解。可能以后如果有机会和时间,我会再阅读周志华老师的书籍将缺失内容补全。一切内容敬请关注我的个人Page页面。

Sinocifengs的博客 1688

使用Akka构建分布式Java应用程序

它基于Actor模型,提供了高度抽象的并发处理方式,使得开发者能够专注于业务逻辑,而不是底层的线程管理。大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!Akka是一款强大的工具包和运行时,能够简化构建高并发、分布式和容错应用程序的过程。通过使用Akka,我们可以构建高效、可靠的分布式Java应用程序。本文介绍了Akka的基本概念、Actor的定义与通信、以及远程通信的配置。希望通过这些内容,大家能够对Akka有更深入的理解,并能够在实际项目中应用。

技术研究中心 1424

Kali Linux实战:5分钟复现永恒之蓝漏洞攻击(附Win7靶机配置指南)

本文提供了一份详细的Kali Linux实战指南,指导读者在5分钟内于隔离的虚拟环境中复现经典的永恒之蓝漏洞攻击。内容涵盖从Windows 7靶机配置、网络设置,到使用Nmap进行服务发现、利用Metasploit框架进行漏洞扫描与利用的全过程,并演示了基础的Meterpreter后渗透操作,旨在帮助网络安全学习者通过亲手实践深入理解SMB协议漏洞的攻防原理。

weixin_29313547的博客 198

java基础总结(八十五)--Akka框架简介

原文链接 Akka是JAVA虚拟机平台上构建高并发、分布式和容错应用的工具包和运行时。Akka用Scala语言编写,同时提供了Scala和Java的开发接口。Akka处理并发的方法基于Actor模型,Actor之间通信的唯一机制就是消息传递。 Akka特点: 对并发模型进行了更高的抽象 是异步、非阻塞、高性能的事件驱动编程模型 是轻量级事件处理(1GB内存可容纳百万级别个Actor) 它提供了一种称为Actor的并发模型,其粒度比线程更小,你可以在系统中启用大量的Actor。 它提供了一套容错

秋天的猿 2248

SNN目标识别MNIST

总体来说这篇论文提出的方法用了多种更精密的细节,如LIF膜电位公式,三种STDP方法,但我觉得还可以有很大的改进,比如输入层全连接到兴奋层,兴奋层通过抑制层实现的侧向抑制,抑制层不参与学习等等。尤其是兴奋层通过抑制层实现侧向抑制这里,当神经元兴奋时,通过抑制层再倒回兴奋层,所抑制的已经经过一了一段时间的延迟。如有错误,请不吝赐教。

m0_74982304的博客 1263

Cadence psspxf实战:手把手教你仿真250MHz环形VCO的电源抑制比(附Verilog代码)

本文详细介绍了使用Cadence psspxf仿真器对250MHz环形VCO的电源抑制比(PSRR)进行仿真的全流程。从环形VCO的设计原理、Verilog代码实现,到Cadence环境配置、仿真参数设置,再到结果分析与优化技巧,提供了完整的实战指南。特别适合电路设计工程师学习如何评估和优化VCO的抗电源噪声能力。

weixin_42567752的博客 415

java akka 教程_快速入门 Akka Java 指南

快速入门 Akka Java 指南Akka 是一个用于在 JVM 上构建高并发、分布式和容错的事件驱动应用程序的运行时工具包。Akka 既可以用于 Java,也可以用于 Scala。本指南通过描述 Java 版本的Hello World示例来介绍 Akka。如果你喜欢将 Akka 与 Scala 结合使用,请切换到「快速入门 Akka Scala 指南」。Actors 是 Akka 的执行单元。A...

weixin_39881167的博客 997

4路QSFP28接口能玩出什么花样?基于璞致VU13P开发板的100G网络测试方案

本文详细介绍了基于璞致PZ-VU13P-KFB开发板构建100G网络测试方案的实战指南。该方案充分利用板载Xilinx Virtex UltraScale+ FPGA的强大算力与4路QSFP28接口,涵盖从光模块选型、Aurora协议配置、开源Corundum方案部署,到误码率测试及散热优化的全链路流程,为高速网络设备研发与验证提供了可靠的硬件平台。

cola5的博客 454

Akka java 入门【五】[案例] 使用Akka改写程序:计算两个整数的和

在这个程序中,我们创建了一个名为“system”的ActorSystem。然后,我们使用Props.create()方法创建了一个CalculatorActor和一个PrinterActor,并分别命名为“calculatorActor”和“printerActor”。我们将创建一个Actor来计算两个整数的和,并将结果发送给另一个Actor打印输出。接下来,我们需要定义两个消息类型:一个用于传递计算请求,另一个用于传递打印请求。首先,我们需要定义两个Actor:一个用于计算和,另一个用于打印输出。

哈哈哈 544

一文吃透 ABAP CDS SELECT:语法全景、关联与去重、可运行示例与实战心法

摘要: 本文深入解析ABAP中CDS视图的SELECT语法,重点介绍两种等价写法、关联与路径表达式优化、DISTINCT去重逻辑及WHERE/GROUP BY/HAVING/UNION等子句的应用。通过可运行的业务伙伴角色去重、关联路径查询及多角色筛选示例,演示如何将CDS特性转化为项目实践。强调关联复用性优于传统JOIN,并指出DISTINCT的权限边界与误用场景,帮助开发者从行式思维转向图式数据建模。(150字) 关键词: ABAP CDS、SELECT语法、路径表达式、DISTINCT去重、关联复用

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 395

【实战】基于 Inner-IoU 的 YOLOv8 优化指南:显著提升检测精度

Inner-IoU 凭借辅助边框的创新设计,成功解决了传统 IoU 损失在小目标、遮挡场景下的收敛难题,为 YOLOv8 注入了更强的定位能力。从原理剖析到代码集成,本教程已为你铺就了一条“精度提升”的实战路径。现在,不妨亲自上手尝试,让你的目标检测模型在各类数据集上都能交出一份“精度优异”的答卷——相信我,当你看到检测框精准贴合目标的那一刻,你会明白这份尝试的价值。

m0_64661770的博客 108

java akka 教程_Akka与并发编程模型

Akka是一种并发编程模型的框架,其官网为http://akka.io。提供Java版本和Scala版本的API。从学习或者使用的角度来说,我们首先要说明的是,Akka的并发编程模型(流水线模式)与Java中的并发编程模型(并行者模式)有什么区别。1、Java中的并行工作者模式并行工作者模型。传入的作业会被分配到不同的工作者上。下图展示了并行工作者模型:在并行工作者模型中,委派者(Delegato...

weixin_42489252的博客 1354

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Akka in JAVA(二)

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33971977的博客 425

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Akka学习指南(Java版)——构建分布式系统

Akka学习教程

IT- 研究者 1287

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

在Java8中使用Akka

提示:首先,让我们了解一些概念。在Akka中,actor是最基本的执行单位,它是一种轻量级的进程,具有独立的状态和行为。每个actor都有一个地址,可以通过该地址与其他actor进行通信。消息是与actor之间传递的唯一方式,每个actor都有一个邮箱,用于接收消息。每个actor都有自己的线程,可以并发地执行代码。最后,让我们总结一下。在本文中,我们介绍了如何在Java8中使用Akka,并提供了示例代码帮助您更好地理解。通过Akka,我们可以轻松地构建分布式、高可用、高可伸缩性的应用程序。

wcuu的博客 1295

Akka java 入门【一】 基本概念和应用领域

Akka是一个基于Actor模型的并发编程框架,提供了高性能、高可靠性的分布式系统开发支持。下面我们来详细介绍一下Akka的特点和用法。

哈哈哈 1345

Java中的响应式编程与Akka

Akka是一款基于Actor模型的工具包和运行时库,专为构建高并发、分布式和容错应用而设计。通过Actor来封装状态和行为,简化并发编程。通过透明的分布式消息传递机制,轻松扩展应用。通过Supervisor策略实现故障隔离和恢复。与Scala和Java语言紧密集成。响应式编程为我们提供了一种处理复杂系统交互的强大工具。Akka框架通过Actor模型,实现了高可扩展性、弹性和容错性,使得构建高并发、分布式应用变得更加容易。

weixin_53840353的博客 1260

高性能并发模型AKKA架构原理详解

Actor 模型是一种消息驱动的并发模型。唯一地址(ActorRef)私有状态收到消息时的行为Actor 之间通过异步消息传递,无需共享内存,天然避免了线程安全问题。Akka 通过 Actor 模型实现了高效的并发和分布式系统开发,核心架构由 ActorSystem、Actor、Mailbox、Dispatcher 等组成。它通过消息驱动、监督策略、分布式能力,为现代高并发应用提供了强大支撑。

onlymscn的博客 1122

Java集成Akka入门和使用

针对Akka的介绍我就不再啰嗦了,这篇文章主要是介绍一下Java中使用Akka。 因为Akka是Scala语言开发的,我在百度上很多文章都没说怎么用,我这边详细多写了几个Demo,都是本人亲测,绝对好使(鄙视那些网上粘来粘去不自己试试的人)。 简单使用 (A 发消息给 B) 第一步 引入pom.xml依赖 <dependency> <groupId>com.typesafe.akka</groupId> <artifactId>akka-act

铁蛋的博客 1915

从线程地狱到演员宇宙:Java高并发编程的Akka实践指南

线程管理复杂:Java的ThreadRunnable需要手动管理线程生命周期,线程数过多易导致OOM(如10万并发连接需要10万线程)共享状态风险Lock虽能保证互斥,但会引发死锁、性能下降(锁竞争)分布式协作困难:传统RPC框架(如Dubbo)需手动处理节点发现、故障重试、负载均衡弹性扩展乏力:水平扩展时,状态同步和负载均衡需复杂的业务逻辑支持// 订单消息(不可变,用final类+final字段)// 处理成功的响应消息// 处理失败的异常消息。

yue_yun_的博客 806

java 协程 实现 Akka

Akka是开源的,可以通过Apache 2许可获得。可以从 http://akka.io/downloads/ 下载。 Akka实现了独特的混合模型 Actors Actors为你提供:         对并发/并行程序的简单的、高级别的抽象。         异步、非阻塞、高性能的事件驱动编程模型。         非常轻量的事件驱动处理(1G内存可容纳约270万个actors)。 容错性 ...

xiaomin1991222的专栏 286
上一篇: scala总结n
下一篇: Scala隐式转换
JNWsong
博客等级 码龄9年 287粉丝 204原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值