Comments (6)
created a new branch "feature/datalayer_lease" for this feature.
from knix.
It's not a lease, because that would imply the local data layer [cache] has a temporal ownership of the global data, which it doesn't - any other local data layer can write the same identifier to the global backend, which renders the local cache content invalid. It's an expiration timer typically labelled TTL.
from knix.
As an alternative to the above solution, one could utilize Redis as a caching layer in front of Riak. See https://riak.com/products/riak-kv/redis-integration/index.html.
In this alternative, the DataLayerService would become a translation layer for storage operations:
- If the operation is a KV operation, then the DataLayerService will redirect it to Redis (which has its own synchronization with Riak).
- If the operation is a CRDT operation, then the DataLayerService will redirect it to Riak.
- Other operations related to other features (e.g., triggerable tables) need to be figured out, but will most likely use a combination of Redis and Riak.
As a result of these modifications, the DataLayerService will not cache anything; thus, offloading cache-related problems like invalidation to Redis. Furthermore, its logic will be simplified, so that it can become part of each sandbox. As an implementation optimization regarding JVMs, it can be merged with the queue service.
@ruichuan, @paarijaat: Did I miss anything?
from knix.
As far as I can tell, the data layer service is only used by sandboxes (including management) and the storage frontend, which is going to be removed (see #28). After that, the data layer service will be the only remaining component in the bare metal setup that requires the fluentbit server to send the logs to elasticsearch (in fact, the fluentbit server is not utilized in the knative setup anyway).
If the data layer service moves inside the sandbox, we can also get rid of the extra fluentbit server in bare metal, because the sandbox logs are already sent to elasticsearch. That move would affect the way the management service is bootstrapped, though.
from knix.
@iakkus thanks, it captures our discussion well. The data layer service (DLS) is a bit more than a simple translation layer of redirecting requests to riak/redis for processing. DLS needs to use respective client libraries to organize operations in certain ways for correct processing. I agree that the new `riak_redis' approach can simplify DLS.
Regarding where to put DLS (either standalone or inside a sandbox), we can decide later. It anyways is a simple move.
from knix.
switched this work to "feature/redis_caching" branch
from knix.
Related Issues (20)
- CentOS support for ansible deployments HOT 2
- Caching of downloaded function dependencies
- Shutting down sandboxes may hang HOT 5
- Upgrading KNIX breaks the datalayer HOT 1
- workflow logs not available due to elasticsearch sharding problem HOT 1
- test asl_Map hangs with maxconcurrency values != 0 HOT 3
- allow user-supplied data be included in the trigger from TriggersFrontend
- bare metal installation fails due to missing dependencies HOT 22
- error when deploy the knix on a host machine HOT 5
- Does it mean I deploy successful? HOT 1
- error when workflow.excute. requests.exceptions.HTTPError: 405 Client Error: Not Allowed for url: http://XXXX:32777 HOT 10
- knix can not support parallel states. HOT 6
- Error when executing java function with maven dependency of Gson HOT 1
- Handling of client context for remotely handled messages HOT 4
- Provide more detailed error logs when attempting to test functions
- Triggers SDK update (storage, message queues, timers) HOT 1
- Triggers API object update for Java (storage, message queues, timers) HOT 5
- Recovery manager
- KNIX GPU monitoring/accounting capabilities
- Execution log entries get disordered HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from knix.