欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring Cloud Netflix架構淺析(小結)

 更新時間:2018年01月26日 10:51:37   作者:海岸線的曙光  
這篇文章主要介紹了Spring Cloud Netflix架構淺析(小結),詳解的介紹了Spring Cloud Netflix的概念和組件等,具有一定的參考價值,感興趣的小伙伴們可以參考一下

最近接觸微服務這塊的東西,對這方面有了一些了解,拿出來和大家分享一下。

1. 微服務框架Spring Boot+Spring Cloud 

Spring Cloud是基于Spring Boot的一整套實現(xiàn)微服務的框架,可以說,Spring Boot作為框架,Spring Cloud作為微服務,一起構成了一種不可忽視的、新生的框架體系。它提供了微服務開發(fā)所需的配置管理、服務發(fā)現(xiàn)、斷路器、智能路由、微代理、控制總線、全局鎖、決策競選、分布式會話和集群狀態(tài)管理等組件,方便易用。Spring Cloud包含了非常多的子框架,其中,Spring Cloud Netflix是其中一套框架,它主要提供的模塊包括:服務發(fā)現(xiàn)、斷路器和監(jiān)控、智能路由、客戶端負載均衡等。

特性

  1. Eureka實例可以注冊和發(fā)現(xiàn)使用spring管理的bean
  2. 嵌入式Eureka服務器可以用聲明式的Java配置創(chuàng)建
  3. Hystrix客戶端可以用簡單的注解驅動
  4. Java配置可以啟用嵌入的Hystrix指示面板
  5. 客戶端負載均衡 

2.  Spring Cloud Netflix組件以及部署

(1)Eureka,服務注冊和發(fā)現(xiàn),它提供了一個服務注冊中心、服務發(fā)現(xiàn)的客戶端,還有一個方便的查看所有注冊的服務的界面。 所有的服務使用Eureka的服務發(fā)現(xiàn)客戶端來將自己注冊到Eureka的服務器上。

(2)Zuul,網(wǎng)關,所有的客戶端請求通過這個網(wǎng)關訪問后臺的服務。他可以使用一定的路由配置來判斷某一個URL由哪個服務來處理。并從Eureka獲取注冊的服務來轉發(fā)請求。

(3)Ribbon,即負載均衡,Zuul網(wǎng)關將一個請求發(fā)送給某一個服務的應用的時候,如果一個服務啟動了多個實例,就會通過Ribbon來通過一定的負載均衡策略來發(fā)送給某一個服務實例。

(4)Feign,服務客戶端,服務之間如果需要相互訪問,可以使用RestTemplate,也可以使用Feign客戶端訪問。它默認會使用Ribbon來實現(xiàn)負載均衡。

(5)Hystrix,監(jiān)控和斷路器。我們只需要在服務接口上添加Hystrix標簽,就可以實現(xiàn)對這個接口的監(jiān)控和斷路器功能。

(6)Hystrix Dashboard,監(jiān)控面板,他提供了一個界面,可以監(jiān)控各個服務上的服務調用所消耗的時間等。

(7)Turbine,監(jiān)控聚合,使用Hystrix監(jiān)控,我們需要打開每一個服務實例的監(jiān)控信息來查看。而Turbine可以幫助我們把所有的服務實例的監(jiān)控信息聚合到一個地方統(tǒng)一查看。

3. Spring Cloud Netflix組件開發(fā)

可以參考其中文文檔:https://springcloud.cc/spring-cloud-netflix.html

(1)服務注冊與監(jiān)控中心:

@SpringBootApplication
@EnableEurekaServer
@EnableHystrixDashboard
public class ApplicationRegistry {
 public static void main(String[] args) {
  new SpringApplicationBuilder(Application.class).web(true).run(args);
 }
}

這里使用spring boot標簽的 @SpringBootApplication 說明當前的應用是一個spring boot應用。這樣我就可以直接用main函數(shù)在IDE里面啟動這個應用,也可以打包后用命令行啟動。當然也可以把打包的war包用tomcat之類的服務器啟動。 使用標簽 @EnableEurekaServer ,就能在啟動過程中啟動Eureka服務注冊中心的組件。它會監(jiān)聽一個端口,默認是8761,來接收服務注冊。并提供一個web頁面,打開以后,可以看到注冊的服務。 添加 @EnableHystrixDashboard 就會提供一個監(jiān)控的頁面,我們可以在上面輸入要監(jiān)控的服務的地址,就可以查看啟用了Hystrix監(jiān)控的接口的調用情況。 當然,為了使用上面的組件,我們需要在maven的POM文件里添加相應的依賴,比如使用 spring-boot-starter-parent ,依賴 spring-cloud-starter-eureka-server 和 spring-cloud-starter-hystrix-dashboard 等。

(2)服務間調用:

兩種方式可以進行服務調用,RestTemplate和FeignClient。不管是什么方式,他都是通過REST接口調用服務的http接口,參數(shù)和結果默認都是通過jackson序列化和反序列化。因為Spring MVC的RestController定義的接口,返回的數(shù)據(jù)都是通過jackson序列化成json數(shù)據(jù)。

第一種:RestTemplate,只需要定義一個RestTemplate的Bean,設置成 LoadBalanced 即可:

@Configuration
public class SomeCloudConfiguration {
 @LoadBalanced
 @Bean
 RestTemplate restTemplate() {
  return new RestTemplate();
 }
}

