All Projects → captain-me0w → Vegamcache

captain-me0w / Vegamcache

Licence: apache-2.0
Distributed in-memory cache using gossip protocol in go-lang

Programming Languages

go
31211 projects - #10 most used programming language
golang
3204 projects

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
Govector
Vector clock logging library for Go
Stars: ✭ 148 (-10.3%)
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
Heimdall
An enhanced HTTP client for Go
Stars: ✭ 2,132 (+1192.12%)
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
Mit 6.824 2018
Solutions to mit 6.824 2018
Stars: ✭ 158 (-4.24%)
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].