Spring Cloud服務框架版本升級--JDK10+Gradle4.9+Spring Boot 2.0+Finchley.SR1
目標:原有版本升級為Spring Boot 2.0與Spring Cloud Finchley.SR1,使用gradle管理工程,搭建註冊、配置、閘道器與追蹤框架,加入k8s api微服務
環境:IntelliJ IDEA
步驟:版本升級及其說明->註冊中心框架->配置中心框架->服務閘道器框架->服務追蹤框架->k8s api微服務改造->執行測試
1.版本升級及其說明
版本升級的主要物件:
jdk:1.8 -> 10
maven 3.5.0 -> gradle 4.9
spring boot:1.5.3 -> 2.0.4
spring cloud:Edgware.SR3 -> Finchley.SR1
2.註冊中心框架
注:服務註冊中心eureka在jdk10版本下,需要新增配置,才能啟動tomcat應用。其原因為jdk10版本預設沒有載入JAXB-API。
解決方案:Run -> Edit Configurations 在VM選項增加 --add-modules java.se.ee
註冊中心主要工程結構:
build.gradle為專案依賴:以下幾個元件不再重複,僅展示增加的部分依賴,compile的部分為依賴
buildscript {
ext {
springBootVersion = '2.0.4.RELEASE'
}
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
group = 'com.boe.cloud'
version = '1.0.0'
sourceCompatibility = 10
repositories {
mavenCentral()
}
ext {
springCloudVersion = 'Finchley.SR1'
}
dependencies {
compile('org.springframework.cloud:spring-cloud-starter-netflix-eureka-server')
testCompile('org.springframework.boot:spring-boot-starter-test')
}
dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
}
}
*Application為主程式:使用@EnableEurekaServer註解
package com.boe.cloud.springcloud.eureka;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@SpringBootApplication
@EnableEurekaServer
public class SpringcloudEurekaApplication {
public static void main(String[] args) {
SpringApplication.run(SpringcloudEurekaApplication.class, args);
}
}
application.yml為配置檔案:設定為本地
server:
port: 8761
eureka:
instance:
hostname: localhost
client:
register-with-eureka: false
fetch-registry: false
service-url:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
3.配置中心框架
配置中心工程結構:與註冊中心類似
build.gradle為專案配置檔案:此處僅展示依賴部分,其他參考註冊中心
dependencies {
compile('org.springframework.cloud:spring-cloud-config-server')
compile('org.springframework.cloud:spring-cloud-starter-netflix-eureka-client')
testCompile('org.springframework.boot:spring-boot-starter-test')
}
*Application.java為主程式:使用@EnableEurekaClient啟用註冊客戶端,將自身註冊至註冊中心,使用@EnableConfigServer啟用配置中心服務端
package com.boe.cloud.springcloud.config;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
@SpringBootApplication
@EnableEurekaClient
@EnableConfigServer
public class SpringcloudConfigApplication {
public static void main(String[] args) {
SpringApplication.run(SpringcloudConfigApplication.class, args);
}
}
application.yml為配置檔案:其中git配置為配置檔案訪問的倉庫地址,可設定使用者名稱密碼登入
spring:
application:
name: Config-Server
cloud:
config:
server:
git:
uri: git_url
search-paths: path
username: xxxxx
password: xxxxx
label: master
server:
port: 8769
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka/
4.服務閘道器框架
閘道器工程結構:將配置檔案application.yml改為bootstrap.yml,該配置在git倉庫配置前生效
build.gradle為專案配置檔案:此處僅展示依賴部分,其他參考註冊中心
dependencies {
compile('org.springframework.cloud:spring-cloud-starter-config')
compile('org.springframework.cloud:spring-cloud-starter-netflix-eureka-client')
compile('org.springframework.cloud:spring-cloud-starter-netflix-zuul')
compile('org.springframework.cloud:spring-cloud-starter-zipkin')
testCompile('org.springframework.boot:spring-boot-starter-test')
}
*Application.java:主程式,使用@EnableEurekaClient啟用註冊客戶端,將自身註冊至註冊中心,使用@EnableZuulProxy註解啟用閘道器
package com.boe.cloud.springcloud.zuul;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
@SpringBootApplication
@EnableEurekaClient
@EnableZuulProxy
public class SpringcloudZuulApplication {
public static void main(String[] args) {
SpringApplication.run(SpringcloudZuulApplication.class, args);
}
}
bootstrap.yml配置檔案:啟動配置,應用相關配置在git倉庫
spring:
application:
name: Zuul-Gateway
cloud:
config:
profile: dev
label: master
discovery:
enabled: true
service-id: Config-Server
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka/
application.yml:git倉庫配置檔案,此處使用routes功能,對接k8s api微服務,zipkin為追蹤服務端
server:
port: 5000
spring:
sleuth:
sampler:
percentage: 1.0
zipkin:
base-url: http://localhost:9411
zuul:
routes:
k8sapi:
path: /cloud/**
serviceId: Service-Kubernetes
5.服務追蹤框架
注:spring boot 2.0版本之後不再支援zipkin開發,改為成熟元件,可以通過jar包或者docker映象的方式執行
參考:https://zipkin.io/pages/quickstart
在開發主機上以映象方式執行zipkin server
docker run -d -p 9411:9411 openzipkin/zipkin
6.執行測試
改造k8s api微服務:加入相關依賴,主程式使用@EnableEurekaClient註解與,配置zipkin選項與地址
訪問註冊中心:http://ip:8761
訪問kubernetes的服務,通過服務閘道器:http://ip:5000/cloud/**
此處使用swagger-ui直接訪問:
檢視追蹤鏈路:
呼叫關係:
以上,版本升級與基本框架搭建完成。
相關文章
- Spring Cloud Spring Boot mybatis 企業分散式微服務雲(七)服務容錯保護(Hystrix服務降級)【Dalston版】CloudSpring BootMyBatis分散式微服務
- spring boot / cloud (二十) 相同服務,釋出不同版本,支撐並行的業務需求Spring BootCloud並行
- Spring Boot 單體應用一鍵升級成 Spring Cloud AlibabaSpring BootCloud
- Spring Cloud與Spring Boot版本匹配關係CloudSpring Boot
- 進擊的 Spring Cloud Alibaba —— 框架與服務SpringCloud框架
- android界的spring-boot http服務框架AndroidSpringbootHTTP框架
- Spring Cloud構建微服務架構-Hystrix服務降級SpringCloud微服務架構
- 服務治理: Spring Cloud EurekaSpringCloud
- spring cloud (一)服務治理SpringCloud
- spring-cloud 服務治理SpringCloud
- spring cloud 服務搭建(1)SpringCloud
- Spring Cloud構建微服務架構—服務容錯保護(Hystrix服務降級)SpringCloud微服務架構
- Spring Boot整合Spring Cloud Release進行版本釋出管理Spring BootCloud
- 企業級 Spring Boot 教程 (十四)用restTemplate消費服務Spring BootREST
- Spring Cloud構建微服務架構-spring cloud服務監控中心SpringCloud微服務架構
- spring boot構建restful服務Spring BootREST
- Spring Boot 整合郵件服務Spring Boot
- Spring Boot (十):郵件服務Spring Boot
- 服務治理->搭建服務註冊中心: Spring Cloud EurSpringCloud
- Spring Cloud Spring Boot mybatis 企業分散式微服務雲(五)服務消費(Feign)【Dalston版】CloudSpring BootMyBatis分散式微服務
- Spring Cloud Spring Boot mybatis 企業分散式微服務雲(三)服務消費(基礎)【Dalston版】CloudSpring BootMyBatis分散式微服務
- Spring Cloud Spring Boot mybatis 企業分散式微服務雲(四)服務消費(Ribbon)【Dalston版】CloudSpring BootMyBatis分散式微服務
- Spring Cloud Alibaba系列(五)sentinel實現服務限流降級SpringCloud
- Spring Boot 1.5.* 升級 2.1 – 完善中Spring Boot
- Spring Cloud Stream微服務訊息框架SpringCloud微服務框架
- 理解Spring Cloud微服務框架核心元件SpringCloud微服務框架元件
- Spring Boot & Cloud 輕量替代框架 Solon 1.4.1 釋出Spring BootCloud框架
- Spring Cloud服務發現元件EurekaSpringCloud元件
- Spring Cloud Alibaba與Spring Boot、Spring Cloud之間不得不說的版本關係CloudSpring Boot
- Spring Cloud Spring Boot mybatis 企業分散式微服務雲(二)服務註冊與發現(Consul)CloudSpring BootMyBatis分散式微服務
- Spring Cloud Spring Boot mybatis分散式微服務雲架構CloudSpring BootMyBatis分散式微服務架構
- Spring Cloud Greenwich 新特性和F升級分享SpringCloud
- Spring Cloud Alibaba IDE 工具重大升級SpringCloudIDE
- 企業級 SpringCloud 教程 - 服務鏈路追蹤(Spring Cloud Sleuth)SpringGCCloud
- (2)java Spring Cloud+Spring boot企業快速開發架構之Spring Cloud版本介紹JavaCloudSpring Boot架構
- Spring Boot(二十):使用 spring-boot-admin 對 Spring Boot 服務進行監控Spring Boot
- spring cloud+spring boot 電子商務-spring boot 引用方式${}和@@用法與區別CloudSpring Boot
- spring-boot-route(十九)spring-boot-admin監控服務Springboot