Tag: akka集群

在ElasticBeanstalk中的Docker中的Akka集群

我试图在Docker中设置一个Akka集群,在ElasticBeanstalk中。 节点之间必须如此沟通: +——————————————————-+ | ElasticBeanstalk/ECS | | | | +———————-+ +———————-+ | | | EC2 | | EC2 | | | | | | | | | | +——————+ | | +——————+ | | | | | Docker | | | | Docker | | | | | | | | | | | | […]

在AWS EBS microservice docker环境中使用Kafka,以避免丢失用户请求并处理更多并发点击

目前,我正在使用AWS EBS微服务docker环境来部署在Scala和Akka中编写的微服务。 如果微服务docker的任何人崩溃,并重新启动。 在这种情况下,我们将失去用户的请求,服务将不会返回这些情况下的任何回应。 我目前的架构可以处理高达1000个并发请求,没有任何问题。 为了避免这个问题,我打算使用Kafka存储和检索所有请求和响应。 所以我想使用Kafka来pipe理我的所有Web服务的请求和响应,并包含一个单独的服务或Web套接字来处理所有请求,并将响应再次存储到Kafka。 在这种情况下,如果我的核心进程泊坞窗崩溃或重新启动。 在任何时候都不会失去任何要求和回应。 它将再次开始阅读卡夫卡的请求并处理它。 所有的Web服务都会将请求存储在Kafka的相关主题中,并获得相关响应主题的响应并返回到API响应。 我发现以下库在Scala Web服务中使用Kafka。 https://github.com/akka/reactive-kafka/ 请检查附加的架构图,我将使用它来有效地处理来自客户端应用程序的大量并发请求。 这是一个好方法吗? 我需要改变我的架构中的任何东西吗? 在对Kafka和微服务端口进行了更多的研究之后,我创build了这个架构。 请让我知道这个架构是否有问题。

在docker实例上使用akka与动脉远程处理的错误

