SpringCloud學習筆記
標簽: SpringCloud Feign Eureka
目錄
1.2.SpringCloud 與 SpringBoot 的關系
4)訪問Eureka主頁http://127.0.0.1:6868/
1.SpringCloud 簡介
1.1.什么是 SpringCloud
1.2.SpringCloud 與 SpringBoot 的關系
1.3.SpringCloud 主要框架
1.4.SpringCloud 與 Dubbo 對比
Dubbo | SpringCloud | |
服務注冊中心 | Zookeeper | Spring Cloud Netflix Eureka |
服務調用方式 | RPC | REST API |
服務網關 | 無 | Spring Cloud Netflix Zuul |
熔斷器 | 不完善 | Spring Cloud Netflix Hystrix |
分布式配置 | 無 | Spring Cloud Config |
服務跟蹤 | 無 | Spring Cloud Sleuth |
消息總線 | 無 | Spring Cloud Bus |
數據流 | 無 | Spring Cloud Stream |
批量任務 | 無 | Spring Cloud Task |
…… | …… | …… |
1.5.說說 SpringCloud 的版本
Spring Boot | Spring Cloud |
1.2.x | Angel 版本 |
1.3.x | Brixton 版本 |
1.4.x | Camden 版本 |
1.5.x | Dalston 版本、Edgware 版本 |
2.0.x | Finchley 版本 |
2.服務發現組件 Eureka
2.1.Eureka簡介
2.2.Eureka服務端開發
1)搭建Eureka服務端微服務項目

2)在pom.xml導入eureka服務端依賴
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
3)在application.yml配置eureka服務端
server:
port: 6868
eureka:
client:
registerWithEureka: false #是否將自己注冊到 Eureka 服務中,本身就是,無需注冊
fetchRegistry: false #是否從Euraka中獲取注冊信息
serviceUrl: #Eureka 客戶端與 Eureka 服務端進行交互的地址
defaultZone: http://127.0.0.1:${server.port}/eureka/
4)編寫啟動類(Eureka服務端注解)
package com.tensquare.eureka;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@SpringBootApplication
@EnableEurekaServer
public class EurekaServer {
public static void main(String[] args) {
SpringApplication.run(EurekaServer.class, args);
}
}
2.3.Eureka客戶端(服務注冊)
1)在pom.xml導入eureka客戶端依賴
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
2)在application.yml配置eureka客戶端
server:
port: 9010
spring:
application:
name: tensquare-friend
eureka:
client:
service-url:
defaultZone: http://localhost:6868/eureka
instance:
prefer-ip-address: true
3)在啟動類添加Eureka客戶端注解
package com.tensquare.friend;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
@SpringBootApplication
@EnableEurekaClient
public class FriendApplication {
public static void main(String[] args) {
SpringApplication.run(FriendApplication.class,args);
}
}
4)訪問Eureka主頁http://127.0.0.1:6868/
如圖所示,我們單個微服務注冊成功
2.4.保護模式


