亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

Spring Cloud實(shí)戰(zhàn)(二)-Spring Cloud Eureka

jaysun / 2496人閱讀

摘要:概要什么是使用獲取服務(wù)調(diào)用整合構(gòu)建集群什么是模塊提供的功能是被動式的服務(wù)發(fā)現(xiàn)什么是服務(wù)發(fā)現(xiàn)服務(wù)發(fā)現(xiàn)就像聊天室一個(gè)每個(gè)用戶來的時(shí)候去服務(wù)器上注冊這樣他的好友們就能看到你你同時(shí)也將獲取好友的上線列表在微服務(wù)中服務(wù)就相當(dāng)于聊天室的用戶而服務(wù)注冊中

概要

什么是Spring Cloud Eureka?

使用Eureka獲取服務(wù)調(diào)用

Eureka整合Spring Config Server

構(gòu)建Eureka Server集群

什么是Spring Cloud Eureka?

Spring Cloud Eureka 模塊提供的功能是被動式的服務(wù)發(fā)現(xiàn).
什么是服務(wù)發(fā)現(xiàn)?
服務(wù)發(fā)現(xiàn)就像聊天室一個(gè),每個(gè)用戶來的時(shí)候去服務(wù)器上注冊,這樣他的好友們就能看到你,你同時(shí)也將獲取好友的上線列表.
在微服務(wù)中,服務(wù)就相當(dāng)于聊天室的用戶,而服務(wù)注冊中心就像聊天室服務(wù)器一樣,目前服務(wù)發(fā)現(xiàn)的解決方案有Eureka,Consul,Etcd,Zookeeper,SmartStack,等等.

本文就來講講Eureka,如圖所示,Eureka Client通過HTTP(或者TCP,UDP)去Eureka Server注冊和獲取服務(wù)列表,為了高可用一般會有多個(gè)Eureka Server組成集群.Eureka會移除那些心跳檢查未到達(dá)的服務(wù).

使用Eureka獲取服務(wù)調(diào)用

這節(jié)我們將構(gòu)建一個(gè)Eureka Server,5個(gè)Eureka Client(分別提供主語,動詞,量詞,形容詞,名詞服務(wù)),再構(gòu)建一個(gè)Sentence Eureka Client 來用前面五個(gè)服務(wù)造句.

1.創(chuàng)建mmb-eureka-server

添加依賴-spring-cloud-starter-parent,spring-cloud-starter-eureka-server(pom.xml)

 
        org.springframework.cloud
        spring-cloud-starter-parent
        Brixton.SR4
        
    

    
        
            org.springframework.cloud
            spring-cloud-starter-eureka-server
        
    

配置應(yīng)用信息-端口和應(yīng)用名稱 application.yml

server:
  port: 8010

spring:
  application:
    name: mmb-eureka-server

啟動服務(wù)

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

打開管理頁面,檢查是否成功


2.創(chuàng)建mmb-eureka-client

添加依賴-spring-cloud-starter-parent,spring-cloud-starter-eureka (pom.xml)

  
        org.springframework.cloud
        spring-cloud-starter-parent
        Brixton.SR4
        
    

    
        
            org.springframework.cloud
            spring-cloud-starter-eureka
        
    

配置應(yīng)用信息-eureka server信息,實(shí)際使用的words信息,端口號 (application.yml)

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8010/eureka/

words: 你,我,他

server:
  port: ${PORT:${SERVER_PORT:0}}
#  這個(gè)的意思是隨機(jī)指定個(gè)沒使用的端口

配置啟動信息-應(yīng)用名稱 (bootstrap.xml)

spring:
  application:
    name: mmb-eureka-client-subject

添加Controller-隨機(jī)獲取words中的一條

@RestController
public class Controller {

   @Value("${words}") String words;

    @RequestMapping("/")
    public  String getWord() {
        String[] wordArray = words.split(",");
        int i = (int)Math.round(Math.random() * (wordArray.length - 1));
        return wordArray[i];
    }
}

啟動服務(wù)

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

訪問127.0.0.1/port(看日志可以得到各個(gè)應(yīng)用的port) 看到words里的詞就啟動成功了,

其它的verb,acticle,adjective,noun工程類似,就把words,和spring.application.name改成對應(yīng)的工程名字就好了

3.創(chuàng)建sentence工程

