1. 程式人生 > >springcloud21---Config-bus實現配置自動刷新

springcloud21---Config-bus實現配置自動刷新

ref 存儲 刷新 ng- GC label frame fig pre

技術分享圖片

Pivotal畢威拓)有VMwareEMC成立的.

RabbitMQ是由ERlang(愛立信開發的,面向並發的編程語言),安裝RabbitMQ先要安裝ERlang

技術分享圖片

package com.itmuch.cloud;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
//配置自動刷新,config server不用改,config client要改。 @RefreshScope //加入配置自動刷新註解,當配置發生更改的時候這個bean會 //各個微服務啟動了,config client已經加載配置了,即使config server掛了也可以。 public class ConfigClientController { @Value("${profile}") private String profile; @GetMapping("/profile") public String getProfile() { return this.profile; } }
package com.itmuch.cloud;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class ConfigServerApplication {
  public static void main(String[] args) {
    SpringApplication.run(ConfigServerApplication.
class, args); } }

application.yml

server:
  port: 8082

bootstrap.yml

spring:
  cloud:
    config:  #config server的地址
      uri: http://localhost:8080
      profile: dev
      label: master   # 當configserver的後端存儲是Git時,默認就是master 
    bus:
      trace:
        enabled: true
  application:
    name: foobar
  #連接rabbitmq
  rabbitmq:
    host: localhost
    port: 5672
    username: guest
    password: guest
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>com.itmuch.cloud</groupId>
        <artifactId>microservice-spring-cloud</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>

    <artifactId>microservice-config-client-refresh</artifactId>
    <packaging>jar</packaging>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- 配置自動刷新的依賴 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bus-amqp</artifactId>
        </dependency>
    </dependencies>
</project>

微服務之間的事務是分布式的事務(TCC,可靠事務的補償機制,最大努力型事務)。Eureka,zk,consul,etcd都是做服務發現的話是一樣的不同的產品而已。使用docker可以一次性啟動所有的微服務,java -jar一次只能啟動一個微服務。

調用鏈盡可能短,否則會出現超時。

www.itmuch.com

微服務之間可以通過http或者rpc方式調用。SOAP協議很重,微服務之間的可以跨平臺或者跨語言的。

客戶端側負載均衡:客戶端可以算出來命中哪個服務端,那麽服務端就沒必要做負載均衡了。

nanoservices:比微服務更小的納米服務框架。

Sidecar : 組件。

springcloud21---Config-bus實現配置自動刷新