All Projects → endurox-dev → endurox-go

endurox-dev / endurox-go

Licence: other
Application Server for Go (ASG)

Programming Languages

go
31211 projects - #10 most used programming language
shell
77523 projects
Makefile
30231 projects

Projects that are alternatives of or similar to endurox-go

Endurox
Enduro/X Middleware Platform for Distributed Transaction Processing
Stars: ✭ 91 (+184.38%)
Mutual labels:  ipc, cluster, multiprocessing
Scalecube Services
ScaleCube Services is a high throughput, low latency reactive microservices library built to scale. it features: API-Gateways, service-discovery, service-load-balancing, the architecture supports plug-and-play service communication modules and features. built to provide performance and low-latency real-time stream-processing. its open and designed to accommodate changes. (no sidecar in a form of broker or any kind)
Stars: ✭ 482 (+1406.25%)
Mutual labels:  ipc, cluster
Nfx
C# Server UNISTACK framework [MOVED]
Stars: ✭ 379 (+1084.38%)
Mutual labels:  ipc, cluster
Gserver
通用的实时流golang框架,可以方便的创建游戏服务/聊天服务等
Stars: ✭ 164 (+412.5%)
Mutual labels:  real-time, cluster
transform-hub
Flexible and efficient data processing engine and an evolution of the popular Scramjet Framework based on node.js. Our Transform Hub was designed specifically for data processing and has its own unique algorithms included.
Stars: ✭ 38 (+18.75%)
Mutual labels:  real-time, application-server
Complex Yolov4 Pytorch
The PyTorch Implementation based on YOLOv4 of the paper: "Complex-YOLO: Real-time 3D Object Detection on Point Clouds"
Stars: ✭ 691 (+2059.38%)
Mutual labels:  real-time, multiprocessing
Tosdatabridge
A collection of resources for pulling real-time streaming data off of TDAmeritrade's ThinkOrSwim(TOS) platform; providing C, C++, Java and Python interfaces.
Stars: ✭ 229 (+615.63%)
Mutual labels:  real-time, ipc
upstage
UpStage is a platform for cyberformance: remote players combine digital media in real-time for an online audience. All you need is a web browser!
Stars: ✭ 14 (-56.25%)
Mutual labels:  real-time
rnk
rnk is a RTOS targeting ARM architecture.
Stars: ✭ 22 (-31.25%)
Mutual labels:  real-time
SPMC Queue
A simple and efficient single producer multiple consumer queue, suititable for both ITC and IPC.
Stars: ✭ 19 (-40.62%)
Mutual labels:  ipc
dwm-ipc
A DWM patch that allows IPC communication through a UNIX socket
Stars: ✭ 55 (+71.88%)
Mutual labels:  ipc
python-rtmixer
🎤 Reliable low-latency audio playback and recording with Python 🐍
Stars: ✭ 44 (+37.5%)
Mutual labels:  real-time
databento-python
Official Python client library for Databento
Stars: ✭ 16 (-50%)
Mutual labels:  real-time
boxofhope
Box Of Hope is a C++ event driven platform to protect you during the COVID-19 pandemic. BOH uses NFC and WiFi technology to ensure your mask usage is on point and employs sterilizing UV LEDs to clean your fabric mask.
Stars: ✭ 19 (-40.62%)
Mutual labels:  real-time
wymlp
tiny fast portable real-time deep neural network for regression and classification within 50 LOC.
Stars: ✭ 36 (+12.5%)
Mutual labels:  real-time
fastdata-cluster
Fast Data Cluster (Apache Cassandra, Kafka, Spark, Flink, YARN and HDFS with Vagrant and VirtualBox)
Stars: ✭ 20 (-37.5%)
Mutual labels:  cluster
mishka-cms
MishkaCms an open source and real time API base CMS Powered by Elixir and Phoenix
Stars: ✭ 37 (+15.63%)
Mutual labels:  real-time
chidi
Framework for real-time applications and APIs written in Janet with love
Stars: ✭ 13 (-59.37%)
Mutual labels:  real-time
k8s-lemp
LEMP stack in a Kubernetes cluster
Stars: ✭ 74 (+131.25%)
Mutual labels:  cluster
rcm.cr
Redis Cluster Manager in Crystal
Stars: ✭ 43 (+34.38%)
Mutual labels:  cluster