添加依賴-spring-cloud-starter-parent,spring-cloud-starter-eureka,spring-boot-starter-web,spring-boot-starter-actuator (pom.xml)

  
        org.springframework.cloud
        spring-cloud-starter-parent
        Brixton.SR4
        
    

    
        
            org.springframework.cloud
            spring-cloud-starter-eureka
        
        
            org.springframework.boot
            spring-boot-starter-web
        

        
            org.springframework.boot
            spring-boot-starter-actuator
        
    

配置應(yīng)用信息-eureka server和端口號 (application.yml)

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8010/eureka/

server:
  port: 8020

配置啟動信息-應(yīng)用名稱 (bootstrap.yml)

spring:
  application:
    name: mmb-eureka-sentence

添加Controller-用其他eureka-clients(subject,verb,acticle,adjective,noun)的各個(gè)服務(wù)造句

@RestController
public class Controller {

    @Autowired
    DiscoveryClient client;

    @RequestMapping("/sentence")
    public  String getSentence() {
        return
                getWord("mmb-eureka-client-subject") + " "
                        + getWord("MMB-EUREKA-CLIENT-VERB") + " "
                        + getWord("mmb-eureka-client-article") + " "
                        + getWord("mmb-eureka-client-adjective") + " "
                        + getWord("mmb-eureka-client-noun") + "."
                ;//大小寫不區(qū)分
    }

    public String getWord(String service) {
        List list = client.getInstances(service);
        if (list != null && list.size() > 0 ) {
            URI uri = list.get(0).getUri();
            if (uri !=null ) {
                return (new RestTemplate()).getForObject(uri,String.class);
            }
        }
        return null;
    }
}

啟動服務(wù)

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

先啟動Eureka Server,再啟動Eureka Client,在管理頁面上看到服務(wù)都起成功時(shí),訪問127.0.0.1/8020/sentence 可以得到一個(gè)隨機(jī)組成的句子

Eureka整合Spring Config Server

在git的repository里添加application.yml

 eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8010/eureka/

啟動實(shí)戰(zhàn)(一)中的Spring Cloud Config Server

修改各個(gè)client的配置

application.yml移除屬性eureka.client.serviceUrl.defaultZone

bootstrap.yml添加屬性 spring.cloud.config.uri: http://localhost:8001

pom.xml添加依賴spring-cloud-config-client

依次啟動Config Server,Eureka Server,Eureka Client,在管理頁面上看到服務(wù)都起成功時(shí),訪問127.0.0.1/8020/sentence 可以得到一個(gè)隨機(jī)組成的句子
-

如果你想把words信息也放入repository呢?在application.yml中添加,如下信息,各個(gè)client啟動的時(shí)候加上-Dspring.profiles.active對應(yīng)到相應(yīng)的啟動參數(shù)就行了.

    ---
  spring:
    profiles: subject
  words: I,You,He,She,It
  
  ---
  spring:
    profiles: verb
  words: ran,knew,had,saw,bought

  ---
  spring:
    profiles: article
  words: a,the

  ---
  spring:
    profiles: adjective
  words: reasonable,leaky,suspicious,ordinary,unlikely

  ---
  spring:
    profiles: noun
  words: boat,book,vote,seat,backpack,partition,groundhog  
構(gòu)建Eureka Server集群

host文件中添加 (c:WINDOWSsystem32driversetchosts).

  127.0.0.1       eureka-primary
  127.0.0.1       eureka-secondary
  127.0.0.1       eureka-tertiary

Eureka Server的application.yml添加多個(gè)profiles,和instanceId

 ---
spring:
  application:
    name: eureka-server-clustered   
  profiles: primary
server:
  port: 8011  
eureka:
  instance:
    hostname: eureka-primary       
  ---
spring:
  application:
    name: eureka-server-clustered      
  profiles: secondary
server:
  port: 8012
eureka:
  instance:
    hostname: eureka-secondary       
 ---
spring:
  application:
    name: eureka-server-clustered      
  profiles: tertiary
server:
  port: 8013
eureka:
  instance:
    hostname: eureka-tertiary       

此時(shí)Eureka Server 同時(shí)也是個(gè)Eureka Client,需要設(shè)置eureka.client.serviceUrl.defaultZone,值是另外兩個(gè),最終會是下面這樣

---
spring:
  application:
    name: eureka-server-clustered   
  profiles: primary
server:
  port: 8011  
