E
E
ericcartman2019-02-03 01:35:49
Spring
ericcartman, 2019-02-03 01:35:49

Is the actor model (AKKA, Vert.X) still relevant, or can you get by with Spring 5/Spring Boot 2 + Kafka?

I develop microservice architectures, I use asynchronous APIs (REST), Message queues, Spring Boot (and its libs)
Of course, I read about reactive programming, as I understand it, this is when the client sends a request, it is accepted, the client continues to do other things, after a while the client receives a response.
The actor model (for example, take AKKA) allows you to implement this architectural pattern. I somehow managed all the time without AKKA and continue to manage with the means described above.
The question is: is AKKA / Vert.X still relevant (I understand that this is a competitor of AKKA, which, in addition, is well integrated with Hazelcast)?
That is, when I directly need to use it and say the reactive tools of Spring 5 / Spring Boot 2, Kafka or RabbitMQ are not an option at all?

Answer the question

In order to leave comments, you need to log in

2 answer(s)
S
Sergey Gornostaev, 2019-02-03
@ericcartman

Spring and Akka solve different problems. There are no barriers to using them together in the same application.
As for an example of when to consider using Akka: Imagine you have an international bank. And the bank has a complex scoring system, consisting of many subsystems. Some subsystems evaluate what, how often and for what amounts the client bought in the past. Others evaluate the sources, amounts and frequency of replenishment of the card. Still others evaluate the availability of property, the amount of taxes and the timeliness of their payment. Fourth, the availability of insurance and the occurrence of insured events. Fifth, the availability of loans in other banks. Etc. etc. Each subsystem eats a bunch of resources in the process of processing one client. Some of them make requests to external services, which may respond slowly or not at all. And it is necessary to process tens of millions of requests per second. Preferably in real time. And in no case do not allow failures. Moreover, the structure of the load is constantly changing. Such a monster can be written using only spring projects, but you will need to provide performance, scaling and fault tolerance. But Akka will make it relatively easy to spread the system over hundreds of servers in several DCs around the world.

E
Elmo Sputterspark, 2019-02-03
@Sputterspark

Every time I read your questions, I immediately remember the saying "I heard a ringing, but I don't know where it is." Each time, unrelated or loosely connected concepts are mixed into a heap, and all this is richly seasoned with sweeping comparisons of soft with warm.
You didn't even get the gist of it .
Reactive programming is a programming paradigm focused on data flow and change propagation.
The actor model is a programming paradigm well suited to the development of concurrent and distributed systems.
They are not even connected to each other. It is possible to develop a reactive program that does not use actors. It is possible to develop a non-reactive program on actors. And of course, you can develop a reactive program on actors.
Yes, it's relevant.
Vert.X is not a competitor to Akka. They are generally a different field of berries. Vert.X is another asynchronous framework. If we compare, then the closest analogue is Spring WebFlux.
This is how you start to distinguish between web application development and distributed systems development, this is how you can think of Akka.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question