這樣我們就可以在需要用的地方注入這個bean使用:

public class SomeServiceClass {
 @Autowired
 private RestTemplate restTemplate;
 public String getUserById(Long userId) {
  UserDTO results = restTemplate.getForObject("http://users/getUserDetail/" + userId, UserDTO.class);
  return results;
 }
}

其中, users 是服務ID,Ribbon會從服務實例列表獲得這個服務的一個實例,發(fā)送請求,并獲得結果。對象 UserDTO 需要序列號,它的反序列號會自動完成。

第二種:FeignClient

@FeignClient(value = "users", path = "/users")
public interface UserCompositeService {
 @RequestMapping(value = "/getUserDetail/{id}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
 UserDTO getUserById(@PathVariable Long id);
}

我們只需要使用 @FeignClient 定義一個借口,Spring Cloud Feign會幫我們生成一個它的實現(xiàn),從相應的users服務獲取數(shù)據(jù)。 其中, @FeignClient(value = "users", path = "/users/getUserDetail") 里面的value是服務ID,path是這一組接口的path前綴。 在下面的方法定義里,就好像設置Spring MVC的接口一樣,對于這個方法,它對應的URL是 /users/getUserDetail/{id} 。 然后,在使用它的時候,就像注入一個一般的服務一樣注入后使用即可:

public class SomeOtherServiceClass {
 @Autowired
 private UserCompositeService userService;
 public void doSomething() {
  // .....     
  UserDTO results = userService.getUserById(userId);
  // other operation...     
 }
}

(3)斷路器:

//斷路器:為了解決當某個方法調用失敗的時候,調用后備方法來替代失敗的方法,已達到容錯/阻止級聯(lián)錯誤的功能
//fallbackMethod指定后備方法
@HystrixCommand(fallbackMethod = "doStudentFallback")
@RequestMapping(value = "dostudent",method = RequestMethod.GET)
public String doStudent(){
 return "your name:secret,your age:secret!";
}

public String doStudentFallback(){
 return "your name:FEIFEI,your age:26!";
}

其中,使用@EnableCircuitBreaker來啟用斷路器支持,Spring Cloud提供了一個控制臺來監(jiān)控斷路器的運行情況,通過@EnableHystrixDashboard注解開啟。

以上是簡單的一些對Spring Cloud Netflix組件的介紹。希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • IntelliJ IDEA中查看文件內所有已聲明的方法(類似eclipse的outline)

    IntelliJ IDEA中查看文件內所有已聲明的方法(類似eclipse的outline)

    今天小編就為大家分享一篇關于IntelliJ IDEA中查看文件內所有已聲明的方法(類似eclipse的outline),小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • Java中ArrayList和SubList的坑面試題

    Java中ArrayList和SubList的坑面試題

    集合是Java開發(fā)日常開發(fā)中經(jīng)常會使用到的,下面這篇文章主要給大家介紹了關于Java中ArrayList和SubList的坑面試題,需要的朋友可以參考下
    2022-05-05
  • JavaSwing基礎之Layout布局相關知識詳解

    JavaSwing基礎之Layout布局相關知識詳解

    上次我們說到View的Mearsure流程,今天接著說說layout. 關于layout,很多朋友知道它是負責布局的,那么具體是怎么布局的?viewGroup和view的layout方法又有什么不同?一起來看看吧,需要的朋友可以參考下
    2021-05-05
  • Java漢字轉拼音類庫Pinyin4j詳細使用方法與實例

    Java漢字轉拼音類庫Pinyin4j詳細使用方法與實例

    這篇文章主要介紹了Java漢字轉拼音類庫Pinyin4j詳細使用方法與實例,需要的朋友可以參考下
    2020-02-02
  • 了解SpringMVC的上傳和下載

    了解SpringMVC的上傳和下載

    今天小編就為大家分享一篇關于Spring整合Springmvc的相關介紹,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2021-07-07
  • Spring Boot 2 整合 QuartJob 實現(xiàn)定時器實時管理功能

    Spring Boot 2 整合 QuartJob 實現(xiàn)定時器實時管理功能

    Quartz是一個完全由java編寫的開源作業(yè)調度框架,形式簡易,功能強大。接下來通過本文給大家分享Spring Boot 2 整合 QuartJob 實現(xiàn)定時器實時管理功能,感興趣的朋友一起看看吧
    2019-11-11
  • Spring AOP源碼深入分析

    Spring AOP源碼深入分析

    這篇文章主要介紹了Spring AOP源碼,AOP(Aspect Orient Programming),直譯過來就是 面向切面編程,AOP 是一種編程思想,是面向對象編程(OOP)的一種補充
    2023-01-01
  • 基于Java中最常用的集合類框架之HashMap(詳解)

    基于Java中最常用的集合類框架之HashMap(詳解)

    下面小編就為大家?guī)硪黄贘ava中最常用的集合類框架之HashMap(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • Java自定義類數(shù)組報null的相關問題及解決

    Java自定義類數(shù)組報null的相關問題及解決

    這篇文章主要介紹了Java自定義類數(shù)組報null的相關問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Java使用Maven BOM統(tǒng)一管理版本號的實現(xiàn)

    Java使用Maven BOM統(tǒng)一管理版本號的實現(xiàn)

    這篇文章主要介紹了Java使用Maven BOM統(tǒng)一管理版本號的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04

最新評論