eureka:
  instance:
    hostname: eureka-primary       
  client:
    registerWithEureka: true
    fetchRegistry: true        
    serviceUrl:
      defaultZone: http://eureka-secondary:8012/eureka/,http://eureka-tertiary:8013/eureka/

---
spring:
  application:
    name: eureka-server-clustered      
  profiles: secondary
server:
  port: 8012
eureka:
  instance:
    hostname: eureka-secondary       
  client:
    registerWithEureka: true
    fetchRegistry: true        
    serviceUrl:
      defaultZone: http://eureka-tertiary:8013/eureka/,http://eureka-primary:8011/eureka/

---
spring:
  application:
    name: eureka-server-clustered      
  profiles: tertiary
server:
  port: 8013
eureka:
  instance:
    hostname: eureka-tertiary       
  client:
    registerWithEureka: true
    fetchRegistry: true    
    serviceUrl:
      defaultZone: http://eureka-primary:8011/eureka/,http://eureka-secondary:8012/eureka/      

以-Dspring.profiles.active=primary (and secondary, and tertiary)為啟動參數(shù)分別啟動Eureka Server

修改所有Eureka Client的eureka.client.serviceUrl.defaultZone值為http://eureka-primary:8011/eu...逗號分隔,無空白),集群啟動成功登錄管理頁面查看,如下圖所示即成功

再啟動所有的Eureka Clients,查看http://localhost:8020/sentence 是否成功

為了測試容錯(cuò)性,關(guān)掉兩個(gè)Eureka Client,重啟若干個(gè)Eureka Client,觀察啟動是否報(bào)錯(cuò),再去查看查看http://localhost:8020/sentence 是否成功

特別感謝 kennyk65
Spring Cloud 中文用戶組 31777218
Spring-Cloud-Config 官方文檔-中文譯本 (本人有參與,哈哈)
Spring Cloud Netflix 官網(wǎng)文檔-中文譯本
本文實(shí)例github地址 mmb-eureka

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/64983.html

相關(guān)文章

  • Spring Cloud實(shí)戰(zhàn)(五)-Spring Cloud Netflix Hystrix

    摘要:實(shí)戰(zhàn)五概要什么是怎么用常見配置介紹什么是是分布式系統(tǒng)處理超時(shí)和錯(cuò)誤的機(jī)制如下圖所示分布式系統(tǒng)中某個(gè)用戶請求依賴服務(wù)當(dāng)此請求并發(fā)超過的時(shí)候服務(wù)處理速度變慢但是服務(wù)還是被調(diào)用大量請求會阻塞在服務(wù)器上影響其它整個(gè)服務(wù)在復(fù)雜的分布式架構(gòu)的應(yīng)用程序 Spring Cloud實(shí)戰(zhàn)(五)-Spring Cloud Netflix Hystrix 概要 什么是Spring Cloud Netflix...

    CrazyCodes 評論0 收藏0
  • Spring Cloud Admin 實(shí)戰(zhàn)

    摘要:簡介用于監(jiān)控基于的應(yīng)用,它是在的基礎(chǔ)上提供簡潔的可視化。提供了很多功能,如顯示和,顯示在線狀態(tài),的日志級別管理,線程管理,管理等。 Spring Cloud Admin 簡介 Spring Boot Admin 用于監(jiān)控基于 Spring Boot 的應(yīng)用,它是在 Spring Boot Actuator 的基礎(chǔ)上提供簡潔的可視化 WEB UI。Spring Boot Admin 提供...

    MrZONT 評論0 收藏0
  • Spring Cloud 上手實(shí)戰(zhàn)-架構(gòu)解析及實(shí)作

    摘要:服務(wù)器將要監(jiān)聽的端口不要使用服務(wù)進(jìn)行注冊不要在本地緩存注冊表信息使用一個(gè)新的注解,就可以讓我們的服務(wù)成為一個(gè)服務(wù)服務(wù)發(fā)現(xiàn)客戶端配置以為例需要做件事情成為服務(wù)發(fā)現(xiàn)的客戶端配置對應(yīng)來說我們只需要配置如下啟動運(yùn)行查看。 Spring簡介 為什么要使用微服務(wù) 單體應(yīng)用: 目前為止絕大部分的web應(yīng)用軟件采用單體應(yīng)用,所有的應(yīng)用的用戶UI、業(yè)務(wù)邏輯、數(shù)據(jù)庫訪問都打包在一個(gè)應(yīng)用程序上。 showI...

    Godtoy 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<