captain-me0w / Vegamcache
Licence: apache-2.0
Distributed in-memory cache using gossip protocol in go-lang
Stars: ✭ 165
Labels
Projects that are alternatives of or similar to Vegamcache
Nservicebus
The most popular service bus for .NET
Stars: ✭ 1,816 (+1000.61%)
Mutual labels: distributed-systems
Dasync
Every developer deserves the right of creating microservices without using any framework 🤍
Stars: ✭ 154 (-6.67%)
Mutual labels: distributed-systems
Vald
Vald. A Highly Scalable Distributed Vector Search Engine
Stars: ✭ 158 (-4.24%)
Mutual labels: distributed-systems
Jlitespider
A lite distributed Java spider framework :-)
Stars: ✭ 151 (-8.48%)
Mutual labels: distributed-systems
Akka
Build highly concurrent, distributed, and resilient message-driven applications on the JVM
Stars: ✭ 11,938 (+7135.15%)
Mutual labels: distributed-systems
Data Engineering Howto
A list of useful resources to learn Data Engineering from scratch
Stars: ✭ 2,056 (+1146.06%)
Mutual labels: distributed-systems
Diztl
Share, discover & download files in your network 💥
Stars: ✭ 162 (-1.82%)
Mutual labels: distributed-systems
Fluentdispatch
🌊 .NET Standard 2.1 framework which makes easy to scaffold distributed systems and dispatch incoming load into units of work in a deterministic way.
Stars: ✭ 152 (-7.88%)
Mutual labels: distributed-systems
Osbrain
osBrain - A general-purpose multi-agent system module written in Python
Stars: ✭ 157 (-4.85%)
Mutual labels: distributed-systems
Swift Cluster Membership
Distributed Membership Protocol implementations in Swift
Stars: ✭ 149 (-9.7%)
Mutual labels: distributed-systems
Etcd Cloud Operator
Deploying and managing production-grade etcd clusters on cloud providers: failure recovery, disaster recovery, backups and resizing.
Stars: ✭ 149 (-9.7%)
Mutual labels: distributed-systems
Seaweedfs
SeaweedFS is a fast distributed storage system for blobs, objects, files, and data lake, for billions of files! Blob store has O(1) disk seek, cloud tiering. Filer supports Cloud Drive, cross-DC active-active replication, Kubernetes, POSIX FUSE mount, S3 API, S3 Gateway, Hadoop, WebDAV, encryption, Erasure Coding.
Stars: ✭ 13,380 (+8009.09%)
Mutual labels: distributed-systems
Theta Protocol Ledger
Reference implementation of the Theta Blockchain Ledger Protocol
Stars: ✭ 159 (-3.64%)
Mutual labels: distributed-systems
Verdi Raft
An implementation of the Raft distributed consensus protocol, verified in Coq using the Verdi framework
Stars: ✭ 143 (-13.33%)
Mutual labels: distributed-systems
Scriptspider
一个java版本的分布式的通用爬虫,可以插拔各个组件(提供默认的)
Stars: ✭ 155 (-6.06%)
Mutual labels: distributed-systems
Node Jet
Realtime Message Bus for the Web. Javascript Implementation
Stars: ✭ 162 (-1.82%)
Mutual labels: distributed-systems
Log Sys
A distributed log system which is based on spring cloud & docker
Stars: ✭ 161 (-2.42%)
Mutual labels: distributed-systems
vegamcache
vegamcache is a distributed in-memory cache built using gossip protocol for golang.
what is the difference between other distributed cache service?
In vegamcache, network calls are not used for retriving data for each Get. Instead data will be replicated across the node using gossip in backgroud.
Expired keys are removed on gossip instead of having a seperate GC.
seri why ?
Go is fun. I learned lot of thing regarding distributed system and also I'm jobless. Looking for internship. If anyone interested, do ping me at [email protected]
Drawback
- Can be used only in golang
- Consumes lot of main memory.(If you worring about memory, folks at google did a good job on group cache)
Need to be done
- sharding the cache instead of storing it in a single hashmap
- benchmarking against other cache service
Example
Clustered Cache
vg, err := vegamcache.NewVegam(&vegamcache.VegamConfig{Port: 8087,
PeerName: "00:00:00:00:00:01",
Peers: []string{"remoteip1:port","remoteip2:port"},
Logger: log.New(ioutil.Discard, "", 0)})
vg.Start()
defer vg.Stop()
if err != nil {
panic(err)
}
vg.Put("foo", "bar", time.Second*200)
val, exist := vg.Get("foo")
if exist {
fmt.Println(val)
}
Single Node Cache
vg := vegamcache.NewCache()
vg.Put("foo", "bar", time.Second*200)
val, exist := vg.Get("foo")
if exist {
fmt.Println(val)
}
Contribution
Feel free to send PR. :)
Note that the project description data, including the texts, logos, images, and/or trademarks,
for each open source project belongs to its rightful owner.
If you wish to add or remove any projects, please contact us at [email protected].