Giter VIP home page Giter VIP logo

spring-cloud-learning's Introduction

Spring-Cloud-Learning

Build Status License Coverage Status

README: English | 中文

spring-cloud-learning can be used as a project to learn microservices, and it's mainly contain service discovery, service gateway, configuration management, circuit breakers, application monitor.

Table of Contents

Components

  • Eureka
  • Consul
  • Ribbon
  • Feign
  • Hystrix
  • Turbine
  • Zuul
  • Spring Cloud Config
  • Spring Cloud Stream
  • Spring Cloud Bus
  • Spring Cloud Sleuth
  • Spring Cloud Security
  • Spring Cloud Task
  • Spring Cloud Gateway

To be supplemented...

Getting Started

Two methods will mainly introduced, but no matter what you need to clone the code.

$ git clone https://github.com/coderqianlq/spring-cloud-learning.git

Use directly (recommend)

You can use ide to import the project with maven, and use ide or use command line to start project.

$ mvn spring-boot:run

You can also package the code and run it.

$ java -jar xxx.jar

Use docker

First, you have to make sure you have installed docker and start docker server.

$ docker --version
Docker version 18.06.1-ce, build e68fc7a

Then, you need to enter each submodule and execute the docker building command.

$ cd eureka-server

$ mvn clean package -Pdocker docker:build

Next, return to the parent module and execute docker-compose command.

$ docker-compose up -d

Finally, you can open the registration center(default url: http://localhost:8761) to see if the service is registered successfully.

Preview

Spring boot admin wallboard

Spring Boot admin detail

Service customer hystrix stream

Hystrix monitor

Modules

- port remarks
admin-dashboard 8040 Spring boot Admin Dashboard for monitor spring cloud services
api-gateway 9090 Service gateway(Zuul)
config-server 8504 if you change the port, you need also modify bootstrap.yml of service-customer.
consul-server 8502 Service discovery(Consul)
eureka-server 8761 Service discovery(Eureka)
gateway-server 8080 Service gateway(Gateway)
hystrix-dashboard 8050
service-customer 8200 Integrated multiple components, including Feign, Spring Cloud Config, Spring Cloud Stream, Spring Cloud Bus
service-producer 8100
turbine-server 8060
zipkin-server 9411 if you change the port, you need also modify bootstrap.yml of service-customer.

Dependency Chart

Spring Boot Spring Cloud Spring Boot Admin Swagger2
2.1.5 Greenwich 2.1.6 2.7.0

Todo List

  • Split the module of service-customer.
  • Add the detailed usage of hystrix with turbine.
  • Update Spring Boot to 2.x and both Spring Cloud to Greenwich.
  • Add Spring Boot admin dashboard.
  • Use Spring Cloud Gateway replaces zuul as service gateway.

Collaborators


Marveliu

Joby1230

wxaaaa

License

MIT © CoderQian

spring-cloud-learning's People

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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

spring-cloud-learning's Issues

Setup Airbrake for your Java application

Step 1: Install

Install option 1: Maven

Add the javabrake dependency through your IDE or directly to your pom.xml file:

<dependency>
  <groupId>io.airbrake</groupId>
  <artifactId>javabrake</artifactId>
  <version>0.1.6</version>
</dependency>

Install option 2: Gradle

Add javabrake to your Gradle dependencies:

compile 'io.airbrake:javabrake:0.1.6'

Install option 3: Ivy

Add javabrake to your Ivy dependencies:

<dependency org='io.airbrake' name='javabrake' rev='0.1.6'>
  <artifact name='javabrake' ext='pom'></artifact>
</dependency>

Step 2: Configure

Import the javabrake library and copy the three configuration lines into your
app to send all uncaught exceptions to Airbrake:

(You can find your project API KEY with your project's settings)

// Import the library:
import io.airbrake.javabrake.Notifier;

public class ExampleApp {
  public static void main(String[] args) {

    // Copy configuration lines:
    int projectId = <Your project ID>;
    String projectKey = "<Your project API KEY>";
    Notifier notifier = new Notifier(projectId, projectKey);
  }
}

Example of reporting a caught exception:

try {
  int i = 1/0;
} catch (ArithmeticException e) {
  notifier.report(e);
}

Visit our official GitHub repo for advanced information and integrations like log4j, log4j2, and logback.

通过配置类开启feign的hystrix服务不起作用

定义配置类设置feign.hystrix.enabled=true不起作用,配置类如下:
@configuration
@ConditionalOnClass({HystrixCommand.class, HystrixFeign.class})
public class FeignServerConfiguration {

@Bean
@Scope("prototype")
@ConditionalOnProperty(name = "feign.hystrix.enabled", matchIfMissing = true)
public Feign.Builder feignBuilder() {
    return Feign.builder();
}

}
目前是通过在配置文件中application.properties中添加feign.hystrix.enabled=true开启feign的hystrix服务。

Mybatis插入数据返回主键为NULL的问题

/**
 * 插入用户,返回用户id  
 * 需要注意的是在mapper接口中不能使用@Param("")绑定传入实体参数,这样主键会绑定到新建的实体中。
 * 如@Param("user") UserEntity user主键会绑定到新建的实体,即getId() = null。
 *
 * @param user 用户实体
 * @return Long
 */
  Long insertUser(UserEntity user);

 // Long insertUser(@Param("user") UserEntity user) 使用@Param("")绑定传入实体参数,会使主键绑定到新建的实体中
<insert id="insertUser" parameterType="User">
    <selectKey keyProperty="id" order="BEFORE" resultType="java.lang.String">
        select replace(uuid(), '-', '') as id from dual
    </selectKey>
    insert into user(id, name, birth)
    values (#{id}, #{name}, #{birth})
</insert>

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.