Git Product home page Git Product logo

Comments (4)

gesellix avatar gesellix commented on May 17, 2024 1

If I understand the .NET worker correctly, it tries to reconnect on failure. So a changed ip address might be compensated. The Java worker doesn't seem to be resilient on connection errors, yet.

The fact that a worker can only connect to a single Redis instance indeed arises problems when votes go to the "other" instance. The worker just won't see any votes. I see several options here:

  1. reduce the Redis replicas to a single instance
  2. implement a Redis cluster, so that data will be synced between all replicas
  3. enforce reconnects on the worker side, so that each Redis instance will be read over time. This wouldn't be the most elegant solution, but it has certain adavantages (no-cluster Redis setup, built-in resiliency)
  4. always have a worker for each Redis instance (well, that's probably the worse "solution", enforcing symmetry between services and their replicas)

from example-voting-app.

ManoMarks avatar ManoMarks commented on May 17, 2024 1

Fixed

from example-voting-app.

alexsandro-xpt avatar alexsandro-xpt commented on May 17, 2024

I saw something like this at docker-stack.yml but I have some question about Redis IP used at Worker Services to connect to Redis.

There are twice Redis instance, I thing, Worker never discover a second Redis instance. May be, Redis shoud be configured as node of Redis if is possible.

Another thing is about Redis host name, the Vote App and Worker Services connect at redis host name. If at cluster have twice Redis instance, Vote every time connect to what Redis instance?

Some times when I vote, the vote is not computed, I guess, my vote was at another Redis which is not connected by Worker Services.

What you think about that @zavermax ?

from example-voting-app.

alexsandro-xpt avatar alexsandro-xpt commented on May 17, 2024

@gesellix At my demo enviroment I reduce the Redis replicas to a single instance and all work fine.

But, I guess the better solution is implement a Redis Cluster like you told us.

Another bad thing I see at .NET worker is that while(true) https://github.com/docker/example-voting-app/blob/master/worker/src/Worker/Program.cs#L29 it's cost lot of CPU unnecessary. May be implement something better.

I think change Redis for a RabbitMQ.

from example-voting-app.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.