Application Server for GO (ASG)

Version: 2.0.0 - Using Object-mode API.

ASG is application server for Golang, which makes it possible to process distributed transactions in Golang. It is possible to reload the application components without service interruption. Basically system is service oriented where server components advertises services (service is just a literal name like "GETBALANCE", "TRXREQ", etc.), then later these services are called by client binaries. Clients and servers can be located on different physical machines and they can call each other with out knowledge of their psychical location. As these server binaries are stateless, they can be started in multiple copies. This ensures fault tolerant processing. Clients and Server Services comunicate via middleware which supports three kind of buffers for request/response data: Arbitrary string, Byte array, Unified Buffer Format (UBF), JSON buffer.

Branches

  • If building against Enduro/X 8.0, use v8.0 branch, i.e. $ go get github.com/endurox-dev/[email protected]

Build & test status

OS Status OS Status OS Status
RHEL/Oracle Linux 8 Build Status Centos 6 Build Status FreeBSD 11 Build Status
Oracle Linux 7 Build Status OSX 11.4 Build Status raspbian10_arv7l Build Status
SLES 12 Build Status SLES 15 Build Status Ubuntu 14.04 Build Status
Ubuntu 18.04 Build Status AIX 7.2 Build Status

Documentation

The Enduro-GO API Document

Enduro/X documentation is located here: http://www.endurox.org/dokuwiki

Basic ASG application layouts can be checked out from this repository "tests" folder.

Foundation

ASG is built on Enduro/X middleware framework, which by itself implements extended XATMI specification. For distributed transaction processing XA API is used. XA must be supported by underlaying SQL (or any other resource) driver. The platform is build on GNU/Linux technology and it utilizes Posix kernel queues for gaining high IPC throughput.

Before try to build ASG, you need to install Enduro/X Middleware Platform, https://github.com/endurox-dev/endurox Binary packages for Enduro/X are available here: http://www.endurox.org/projects/endurox/files

Persistent message queue

Enduro/X provides a queuing subsystem called TMQ (Transactional Message Queue). This facility provides persistent queues that allows applications to explicitly enqueue and dequeue messages from named queues. Queues can be ordered by message en-queue time in LIFO or FIFO order. Queues are managed by an XA compliant resource manager allowing queue operations to participate in distributed transactions. An automated queue forwarding feature is provided that will remove entries from a queue and invoke an associated Enduro/X ATMI services, placing the reply message on an associated reply queue and failed messages to failure queue. The basic usage of persistent queues can be checked in tests/07_basic_durable_queue folder. TMQ API consists of TpEnqueue() and TpDequeue() calls or automated dequeue and message forwarding to destination service.

Buffer Types

Typed buffers are used for data transport between services.

String buffer

It is possible to send to services arbitrary strings. These could be JSON, XML or whatever data. The service might respond with the same buffer format, with changed contents.

Byte array (Carray)

It is possible to send to services byte arrays. The data could include binary zeros.

Unified Buffer Format buffer

UBF buffer basically is hash-list where for each value there could be array of elements (e.g. one or more). The buffer is typed. Fields are predefined in field definition tables, later with Enduro/X's 'mkfldhdr -m1' can be generated field constant tables which provides go format.

JSON buffer

JSON Text format buffer is supported. This can be used to call Enduro/X server or receive JSON format calls from the system.

XA SQL Drivers

Currently Enduro/X supports Oracle DB OCI driver. The patched version for XA processing is available here: https://github.com/endurox-dev/go-oci8. When doing processing in XA mode, the connection string must be empty ("").

Contact

Forums: http://www.endurox.org/projects/endurox-go/boards

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