首先,对不起我的英文。 谷歌翻译帮助我很多,哈哈。 我的问题是这样的: 我有两个使用akka和java开发的示例项目:example-remote-client.jar和example-remote-server.jar 我正在使用动脉序列化,和我试图通过akka远程发送消息从客户端到服务器。 这样做的客户端演员是: public class ClientActor extends AbstractActor { public static Props props() { return Props.create(ClientActor.class); } public ClientActor() { ActorSelection selection = getContext().system().actorSelection("akka://server@localhost:5001/user/server-process"); selection.tell(new MessageRequest(), getSelf()); } public Receive createReceive() { return receiveBuilder().match(MessageResponse.class, msg -> { System.out.println(msg.getMessage()); }).build(); } } 我的客户端configuration: akka { loglevel = "DEBUG" actor { provider = remote […]

Akka 2.5分布式数据在Docker + Alpine Linux上

在将使用Akka + Akka集群分片的服务升级到新发布的Akka(2.5.0)之后,我们开始遇到在Docker + Alpine Linux中启动系统的问题。 从我可以推断,Akka集群分片被configuration为使用Akka分布式数据(这不是实验了2.5.0),并且它使用LMDB(这需要GCC + glibc,而不是在Alpine Linux中可用)。 我的问题如下: 1)是否有任何标准的select支持Akka而不是LMDB? 2)有没有办法让LMDB在Alpine Linux上工作? 堆栈跟踪: [ERROR] [04/20/2017 13:42:19.014] [lotus-akka.actor.default-dispatcher-5] [akka://lotus/system/sharding/replicator/durableStore] Error relocating /tmp/lmdbjava-native-library-5972006786989102785.so: __fprintf_chk: symbol not found akka.actor.ActorInitializationException: akka://lotus/system/sharding/replicator/durableStore: exception during creation at akka.actor.ActorInitializationException$.apply(Actor.scala:191) at akka.actor.ActorCell.create(ActorCell.scala:600) at akka.actor.ActorCell.invokeAll$1(ActorCell.scala:454) at akka.actor.ActorCell.systemInvoke(ActorCell.scala:476) at akka.dispatch.Mailbox.processAllSystemMessages(Mailbox.scala:282) at akka.dispatch.Mailbox.run(Mailbox.scala:223) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Caused by: java.lang.reflect.InvocationTargetException at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native […]

无法连接到cassandra群集,但可以连接到单个节点?

在尝试将外部Play应用程序连接到cassandra群集(在mesos上运行在docker容器上)时,我正面临着一些奇怪的情况。 问题是: 如果我只有一个Cassandra节点,我可以从Play应用程序正确连接到它。 但是,如果我添加第二个节点,我不能连接到任何节点了。 我正在把节点如下所示: 第一个节点(SEED) { "id": "cassandra-seed", "constraints": [["hostname", "CLUSTER", "docker-sl-vm"]], "container": { "type": "DOCKER", "docker": { "image": "cassandra:latest", "network": "BRIDGE", "portMappings": [ {"containerPort": 9042,"protocol": "tcp"} ] } }, "env": { "CASSANDRA_SEED_COUNT": "1" }, "cpus": 0.5, "mem": 512.0, "instances": 1, "backoffSeconds": 1, "backoffFactor": 1.15, "maxLaunchDelaySeconds": 3600 } 在这一点上,我能够连接好玩的应用程序和卡桑德拉种子。 CASSANDRA NODE2 { "id": "cassandra", […]

具有绑定端口和绑定主机名的Akka集群

按照Akka FAQ的规定,在application.conf中configurationbind-hostname和bind-port后,启动集群,我收到一个错误消息: [ERROR] [07/09/2015 19:54:24.132] [default-akka.remote.default-remote-dispatcher-20] [akka.tcp://default@54.175.105.30:2552/system/endpointManager/reliableEndpointWriter-akka.tcp%3A%2F%2Fdefault%4054.175.105.30%3A2552-757/endpointWriter] dropping message [class akka.actor.ActorSelectionMessage] for non-local recipient[Actor[akka.tcp://default@54.175.105.30:32810/]] arriving at [akka.tcp://default@54.175.105.30:32810] inbound addresses are [akka.tcp://default@54.175.105.30:2552] 这似乎是说演员已经收到一个消息32810(外部端口),但由于内部端口(2552)不匹配而丢弃。 该文件的相关部分是: hostname = 54.175.105.30 port = 32810 bind-hostname = 172.17.0.44 bind-port = 2552 我已经在2.4-M1,2.4-M2和2.4-SNAPSHOT上试过了,所有的效果都一样。 有没有其他人遇到过这个? 有什么build议么? 编辑:这个演员系统在docker集装箱的ECS中运行。 docker容器configuration设置为从容器的专用IP上的临时范围转发到2552。 ECS正在成功将hostname:port映射到bind-hosname:bind-port。 参与者正在成功运行并绑定到本地绑定主机名和绑定端口,但正在丢弃消息并发出上述错误。

自动化微服务负载平衡/缩放

现在读几天微服务,我想知道人们如何去实现负载均衡自动化和扩展这些东西? 我有一个特定的想法,我想实现,但不知道是否有可能,或者我正在考虑错误。 所以在这里呢… 假设我有一个名为A,B和C的3个CoreOS机器集群 首先我想要的是透明部署,我可以使用舰队。 然后,我想要检测,当其中一个服务负载巨大,部署另一个实例,并部署了一个和第一个,自动负载平衡的方式,不会中断其他服务正在使用它(stream量从现在起经过负载平衡器)。 另一种方式可能是我手动部署服务的其他版本,然后自动进行负载平衡,并将stream量路由器传输到负载平衡器。 那么最后一个问题,这和Akka集群有什么不同呢?这些与微服务有什么不同呢?

docker中的akka​​节点明确解除关联

我在我的项目中使用akka 2.4-M2。 我想用docker部署我的项目。 但是,当我使用boot2docker来testing这两个节点时,出现了一个问题。 我的节点无法连接到种子节点。 build.sbt中的configuration如下: lazy val `topGatewayFrontend` = (project in file("topGatewayFrontend")) .enablePlugins(PlayScala) .enablePlugins(DockerPlugin) .settings( name := "topGatewayFrontend", libraryDependencies ++= (Dependencies.topGatewayFrontend ++ Seq(cache, ws)), dockerExposedPorts := Seq(9000) ) lazy val `topGatewayBackend` = (project in file("topGatewayBackend")) .enablePlugins(JavaAppPackaging) .enablePlugins(DockerPlugin) .enablePlugins(UniversalPlugin) .settings( name := "topGatewayBackend", javaOptions in run ++= Seq( "-Djava.library.path=./sigar", "-Xms128m", "-Xmx512m"), // this enables custom […]