akka

JAVA各种OOM代码样例及解决方法

∥☆過路亽.° 提交于 2020-08-13 03:18:47
  周末了,觉得我还有很多作业没有写,针对目前大家对OOM的类型不太熟悉,那么我们来总结一下各种OOM出现的情况以及解决方法。   我们把各种OOM的情况列出来,然后逐一进行代码编写复现和提供解决方法。   1. 堆溢出-java.lang.OutOfMemoryError: Java heap space。   2. 栈溢出-java.lang.OutOfMemorryError。   3. 栈溢出-java.lang.StackOverFlowError。   4. 元信息溢出-java.lang.OutOfMemoryError: Metaspace。   5. 直接内存溢出-java.lang.OutOfMemoryError: Direct buffer memory。   6. GC超限-java.lang.OutOfMemoryError: GC overhead limit exceeded。   第一种,堆溢出异常,相信大家很常见。即堆内对象不能进行回收了,堆内存持续增大,这样达到了堆内存的最大值,数据满了,所以就出来了。我们直接放溢出的代码样例。我们需要设置好idea的VM Options: -Xmx100m,这样我们设置为最大堆内存,这样运行起来就很快就出来错误了。 package oom; import java.util.ArrayList; import

How does Akka Stream's Keep right/left/both result in a different output?

廉价感情. 提交于 2020-08-10 20:20:26
问题 I am trying to wrap my head around how Keep works in Akka streams. Reading answers in What does Keep in akka stream mean, I understand that it helps to control we get the result from the left/right/both sides of the materializer. However, I still can't build an example were I can change the value of left/right and get different results. For example, implicit val system: ActorSystem = ActorSystem("Playground") implicit val materializer: ActorMaterializer = ActorMaterializer() val

让阿里P8都为之着迷的分布式核心原理解析到底讲了啥?看完我惊了

拟墨画扇 提交于 2020-08-08 23:50:10
领取本文资料直接扫码免费领取 这个人人都喊着“高并发”“高可用”的时代里,分布式系统的重要性不言而喻。从整个行业的招聘趋势就能看出来,大型互联网公司在招聘后端工程师的时候,都会要求候选人有分布式相关的工作经验。与其直接用些抽象、晦涩的技术名词去给分布式下一个定义,还不如从理解分布式的发展驱动因素开始,我们一起去探寻它的本质,自然而然地也就清楚它的定义了。 在今天这篇文章中,我将带你了解分布式的起源,是如何从单台计算机发展到分布式的,进而帮助你深入理解什么是分布式。为了方便你更好地理解这个演进过程,我将不考虑多核、多处理器的情况,假定每台计算机都是单核、单处理器的。 说明:完整的《分布式核心原理解析》学习文档篇幅较长,共有330页,这里限于篇幅,故只展示一部分的文档,有需要这份学习文档的朋友麻烦帮忙转发+转发+转发一下,然后再私信我【学习】即可免费获取这份《分布式核心原理解析》学习文档。 前言 一,分布式何而起 分布式起源 单兵模式:单机模式 游击队模式:数据并行或数据分布式 集团军模式:任务并行或任务分布式 分布式是什么? 总结 二,分布式系统的指标 分布式系统的指标 性能(Per formance) 资源占用(Resource Usage) 可用性( Availability) 可扩展性(Sealabi1ity) 不同场景下分布式系统的指标 总结与思考 三,分布式协调与同步

简单使用java instrument包

蹲街弑〆低调 提交于 2020-08-06 20:36:02
解释: ClassFileTransformer接口,定义一个类文件转换器。接口中的transform()方法会在类文件被加载时调用,而在transform方法里,我们可以利用上文中的ASM或Javassist对传入的字节码进行改写或替换,生成新的字节码数组后返回。 在jar包前加 java -javaagent:{agent路径}/agent.jar -jar xxx.jar 例如我们想获取akka.http.scaladsl.server.RequestContextImpl类的这个属性request的默认值 项目结构: 代码: maven3.5.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.zxing</groupId>

mysql亿级数据数据库优化方案测试-银行交易流水记录的查询

杀马特。学长 韩版系。学妹 提交于 2020-08-04 10:55:56
对MySQL的性能和亿级数据的处理方法思考,以及分库分表到底该如何做,在什么场景比较合适? 比如银行交易流水记录的查询 限盐少许,上实际实验过程,以下是在实验的过程中做一些操作,以及踩过的一些坑,我觉得坑对于读者来讲是非常有用的。 首先: 建立一个现金流量表,交易历史是各个金融体系下使用率最高,历史存留数据量最大的数据类型。现金流量表的数据搜索,可以根据时间范围,和个人,以及金额进行搜索。 -- 建立一张 现金流量表 DROP TABLE IF EXISTS `yun_cashflow`; CREATE TABLE `yun_cashflow` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `userid` int(11) DEFAULT NULL, `type` int(11) DEFAULT NULL COMMENT '1、入账,2提现', `operatoruserid` int(11) DEFAULT NULL COMMENT '操作员ID', `withdrawdepositid` bigint(20) DEFAULT NULL COMMENT '提现ID', `money` double DEFAULT NULL COMMENT '钱数', `runid` bigint(20) DEFAULT NULL COMMENT '工单ID

