Giter Site home page Giter Site logo

eureka-cf-clone's Introduction

IBM Cloud Architecture - Microservices Reference Application for Netflix OSS

Netflix Microservices Framework on Bluemix - Eureka Service Discovery

Description

This project contains a packaged Eureka Service Discovery server for use in a Netflix OSS-based microservices architecture. This enables individual microservices to dynamically register themselves and lookup required peer microservices for request routing. The repository builds the Eureka component into a runnable JAR that can either be used directly in Cloud Foundry or built into a Docker image (with the Dockerfile provided).

This repository, and its parent reference application, are built to enable deployment and learning of building and operating microservices-based applications on the IBM Cloud, but due to the OSS-based nature of the components involved, this reference application can be deployed to any cloud or on-premises environment as desired.

Parent Reference Application

This project is part of the IBM Cloud Architecture - Microservices Reference Application for Netflix OSS suite.

For full reference application overviews and deployment guidance, please refer to the root repository above. The overall project consists of multiple sub projects:

  • Standard Netflix OSS-based microservice architecture components, like Eureka and Zuul
  • Sample Spring Boot applications which provide a REST API and communication between each other.
  • Deployment pipeline and automation guidance

The Microservices Reference Application for Netflix OSS is maintained by the IBM Cloud Lab Services and Cloud Solution Engineering teams.

Application Architecture

  1. IBM Cloud Architecture - Microservices Reference Application for Netflix OSS
    The Microservices Reference Application for Netflix OSS leverages Eureka as its service discovery mechanism. You can see where Eureka is used, highlighted in the diagram below.
    Microservices RefApp Architecture
  2. IBM Cloud Architecture - Cloud Native Microservices Reference Application for OmniChannel
    The Eureka component is also leveraged in the OmniChannel Application as its service discovery mechanism. You can see where Eureka is used, highlighted in the diagram below.
    OmniChannel Application Architecture

APIs in this application:

The REST APIs provided by Eureka are documented on the Eureka GitHub page, but there are a few simple REST APIs that can be accessed via cURL or Chrome POSTMAN to send get/post/put/delete requests to the application.

  • Query for all instances:
    http://<hostname>/eureka/v2/apps

  • Query for all appID instances:
    http://<hostname>/eureka/v2/apps/*appID*

  • Query for a specific instanceID:
    http://<hostname>/eureka/v2/instances/*instanceID*

  • Query for a specific appID/instanceID:
    http://<hostname>/eureka/v2/apps/*appID*/*instanceID*

Pre-requisites:

  • Install Java JDK 1.8 and ensure it is available in your PATH
  • (Optional) A local Docker instance (either native or docker-machine based) running on localhost to host container(s). Click for instructions.
  • (Optional) Apache Maven is used for an alternate build system. Click for instructions.

Build the Application Component

  1. Build the application. A utility script is provided to easily build using either Gradle (default) or Maven. You can optionally specify the -d parameter to build the associated Docker image as well. The default Gradle build instructions use a Gradle wrapper requiring no further installation. The Maven build instructions require Maven to be installed locally.

    1.1 Build the application using Gradle:

    ./build-microservice.sh [-d]
    

    1.1 Build the application using Maven:

    ./build-microservice.sh -m [-d]
    

Run the Application Component Locally

  1. You can now run either the JAR file or the Docker image locally.

    1.1. To run the JAR file locally, you can simply pass parameters to the Java command in the command prompt:
    java -jar docker/app.jar
    1.2. To run the Docker file locally, you can pass the same parameters to start the local Docker image:
    docker run -p 8761:8761 netflix-eureka:latest

  2. Your Eureka client applications can now connect to the running Eureka server via configuration of the following Spring Boot property:
    eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/

  3. The Eureka user interface is available via http://localhost:8761.

Run the Application Component on Bluemix

  1. Edit the Bluemix Response File to select your desired external public route, application domain, and other operational details. The default values in the .bluemixrc are acceptable to deploy to the US-South Bluemix region.

  2. To deploy Eureka as a container group onto the Bluemix Container Service, execute the following script:
    ./deploy-container-group.sh

    This script will create a clustered group of homogeneous containers, with additional management capabilities provided by Bluemix.

  3. The script will complete rather quickly, but the creation of the necessary Container Group and clustered containers may take a few moments. To check on the status of your Eureka Container Group, you can run the following command:
    cf ic group ls | grep eureka_cluster

    Once you see a value for Status of CREATE_COMPLETED, your Eureka instance will now be publicly accessible through the URL configured in the Bluemix response file.

  4. Your Eureka client applications can now connect to the running Eureka server via configuration of the following Spring Boot property:
    eureka.client.serviceUrl.defaultZone=http://netflix-eureka-[YOUR_NAMESPACE].mybluemix.net/eureka/

  5. The Eureka user interface is available via http://netflix-eureka-[YOUR_NAMESPACE].mybluemix.net.

Validate the Application Component Deployment

  1. Validate that the user interface appears after a few seconds of the application being started.

eureka-cf-clone's People

Contributors

osowski avatar edwinvandegrift avatar hassenius avatar ssibm avatar

Watchers

James Cloos avatar  avatar

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.