SpringCloud-Finchley使用SpringBootAdmin監控各個微服務
1.建立夫工程SpringCloudAdmin,pom檔案為
<?xml version="1.0" encoding="UTF-8"?> <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> <groupId>com.xueqing.demo</groupId> <artifactId>springcloudadmin</artifactId> <version>1.0-SNAPSHOT</version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.3.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> <spring-cloud.version>Finchley.RELEASE</spring-cloud.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</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-test</artifactId> <scope>test</scope> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
2.建立子工程server-admin,pom檔案為
<?xml version="1.0" encoding="UTF-8"?> <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> <groupId>com.xueqing.demo</groupId> <artifactId>service-admin</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>service-admin</name> <description>Demo project for Spring Boot</description> <parent> <groupId>com.xueqing.demo</groupId> <artifactId>springcloudadmin</artifactId> <version>1.0-SNAPSHOT</version> </parent> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-starter-server</artifactId> <version>2.0.2</version> </dependency> <dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-server-ui</artifactId> <version>2.0.2</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
3.server-admin中啟動類為
package com.xueqing.demo.serviceadmin; import de.codecentric.boot.admin.server.config.EnableAdminServer; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.EnableEurekaClient; @EnableAdminServer @SpringBootApplication public class ServiceAdminApplication { public static void main(String[] args) { SpringApplication.run(ServiceAdminApplication.class, args); } }
4.配置admin的登陸
package com.xueqing.demo.serviceadmin;
import de.codecentric.boot.admin.server.config.AdminServerProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler;
@Configuration
public class SecuritySecureConfig extends WebSecurityConfigurerAdapter {
private final String adminContextPath;
public SecuritySecureConfig(AdminServerProperties adminServerProperties) {
this.adminContextPath = adminServerProperties.getContextPath();
}
@Override
protected void configure(HttpSecurity http) throws Exception {
// @formatter:off
SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();
successHandler.setTargetUrlParameter("redirectTo");
http.authorizeRequests()
.antMatchers(adminContextPath + "/assets/**").permitAll()
.antMatchers(adminContextPath + "/login").permitAll()
.anyRequest().authenticated()
.and()
.formLogin().loginPage(adminContextPath + "/login").successHandler(successHandler).and()
.logout().logoutUrl(adminContextPath + "/logout").and()
.httpBasic().and()
.csrf().disable();
// @formatter:on
}
}
5.application.yml配置檔案為
server:
port: 5000
spring:
application:
name: admin-server
security:
user:
name: 'admin'
password: 'admin'
eureka:
client:
registryFetchIntervalSeconds: 5
service-url:
defaultZone: ${EUREKA_SERVICE_URL:http://peer1:8761}/eureka/
instance:
leaseRenewalIntervalInSeconds: 10
health-check-url-path: /actuator/health
metadata-map:
user.name: ${spring.security.user.name}
user.password: ${spring.security.user.password}
management:
endpoints:
web:
exposure:
include: "*"
endpoint:
health:
show-details: ALWAYS
6.建立client-admin-one和client-admin-two,兩個子工程一致,以one為例,pom
<?xml version="1.0" encoding="UTF-8"?>
<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>
<groupId>com.xueqing.demo</groupId>
<artifactId>client-one-admin</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>client-one-admin</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>com.xueqing.demo</groupId>
<artifactId>springcloudadmin</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!--<dependency>-->
<!--<groupId>de.codecentric</groupId>-->
<!--<artifactId>spring-boot-admin-starter-client</artifactId>-->
<!--<version>2.0.1</version>-->
<!--</dependency>-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!--**********************************turbine*********************************-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
7.spring啟動類
package com.xueqing.demo.clientoneadmin;
import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@RestController
public class ClientOneAdminApplication {
public static void main(String[] args) {
SpringApplication.run(ClientOneAdminApplication.class, args);
}
@Value("${server.port}")
String port;
@GetMapping("/hi")
@HystrixCommand(fallbackMethod = "hiError")
public String hi(@RequestParam(required = false,defaultValue = "cralor")String name){
return "hi "+name+",i am client one and from port:"+port;
}
public String hiError(String name){
return "hi "+name+",sorry,error!";
}
}
8.application配置檔案
server:
port: 8963
spring:
application:
name: client-admin-two
boot:
admin:
client:
url: http://localhost:5000
eureka:
instance:
leaseRenewalIntervalInSeconds: 10 #表示eureka client傳送心跳給server端的頻率,預設為30秒
health-check-url-path: /actuator/health #健康檢查的地址(依賴spring-boot-starter-actuator)
client:
registryFetchIntervalSeconds: 5 #表示eureka client間隔多久去拉取服務註冊資訊,預設為30秒
service-url:
defaultZone: ${EUREKA_SERVICE_URL:http://localhost:8761}/eureka/
management:
endpoints:
web:
exposure:
include: '*'
endpoint:
health:
show-details: ALWAYS
9.訪問localhost:5000 使用者名稱admin,密碼admin。驗證admin是否正常
相關推薦
SpringCloud-Finchley使用SpringBootAdmin監控各個微服務
1.建立夫工程SpringCloudAdmin,pom檔案為 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"
企業分布式SpringCloud+SpringBoot+Mybatis+shiro+微服務 技術分享
spring cloud spring boot springmvc mybatis eureka 介紹 Commonservice-system是一個大型分布式、微服務、面向企業的JavaEE體系快速研發平臺,基於模塊化、服務化、原子化、熱插拔的設計思想,使用成熟領先的無商業限制的主流
微服務springcloud—Feign修改使用者微服務和修改電影微服務
修改使用者為服務 1.複製專案microservice-provider-user,將ArtfactId修改為microservice-provider-user-with-auth。 2.微服務新增如下依賴 <dependency> <gr
SpringCloud核心元件在微服務架構中的作用
Eureka: 各個服務啟動時,Eureka Client都會將服務註冊到Eureka Server,並且Eureka Client還可以反過來從Eureka Server拉取登錄檔,從而知道其他服務在哪裡。 Ribbon:服務間發起請求的時候,基於Ribbon 做負載均衡,從一個服務的多臺機器選擇
SpringCloud(一)微服務概述及SpringCloud元件
1、微服務概述 微服務的核心就是將傳統的一站式應用,根據業務拆分成一個一個的服務,徹底地去耦合,每一個微服務提供單個業務功能的服務,一個服務做一件事,從技術的角度看就是一種小而獨立的處理過程,類似程序概念,能夠自行單獨啟動或銷燬,擁有自己獨立的資料庫。 微服務架構需要的功能或使用場景:
java複習筆記2--SpringCloud系列一:微服務啟動原理探索
微服務架構的趨勢 隨著資料量的不斷增大,大資料時代的到來,網際網路技術的不斷髮展和變革,微服務架構和雲服務平臺以及大資料成為了時下最熱門的話題。現在,比較流行的微服務框架也有很多, 比如阿里的Dubbo,基於soringBoot的SpringCloud,Apac
java複習筆記3--SpringCloud系列一:微服務啟動原理探之beanFactory載入
昨天,我們對SpringApplication的初始化以及SpringApplication.run方法中的部分程式碼進行了解讀和追蹤。這一塊的重點就是Spring的 SPI,META-INF/spring.factories檔案的格式以及載入機制。一定要花時間
SpringCloud學習筆記:微服務和SpringCloud是什麼?
一、什麼是微服務 1、馬丁福勒對微服務的概述:微服務架構一種架構模式或者說是一種架構風格,它提倡將單一應用程式劃分成一組小的服務,每個服務執行在其獨立的自己的程序中,服務之間相互協作、相互配合,為使用者提供最終價值。服務之間採用輕量級的通訊機制互相溝通(通常是基
java複習筆記3--SpringCloud系列一:微服務啟動原理探索之beanFactory載入
昨天,我們對SpringApplication的初始化以及SpringApplication.run方法中的部分程式碼進行了解讀和追蹤。這一塊的重點就是Spring的 SPI,META-INF/spring.factories檔案的格式以及載入機制。一定要花時間
微服務springcloud—為什麼要實現微服務跟蹤和SpringCloudSleuth簡介
為什麼要實現微服務跟蹤 談到微服務跟蹤,就不得提一下Peter Deutsch的文章The Eight Fallacies of Distributed Computing(分散式計算八大誤區),大致內容如下: 網路可靠 延遲為零 頻寬無限 網路絕對安全 網路拓
Spring Cloud中如何保證各個微服務之間呼叫的安全性
一.背景 微服務架構下,我們的系統根據業務被拆分成了多個職責單一的微服務。 每個服務都有自己的一套API提供給別的服務呼叫,那麼如何保證安全性呢? 不是說你想呼叫就可以呼叫,一定要有認證機制,是我們內部服務發出的請求,才可以呼叫我們的介面。 需要注意的是
SpringCloud—— 第一章:微服務架構介紹
https://www.bilibili.com/video/av32229211?from=search&seid=8405486316816129654 單體架構介紹 微服務架構 常見軟
SpringCloud--SpringCloud Config構建統一微服務管理配置中心
在微服務架構中,微服務的配置管理一般有以下幾個需求: 集中管理配置。一個使用微服務架構的應用系統可能會包含成百上千個微服務,因此集中管理配置是非常有必要的。 不同環境不同配置。例如,資料來源配置在不同的環境(開發、測試、預釋出、生產等)中時不同的。 執行期間
Spring Cloud中如何保證各個微服務之間呼叫的安全性(下篇)
今天我們繼續接著上篇文章來聊一聊如何能夠在呼叫方實現token的自動設定以及重新整理 我們的認證token是放在請求頭中的,相對於把token放在請求引數中更為友好,對業務介面無侵入性 但是這種方式如果需要自己設定token就麻煩了,如果是引數的形式,那
SpringCloud 使用consul作為微服務註冊中心
eureka宣佈閉源,使用consul作為服務註冊中心。 1、parent pom檔案 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"
SpringBoot,SpringCloud,Docker構建微服務學習筆記
SpringCloud與阿里巴巴的dubbo都是實現微服務架構的基礎框架,由與我在學習的時候是提供SpringBoot來嘗試構建微服務,因此我使用了SpringCloud。 SpringCloud的子專案非常多,在最開始學習微服務的第一步只需要學會微服務的服務
springcloud-hystrix斷路器對微服務的容錯處理
true 導致 服務器 進一步 ping 嘗試 sco 處理 netfilx 使用Hystrix實現微服務的容錯處理 1.實現容錯的手段 如果服務提供者響應的速度特別慢,那麽消費者對提供者的請求就會強制等待,直到提供者響應或者超時。在高負載的情況下,如果不做任何處理,此類問
SpringCloud實現簡單的微服務架構
原文地址:http://blog.csdn.net/lynnlovemin/article/details/79019680 Spring Cloud是一系列框架的有序集合。它利用Spring Boot的開發便利性巧妙地簡化了分散式系統基礎設施的開發,如服務發現註冊、
SpringCloud實戰 | 第五篇:SpringCloud整合OpenFeign實現微服務之間的呼叫
## **一. 前言** 微服務實戰系列是基於開源微服務專案 [有來商城youlai-mall](https://github.com/hxrui/youlai-mall) 版本升級為背景來開展的,本篇則是講述SpringCloud整合OpenFeign實現微服務之間的相互呼叫,有興趣的朋友可以進去給個sta
使用SpringBoot Admin監控SpringCloud微服務
urb val gap 中心 1.5 支持 環境 cover ref 本文基於SpringCloud的環境和配置上增加配置信息,而不是從0開始的配置。 一、搭建admin服務端 1、引入pom <properties> <spring-boot-