What is the difference between TPL dataflow and Akka.net?

馋奶兔 提交于 2020-08-04 03:25:21
问题 I have worked with TPL dataflow. Really liked it. I had heard the term Akka many times from my java/scala friends so I tried to read about it and found out that akka has a .net port too. Great. When I continued reading about what akka is, I was surprised to see that it sounds exactly like TPL dataflow. So coming to my question, what is the difference between TPL dataflow and Akka.net ? When to chose what ? 回答1: Akka is an actor based model, and so is TPL Dataflow. As the latter is described

微服务设计 10 大反模式和陷阱!

故事扮演 提交于 2020-07-28 17:11:50
作者:飒然Hang rowkey.me/blog/2018/06/02/microservice-pitfall/ O’Reilly的电子书《Microservices AntiPatterns and Pitfalls》讲述了在微服务设计实现时十种最常见的反模式和陷阱。本文基于此书,将这十个点列出。 数据驱动迁移反模式(Data-Driven Migration) 如上图所示,此种反模式的问题在于微服务的粒度没有最终确定之前就做了数据迁移,如此当不断的调整服务粒度时,那么数据库就免不了频繁迁移,带来极大的成本。更好的方式如下图所示: 即先分离功能,数据库先保持之前的单体,等到服务粒度最终确定之后,再分离数据库。 前后端分离与不分离的本质区别 ,推荐看下。 超时反模式(The Timeout) 微服务架构是由一系列分离的服务组成的,这些服务之间通过一些远程协议进行互相之间的通信。其中牵扯到了服务的可用性和响应性问题。如下图所示: 可用性:服务消费方能够连接服务方,并可以向其发送请求。 响应性:服务方能够在消费方期望时间内给予请求响应。 为了防止服务的不可用和无法响应,通常的做法就是设置一个调用超时。此种做法表面上看是没问题的,但是试想一下如下情景:发起一个购买100个商品的请求,请求成功返回一个确认号。如果当请求超时但是请求在服务端已经成功执行了,此时这个交易实际是完成的

Flink 重启策略

元气小坏坏 提交于 2020-07-24 07:17:03
参考文章: Flink 重启策略 Flink重启策略官网介绍 Flink支持不同的重启策略,可以控制在发生故障时如何重新启动作业。可以使用默认重新启动策略启动集群,该策略在未定义任何特定于作业的重新启动策略时始终使用。如果使用重新启动策略提交作业,此策略将覆盖群集的默认设置。 重启(Restart Strategies)策略种类: 固定延迟重启策略(Fixed Delay Restart Strategy) 故障率重启策略(Failure Rate Restart Strategy) 没有重启策略(No Restart Strategy) 后背重启策略(Fallback Restart Strategy) 默认重启策略是通过Flink的配置文件设置的flink-conf.yaml, 定义策略的配置key为: restart-strategy。 如果未启用检查点,则使用“无重启”策略。如果激活了检查点但未配置重启策略,则使用“固定延迟策略”尝试重启: restart-strategy.fixed-delay. attempts: Integer.MAX_VALUE 请参阅以下可用的重新启动策略列表。 Restart Strategy Value for restart-strategy Fixed delay fixed-delay Failure rate failure-rate

is it ever ok to dispatch a child actor directly or must all messages be passed from the root actor down in Akka?

核能气质少年 提交于 2020-07-23 07:49:14
问题 While working on the Akka tutorial, I was wondering in a scenario where I have the ActorSystem reference live in the application, I can dispatch messages directly to a child actor like /user/a in the diagram below or must all messages that need to go to that child be passed down from /user and from / to /user . I ask because in the tutorial, the IotSupervisor extends AbstractBehavior<Void> and I imagine that that would need to be changed to extending AbstractBehavior<DeviceManager.Command> .

is it ever ok to dispatch a child actor directly or must all messages be passed from the root actor down in Akka?

家住魔仙堡 提交于 2020-07-23 07:48:45
问题 While working on the Akka tutorial, I was wondering in a scenario where I have the ActorSystem reference live in the application, I can dispatch messages directly to a child actor like /user/a in the diagram below or must all messages that need to go to that child be passed down from /user and from / to /user . I ask because in the tutorial, the IotSupervisor extends AbstractBehavior<Void> and I imagine that that would need to be changed to extending AbstractBehavior<DeviceManager.Command> .