3. Feign 實現服務間調用
3.1.Feign簡介
3.2.案例
1)在pom.xml導入feign坐標
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
2)在啟動類添加Feign注解
package com.tensquare.friend;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import util.JwtUtil;
@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients
@EnableDiscoveryClient
public class FriendApplication {
public static void main(String[] args) {
SpringApplication.run(FriendApplication.class,args);
}
}
3)編寫遠程調用接口(*)
package com.tensquare.friend.client;
import entity.Result;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
/**
* 調用其他微服務注意事項
* 1.調用方與被調用方都需要注冊eureka中
* 2.調用接口需要寫上被調用方的服務名,即application.yml中的spring: application: name: tensquare-user
* 3.服務名不能帶下劃線_,eureka會識別不到
* 4.調用方法跟被調用方contorller方法名一致
* 5.@RequestMapping--value記得帶上全url,例如最上方的/user
* 6.@PathVariable后一定要帶上("參數"),參數需要跟上方路徑參數一致,否則會識別不到參數
*/
@FeignClient("tensquare-user")
public interface UserClient {
/**
* 更新用戶關注數
*/
@RequestMapping(value = "/user/updateFollowcount/{userid}/{x}", method = RequestMethod.PUT)
public Result updateFollowcount(@PathVariable("userid") String userid, @PathVariable("x") int x);
/**
* 更新用戶粉絲
*/
@RequestMapping(value = "/user/updateFanscount/{userid}/{x}", method = RequestMethod.PUT)
public Result updateFanscount(@PathVariable("userid") String userid, @PathVariable("x") int x);
}
4)使用遠程調用接口完成服務調用
3.3.負載均衡(默認輪詢)
測試:同時開啟多個基礎微服務,看是否是輪流調用。
智能推薦
SpringCloud學習筆記
SpringCloud學習筆記 ESB企業服務總線:用來連接各個服務節點,為了集成各種不同的服務。 1.系統架構演變 目標: 了解項目架構的演變歷程。 小結: 集中式架構 垂直拆分 分布式架構 SOA面向服務架構 微服務架構 2.微服務架構說明 目標: 了解SOA與微服務架構的區別以及說出微服務架構的特點。 分析: &emsp...
SpringCloud學習筆記-Eureka
注冊中心-Eureka Spring Cloud 封裝了 Netflix 公司開發的 Eureka 模塊來實現服務注冊和發現。Eureka 采用了 C-S 的設計架構。Eureka Server 作為服務注冊功能的服務器,它是服務注冊中心。而系統中的其他微服務,使用 Eureka 的客戶端連接到 Eureka Server,并維持心跳連接。這樣系統的維護人員就可以通過 Eureka Server ...
SpringCloud學習筆記------Feign
feign有假裝的意思 為什么要叫假裝? Feign可以把Rest的請求進行隱藏,偽裝成類似SpringMVC的Controller一樣。你不用再自己拼接url,拼接參數等等操作,一切都交給Feign去做。 快速入門 先用起來,我們在使用的時候揭開它神秘的面紗吧 導入依賴 pom.xml 引入: Feign的客戶端 寫一個Controller dao層 啟...
SpringCloud學習筆記
介紹 Spring Cloud是一系列技術的有序整合。它利用Spring Boot的開發便利性巧妙地簡化了分布式系統基礎設施的開發。 Spring Boot擅長的是集成,把世界上最好的框架集成到自己項目中,Spring Cloud也是一樣,把非常流行的微服務的技術整合到一起。 Spring Cloud從架構層面上降低了對大型系統構建的要求和難度,使我們以非常低的成本(技術或者硬件)搭建一套高效、分...
SpringCloud 學習筆記
SpringCloud 學習筆記 文章目錄 SpringCloud 學習筆記 1 簡介 1.1 什么是 SpringCloud 1.2 SpringCloud 能干什么 2. 微服務 2.1 什么是微服務 2.2 微服務與微服務架構 2.3 微服務架構的四個核心問題 2.4 微服務優缺點 2.5 微服務技術棧有哪些? 2.6 為什么選擇 SpringCloud 作為微服務架構 1. 選型依據 2....
猜你喜歡
SpringCloud - Nacos學習筆記
Nacos學習筆記 nacos簡介 Nacos使用 Nacos Server安裝 Nacos啟動 Nacos關閉 單機模式支持mysql 集群部署 配置管理 客戶端使用方式 動態刷新 命名空間與分組 命名空間 分組 自定義擴展的 Data Id 配置 服務注冊發現 nacos簡介 Nacos 支持幾乎所有主流類型的“服務”的發現、配置和管理: Spring Cloud Du...
SpringCloud Gateway學習筆記
SpringCloud Gateway是Spring cloud的一個全新項目,是基于Spring5.0、Spring Boot 2.0和project Reactor等技術開發的網關,它旨在為微服務架構提供一個簡單有效的統一的API路由管理方式。 SrpingCloud Gateway作為spring cloud生態系統的網關,目標是替代Zuul,為了提升網關的性能,SpringCloud Ga...
springcloud 學習筆記
1. Eureka 注冊中心 Spring cloud 封裝了Netflix開發的Eureka來實現服務的注冊和發現 1.引入依賴 2.書寫配置文件 3.書寫啟動類 Eureka 注冊中心需要在啟動類上添加@@EnableEurekaServer 在服務提供者和消費者的啟動類上添加@EnableEurekaClient 同時在配置文件中添加上相關配置 4. 服務提供者和消費者配置 添加相關的mav...
freemarker + ItextRender 根據模板生成PDF文件
1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...