Giter Site home page Giter Site logo

camunda / zeebe Goto Github PK

View Code? Open in Web Editor NEW
3.0K 107.0 546.0 256.12 MB

Distributed Workflow Engine for Microservices Orchestration

Home Page: https://zeebe.io

Java 80.87% Shell 0.07% Dockerfile 0.03% Go 1.23% Makefile 0.04% JavaScript 0.09% TypeScript 17.32% HTML 0.01% SCSS 0.33% CSS 0.01%
microservices orchestration-framework workflow-engine java golang bpmn workflow grpc hacktoberfest

zeebe's Introduction

Zeebe - Workflow Engine for Microservices Orchestration

Maven Central

Zeebe provides visibility into and control over business processes that span multiple microservices. It is the engine that powers Camunda Platform 8.

Why Zeebe?

  • Define processes visually in BPMN 2.0
  • Choose your programming language
  • Deploy with Docker and Kubernetes
  • Build processes that react to messages from Kafka and other message queues
  • Scale horizontally to handle very high throughput
  • Fault tolerance (no relational database required)
  • Export process data for monitoring and analysis
  • Engage with an active community

Learn more at camunda.com

Release Lifecycle

Our release cadence within major releases is a minor release every six months, with an alpha release on each of the five months between minor releases. Releases happen on the second Tuesday of the month, Berlin time (CET).

Minor releases are supported with patches for eighteen months after their release.

Here is a diagram illustrating the lifecycle of minor releases over a 27-month period:

2022                       2023                                2024
Ap Ma Ju Ju Au Se Oc No De Ja Fe Ma Ap Ma Ju Ju Au Se Oc No De Ja Fe Ma Ap Ma Ju
8.0--------------------------------------------------|
                  8.1--------------------------------------------------|
                                    8.2-----------------------------------------
                                                      8.3-----------------------
                                                                        8.4-----
1  2  3  4  5  6  7  8  9  10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27

Here is a diagram illustrating the release schedule of the five alpha releases prior to an upcoming minor release over a 7-month period:

2022                                2023
Oct       Nov          Dec          Jan          Feb          Mar          Apr
8.1-----------------------------------------------------------------------------
          8.2-alpha1   8.2-alpha2   8.2-alpha3   8.2-alpha4   8.2-alpha5   8.2--
1         2            3            4            5            6            7

Status

To learn more about what we're currently working on, check the GitHub issues and the latest commits.

Helpful Links

Recommended Docs Entries for New Users

Contributing

Read the Contributions Guide.

Code of Conduct

This project adheres to the Camunda Code of Conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior as soon as possible.

License

Zeebe source files are made available under the Zeebe Community License Version 1.1 except for the parts listed below, which are made available under the Apache License, Version 2.0. See individual source files for details.

Available under the Apache License, Version 2.0:

Clarification on gRPC Code Generation

The Zeebe Gateway Protocol (API) as published in the gateway-protocol is licensed under the Zeebe Community License 1.1. Using gRPC tooling to generate stubs for the protocol does not constitute creating a derivative work under the Zeebe Community License 1.1 and no licensing restrictions are imposed on the resulting stub code by the Zeebe Community License 1.1.

zeebe's People

Contributors

bors[bot] avatar camundait avatar deepthidevaki avatar dependabot-preview[bot] avatar dependabot-support avatar dependabot[bot] avatar houssain-barouni avatar huygur avatar koevskinikola avatar korthout avatar megglos avatar menski avatar meyerdan avatar npepinpe avatar oleschoenburg avatar pedesen avatar pihme avatar ralfpuchert avatar remcowesterhoud avatar renovate-bot avatar renovate[bot] avatar romansmirnov avatar saig0 avatar sdorokhova avatar siffogh avatar thorbenlindhauer avatar vsgoulart avatar zeebe-bors-camunda[bot] avatar zeebe-bors[bot] avatar zelldon avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

zeebe's Issues

No updates for dirty keys

When an update for a particular key is scheduled via the log work buffer, no further updates can be accepted for that key until this update either succeeded or failed.

Notes:

  • The update "succeeded" means that a) the log entry has been written and b) the corresponding indices have been updated.
  • The pipeline needs to "stall" until the update has been processed downstream

Add infrastructure to write docs

It is never too early to start writing documentation.

At this point we should add infra for writing docs such that when we want to write some we know where to add content

I can configure a consumer id

When starting the client, I can provide a consumer id in the config that is used for all relevant requests. Right now, it always defaults to 0 (based on the behavior that we write requests to all-zero buffers).

Refactor index management

Whenever a log is read and decisions are made based on the log entries, only indexes should be used that reflect the state at the current position. This avoids the need to manage dirty index keys since indexes no longer need to be globally consistent.

