llebj / orleans-on-containers Goto Github PK
View Code? Open in Web Editor NEWThis is a simple demonstration of running Microsoft Orleans in containers
License: MIT License
This is a simple demonstration of running Microsoft Orleans in containers
License: MIT License
Currently when a client starts, it automatically attempts to join a chat called 'test'. There is no way for a user to choose to join a different chat, or to leave that chat and then join a second one.
When the client application starts a user should be prompted for the name of the chat that they would like to join. When a user leaves a chat they should then be returned to the 'lobby' where they have the option to either join another chat or to terminate the application. Additionally, when a user either joins or leaves a chat, a message should be sent to all other connected clients notifying them of the event.
Both the Silo and the Client support using Postgres as an Orleans clustering provider, requiring a connection string to access the database. Currently the only way to provide this connection string when running in Docker is by using environment variables, which is not an appropriate way of handling a secret, such as a connection string.
Support reading the connection string out of a mounted Docker secret file. The file path will be provided to an application through an environment variable and then the connection string will be read from that file.
When the client application is running as a Docker container and a signal is sent to stop the container (either by using the CLI or Docker Desktop), the application does not terminate gracefully. Instead, it returns a 137 exit code after the timeout period expires.
docker compose up -d
from the directory containing compose.yaml.docker compose down
from the same directory.docker container ls -a
will show the container exited with a 137 status code.This issue is caused by a call to Console.ReadKey()
in src/OrleansOnContainers/Client/Services/ChatHostedService.cs. This call is blocking and stops the application from being able to respond to the shutdown signal.
Currently the console client application connects directly to the orleans silo. There are a number of issues with this architecture:
Introducing frontend web servers that sit between the silo backend and the console clients has the potential to greatly improve the security and scalablility of the system. A web API can be used to ensure that only authenticated users can join a chat, while a separate web server dedicated to handling SignalR connections will ensure that persistent web socket connections do not impact the performance of the web API. These two web servers will protect both the silo server and the database from unsecure direct access. Using web servers also greatly increases the number of supported client connections before database connection limits become an issue.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.