All Projects → vectaport → Fgbase

vectaport / Fgbase

Licence: other
Ready-send coordination layer on top of goroutines.

Programming Languages

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

Projects that are alternatives of or similar to Fgbase

flowgraph
Flowgraph package for scalable asynchronous system development
Stars: ✭ 51 (+13.33%)
Mutual labels:  scalable, distributed, dataflow
simplx
C++ development framework for building reliable cache-friendly distributed and concurrent multicore software
Stars: ✭ 61 (+35.56%)
Mutual labels:  scalable, distributed, concurrent
funboost
pip install funboost,python全功能分布式函数调度框架,。支持python所有类型的并发模式和全球一切知名消息队列中间件,python函数加速器,框架包罗万象,一统编程思维,兼容50% python编程业务场景,适用范围广。只需要一行代码即可分布式执行python一切函数。旧名字是function_scheduling_distributed_framework
Stars: ✭ 351 (+680%)
Mutual labels:  distributed, concurrent
litchi
这是一款分布式的java游戏服务器框架
Stars: ✭ 97 (+115.56%)
Mutual labels:  scalable, distributed
dspatch
The Refreshingly Simple Cross-Platform C++ Dataflow / Pipelining / Stream Processing / Reactive Programming Framework
Stars: ✭ 124 (+175.56%)
Mutual labels:  dataflow, flow-based-programming
Flowbase
A Flow-based Programming inspired micro-framework / un-framework for Go (Golang)
Stars: ✭ 129 (+186.67%)
Mutual labels:  dataflow, flow-based-programming
Msgflo
Distributed Flow-Based Programming via message queues
Stars: ✭ 136 (+202.22%)
Mutual labels:  dataflow, distributed
goroutines
provides utilities to perform common tasks on goroutines
Stars: ✭ 19 (-57.78%)
Mutual labels:  concurrent, goroutine
flowd
An inter-language runtime for flow-based programming (FBP)
Stars: ✭ 18 (-60%)
Mutual labels:  dataflow, flow-based-programming
Zoneminder
ZoneMinder is a free, open source Closed-circuit television software application developed for Linux which supports IP, USB and Analog cameras.
Stars: ✭ 3,450 (+7566.67%)
Mutual labels:  scalable, distributed
Routine
go routine control, abstraction of the Main and some useful Executors.如果你不会管理Goroutine的话,用它
Stars: ✭ 40 (-11.11%)
Mutual labels:  concurrent, goroutine
Coerce Rs
Coerce - an asynchronous (async/await) Actor runtime and cluster framework for Rust
Stars: ✭ 231 (+413.33%)
Mutual labels:  scalable, distributed
Vernemq
A distributed MQTT message broker based on Erlang/OTP. Built for high quality & Industrial use cases.
Stars: ✭ 2,628 (+5740%)
Mutual labels:  scalable, distributed
Drawflow
Simple flow library 🖥️🖱️
Stars: ✭ 730 (+1522.22%)
Mutual labels:  dataflow, flow-based-programming
cocoon-demo
Cocoon – a flow-based workflow automation, data mining and visual analytics tool.
Stars: ✭ 19 (-57.78%)
Mutual labels:  dataflow, flow-based-programming
Arq
Fast job queuing and RPC in python with asyncio and redis.
Stars: ✭ 695 (+1444.44%)
Mutual labels:  concurrent, distributed
Bingo
基于golang开发的高性能,高并发分布式框架。
Stars: ✭ 9 (-80%)
Mutual labels:  concurrent, distributed
Parle
Stars: ✭ 38 (-15.56%)
Mutual labels:  distributed
Describing a knowledge base
Code for Describing a Knowledge Base
Stars: ✭ 42 (-6.67%)
Mutual labels:  wiki
Crypto Dht
Blockchain over DHT in GO
Stars: ✭ 38 (-15.56%)
Mutual labels:  distributed

fgbase

Package of Go flowgraph primitives

Getting Started

go get -u github.com/vectaport/fgbase
go get -u github.com/vectaport/fgbase_test
cd $GOPATH/src/github.com/vectaport/fgbase_test
make

Links

Overview

Go (Golang) offers direct support for concurrent programming with goroutines, channels, and the select statement. Used together they offer all the building blocks necessary for programming across many cores and many Unix boxes. But so much is possible with goroutines that constructing scaleable and reliable systems (that won't deadlock or be throttled by bottlenecks) requires the application or invention of additional concepts.

Flowgraphs are a distinct model of concurrent programming that augment channels with ready-send handshake mechanisms to ensure that no data is sent before the receiver is ready. MPI (a framework for supercomputer computation) directly supports flowgraph computation, but doesn't address flow-based computation within a single Unix process. Go with its goroutines (more efficient than threads according to Rob Pike) facilitates taking the MPI model down to whatever granularity the concurrent programmer wants.

It is not immediately obvious how to use goroutines, channels, and select to implement the flowgraph model. This framework is an attempt to illustrate one possible approach.

Features of github.com/vectaport/fgbase:

  • fgbase.Edge augments a channel with a ready-send acknowledge protocol
  • ready-send can guarantee that unbuffered writes never lead to deadlock
  • fgbase.Node augments a goroutine with an empty interface data protocol
  • an empty interface data protocol allows a small set of primitives to be reused for a wide variety of things
  • test benches at github.com/vectaport/fgbase_test

The fgbase package can be used to (manually) render flowgraphs drawn and simulated in github.com/vectaport/ipl into compilable Golang code. ipl is an implementation of a flowgraph language suggested by Karl Fant.

Wiki Topics:

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].