Side effects:

  • With indexes not reflecting global state, they cannot be used globally. That means, an index that reflects the local state of a log processor can not be used by another log processor or other reader.
  • Specifically, request handlers cannot use indexes any longer. Instead, request handling involves only validating a request syntactically and writing a request entry to the addressed log. The log consumer of that log is then going to pick up the request up and decides whether the request is valid or not. Only then can a response be sent.
  • Log Consumers can only keep indexes on the log the consume (=> an index on another log would require global consistency). This means, that some events need to be duplicated, e.g. workflow definition creation/deletion must be reflected on workflow instance logs.

Workflow continuation task is not restored correctly after broker restart

The BpmnEventHandler holds a LogReader, but that log reader's position is not re-initialized correctly when the broker is restarted. It always begins reading at the log's initial position.

Should be based on the last event that has been handled. Might require a "previous event" pointer for events on the log.

Delete temp files on shutdown

Currently the broker does not yet delete the log temp files on shut down. It should be a good citizen and clan up after itself.

Create a pollable task on service task execution

  • BPMN specifies task topic
  • BPMN specifies task queue
  • A task instance is created when an activity instance create event is detected on any workflow instance log. This is the responsibility of the task queue worker (=> single writer to the task instance log).

Subtask of camunda-tngp/tasks#4

Fix inconsistencies due to non-up-to-date indices

Aspects:

  • Pipeline Concurrency
  • Restore Index on Startup
  • Consistency of Log and Indices: Whenever we poll a log, the indices for that log should be up to date (or the poller should be aware of that inconsistency (peek instead of poll))

Find a safe default port for broker

The default broker port 51015 is sometimes used by applications like Firefox or Outlook (Windows 7). Let's try to find a port with less probability of conflict.

Performance Testsuite

General Questions:

  • Why to measure?
  • What to measure?
  • How to measure?

Other questions:

  • What triggers a build?
  • When does a build fail?
  • How is everything provisioned?

QA: Synchronize client and broker in tests

Client and broker are asynchronous by design.
In test cases, we want a certain synchronization, for example that the client does make a certain request only when the broker has reached a certain state.

LogStreams Api and Implementation

Concepts

Introduce the concept of the "LogStream". A LogStream is a stream of events with the following properties:

  • persistent: the stream is persistent. Consumers can go back and re-process events.

The events present in the stream have the following properties:

  • unique position within the stream (positions are ascending). Positions are stable and are maintained accross re-org operations such as compaction
  • key: groups together a set of events related to the same "thing"
  • causedBy: the position of the event which caused this event to occur. This is required for stream processing where the occurrence of an event leads to one or multiple follow-up events being created.

Requirements:

  • Pluggable Log Storage
  • Concurrency Model: MPMC (multiple producers multiple consumers)
  • Batching writes: write operations on the underlying storage are batched to improve performance
  • Buffering Reads: read operations read into an intermediary buffer to reduce number of read operations issued to the underlying storage
  • Completion: it must be possible to observe the progress of the "log appender" (component responsible for writing to storage.
  • Failure notification: when write operations fail, the stream must enter a failure state and ensure consistency by discarding any futher buffered writes until it has recovered from the error.

Test WF Type index writing

We need to tests that the WfType indexes are written correctly. There are two indexes: one on the key and one on the id.

Remove repository log

  • From a user's perspective, this removes the delay between deploying a process model and being able to instantiate it on a runtime log
  • When deploying a process model, a target runtime log id must be provided
  • Internally, we no longer have to keep redundant log entries (i.e. workflow definition entries on both, repository and runtime logs)

Process execution up to a service task

  • Create and write events for sequence flow execution and activity instance creation.
  • limitation to single outgoing flows

Subtask of camunda-tngp/tasks#4

Implement start process instance request handler

  • There is an endpoint that can receive requests to start a process instance
  • This writes two events to the log:
    • start event occurred
    • process instance created
  • a response is returned: either success (with process instance id) or failure (with error message and code)

related to camunda-tngp/tasks#2

Parallel runtime and repository requests can fail

We resolve API requests based on log entries. In addition, we rely on the FIFO behavior of requests (i.e. the first deferred request is resolved first). This works when requests target the same log, but not when they target different logs and shared one response pool.

Solution: Process log entries based on the dispatcher (at least API requests). Since all logs use the same dispatcher, this guarantees FIFO behavior for all requests.

Provide broker distribution

One of the really good things we have in Camunda 7 is that there is always a downloadable snapshot distribution of the complete platform. We should have that in tngp too.

AT:

  • there is a distribution for the tngp broker which can be unzipped and started
  • available for Windows and Unix

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.