All Projects → amalgam8 → Amalgam8

amalgam8 / Amalgam8

Licence: apache-2.0
Content and Version-based Routing Fabric for Polyglot Microservices

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to Amalgam8

Juno
Juno 译名朱诺。这个名字来源于古罗马神话中的众神之母。它是斗鱼的微服务管理系统, 如同众神之母一样守护着所有微服务的系统。
Stars: ✭ 285 (+87.5%)
Mutual labels:  microservice, service-discovery, service-mesh
Istio
Connect, secure, control, and observe services.
Stars: ✭ 28,970 (+18959.21%)
Mutual labels:  microservice, service-mesh
Tseer
A high available service discovery & registration & fault-tolerance framework
Stars: ✭ 665 (+337.5%)
Mutual labels:  microservice, service-discovery
Microdot
Microdot: An open source .NET microservices framework
Stars: ✭ 1,222 (+703.95%)
Mutual labels:  microservice, service-discovery
Linkerd
Old repo for Linkerd 1.x. See the linkerd2 repo for Linkerd 2.x.
Stars: ✭ 5,382 (+3440.79%)
Mutual labels:  service-discovery, service-mesh
Rpcx
Best microservices framework in Go, like alibaba Dubbo, but with more features, Scale easily. Try it. Test it. If you feel it's better, use it! 𝐉𝐚𝐯𝐚有𝐝𝐮𝐛𝐛𝐨, 𝐆𝐨𝐥𝐚𝐧𝐠有𝐫𝐩𝐜𝐱!
Stars: ✭ 6,516 (+4186.84%)
Mutual labels:  microservice, service-discovery
Kumonos
Moved to https://github.com/cookpad/itacho
Stars: ✭ 29 (-80.92%)
Mutual labels:  service-discovery, service-mesh
Kubernetes Handbook
Kubernetes Handbook (Kubernetes指南) https://kubernetes.feisky.xyz
Stars: ✭ 4,511 (+2867.76%)
Mutual labels:  microservice, service-mesh
Marblerun
Marblerun is the service mesh for confidential computing. Deploy, scale, and verify your confidential microservices on vanilla Kubernetes. 100% Go, 100% cloud native, 100% confidential
Stars: ✭ 98 (-35.53%)
Mutual labels:  microservice, service-mesh
Jupiter
Jupiter是一款性能非常不错的, 轻量级的分布式服务框架
Stars: ✭ 1,372 (+802.63%)
Mutual labels:  microservice, service-discovery
Rpcx Gateway
http gateway for rpcx services. Clients in any programming languages can call them
Stars: ✭ 145 (-4.61%)
Mutual labels:  microservice, service-mesh
Samples
Steeltoe samples and reference application collection
Stars: ✭ 586 (+285.53%)
Mutual labels:  microservice, service-discovery
Consul
Consul is a distributed, highly available, and data center aware solution to connect and configure applications across dynamic, distributed infrastructure.
Stars: ✭ 23,723 (+15507.24%)
Mutual labels:  service-discovery, service-mesh
Uavstack
UAVStack Open Source All in One Repository
Stars: ✭ 648 (+326.32%)
Mutual labels:  microservice, service-discovery
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 (+217.11%)
Mutual labels:  service-discovery, service-mesh
Capricornus Cloud
Capricornus Cloud provides tools for developers to quickly build distributed systems.
Stars: ✭ 15 (-90.13%)
Mutual labels:  microservice, service-discovery
Library
A microservice project using .NET Core 2.0, DDD, CQRS, Event Sourcing, Redis and RabbitMQ
Stars: ✭ 122 (-19.74%)
Mutual labels:  microservice, service-discovery
Apioak
Full Lifecycle Management API Gateway.
Stars: ✭ 335 (+120.39%)
Mutual labels:  microservice, service-mesh
Microservices Recipes A Free Gitbook
“If you are working in an organization that places lots of restrictions on how developers can do their work, then microservices may not be for you.” ― Sam Newman
Stars: ✭ 393 (+158.55%)
Mutual labels:  microservice, service-discovery
Docker For All
Docker applied in development, devops, testing, product management etc.
Stars: ✭ 88 (-42.11%)
Mutual labels:  microservice, docker-swarm

Amalgam8 has Relocated!

After deciding to collaborate with additional companies on a more verbose proxy solution, we decided to start with a new project and repo since incorporating the additional features would have meant a significant overhaul of the existing code. Please check out all the new features available at istio.io

