项目作者: endurox-dev

项目描述 :
Application Server for Go (ASG)
高级语言: Go
项目地址: git://github.com/endurox-dev/endurox-go.git
创建时间: 2015-12-26T20:28:57Z
项目社区:https://github.com/endurox-dev/endurox-go

开源协议:Other

下载


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/endurox-go@v8.0

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

Releases

  • Version 2.5.10 released on 10/02/2024 (stable) Bug #825
  • Version 2.5.12 released on 26/03/2025 (stable) Support #892
  • Version 2.5.14 released on 27/03/2025 (stable) Feature #894