Amalgam8 - Microservice Routing Fabric

GoReportCard Widget Travis Widget

TL;DR

  1. A quick intro video to Amalgam8

Introduction to
Amalgam8 Microservice Routing Fabric

  1. Try the demo applications with a container runtime of your choice.

  2. Integrate the sidecar into your existing application to start using Amalgam8.


Content and version-based routing - 101

In any realistic production deployment, there are typically multiple versions of microservices running at the same time, as you might be testing out a new version, troubleshooting an old version, or simply keeping the old version around just in case.

Content-based routing allows you to route requests between microservices based on the content of the request, such as the URL, HTTP headers, etc. For example,

from microservice A, if request has "X-User-Id: QA", route to instance of
(B:v2) else route to instance of (B:v1)

Version-based routing allows you to control how different versions of microservices can talk to each other. For example,

from microservice A:v2 route all requests to B:v2
from microservice A:v1 route 10% of requests to B:v2 and 90% to B:v1

A simple way to accomplish these functions is to control how microservices can talk to each other.

What is Amalgam8 ?

Amalgam8 is a platform for building polyglot microservice applications that enables you to route requests between microservices in a content-based and version-based manner, independent of the underlying container orchestration layer (Docker Swarm, Kubernetes, Marathon) or the cloud platform (Amazon AWS, IBM Bluemix, Google Cloud Platform, Microsoft Azure, etc.)

Amalgam8 uses the sidecar model or the ambassador pattern for building microservices applications. The sidecar runs as in independent process and takes care of service registration, discovery and request routing to various microservices. The sidecar model simplifies development of polyglot applications.

Through the Amalgam8 Control Plane, you can dynamically program the sidecars in each microservice and control how requests are routed between microservices. The control plane provides REST APIs that serve as the basis for building tools for various DevOps tasks such as A/B testing, internal releases and dark launches, canary rollouts, red/black deployments, resilience testing, etc.

Amalgam8 - Components

  • The Amalgam8 Control Plane consists of two multi-tenant components:

    The registry and the controller store their state in a Redis backend.

  • In the data plane, the Amalgam8 sidecar runs alongside each microservice instance. The sidecar is an Envoy reverse proxy. In addition to proxying requests to other microservices, the sidecar is responsible for service registration, heartbeat, service discovery, load balancing, intelligent request routing, and fault injection.

    Microservices communicate with the sidecar via the loopback socket at http://localhost:6379 . For e.g., to make a REST API call over HTTP to serviceB, the application would use the following URL: http://localhost:6379/serviceB/apiEndpoint . The sidecar in-turn forwards the API call to an instance of service B.

Documentation

Detailed documentation on Amalgam8 can be found at https://amalgam8.io/docs.

Demos

To get started with Amalgam8, we suggest exploring some of the demo applications. The walkthroughs demonstrate some of Amalgam8's key features. Detailed instructions are available for different container runtimes and cloud platforms.

Getting Help

If you have any questions or feedback, you can reach us via our public Slack channel (#amalgam8). To join this channel, please use the following self invite URL: https://amalgam8-slack-invite.mybluemix.net


Development Process

To build from source, clone this repository, and follow the instructions in the developer guide.

Travis CI

Continuous builds are run on Travis CI. These builds use the .travis.yml configuration.

Release Workflow

This section includes instructions for working with releases, and is intended for the project's maintainers (requires write permissions)

Creating a release

  1. Edit the CHANGELOG.md file, describing the changes included in this release.

  2. Set a version for the release, by incrementing the current version according to the semantic versioning guidelines. For example,

    export VERSION=v0.1.0
    
  3. Create an annotated tag in your local copy of the repository:

    git tag -a -m "Release $VERSION" $VERSION [commit id]
    

    The [commit id] argument is optional. If not specified, HEAD is used.

  4. Push the tag back to the Amalgam8 upstream repository on GitHub:

    git push origin $VERSION
    

This command automatically creates a release object on GitHub, corresponding to the pushed tag. The release contains downloadable packages of the source code (both as .zip and .tag.gz archives).

  1. Edit the GitHub release object, and add a title and description (according to CHANGELOG.md).

License

Copyright 2016 IBM Corporation

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Contributing

Contributions and feedback are welcome! Proposals and pull requests will be considered. Please see the CONTRIBUTING.md file for more information.

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