国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

SpringCloud 微服務(wù)系列——【基礎(chǔ)與服務(wù)注冊中心詳解】

這篇具有很好參考價值的文章主要介紹了SpringCloud 微服務(wù)系列——【基礎(chǔ)與服務(wù)注冊中心詳解】。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

SpringCloud 微服務(wù)系列——【基礎(chǔ)與服務(wù)注冊中心詳解】

?作者簡介:2022年博客新星 第八。熱愛國學(xué)的Java后端開發(fā)者,修心和技術(shù)同步精進(jìn)。
??個人主頁:Java Fans的博客
??個人信條:不遷怒,不貳過。小知識,大智慧。
??當(dāng)前專欄:SpringCloud 微服務(wù)學(xué)習(xí)專欄
?特色專欄:國學(xué)周更-心性養(yǎng)成之路
??本文內(nèi)容:SpringCloud 微服務(wù)系列——【基礎(chǔ)與服務(wù)注冊中心詳解】

SpringCloud 微服務(wù)系列——【基礎(chǔ)與服務(wù)注冊中心詳解】

1、什么是微服務(wù)

官網(wǎng): https://www.martinfowler.com/articles/microservices.html

In short, the microservice architectural(架構(gòu)) style is an approach to developing a single application as a suite(系列) of small services, each running in its own process(進(jìn)程) and communicating with lightweight mechanisms, often an HTTP resource API. These services are built around business(業(yè)務(wù)) capabilities(單元) and independently(獨(dú)立) deployable(部署) by fully automated deployment machinery. There is a bare(基于) minimum of centralized(分布式) management(管理) of these services, which may be written in different programming languages and use different data storage technologies. -----[摘自官網(wǎng)]

- a suite of small services            --一系列微小服務(wù)
- running in its own process           --運(yùn)行在自己的進(jìn)程里
- built around business capabilities   --圍繞自己的業(yè)務(wù)開發(fā)
- independently deployable             --獨(dú)立部署
- bare minimum of centralized management of these services  --基于分布式管理
  • 官方定義:微服務(wù)就是由一系列圍繞自己業(yè)務(wù)開發(fā)的微小服務(wù)構(gòu)成,他們獨(dú)立部署運(yùn)行在自己的進(jìn)程里,基于分布式的管理
  • 通俗定義:微服務(wù)是一種架構(gòu),這種架構(gòu)是將單個的整體應(yīng)用程序分割成更小的項目關(guān)聯(lián)的獨(dú)立的服務(wù)。一個服務(wù)通常實(shí)現(xiàn)一組獨(dú)立的特性或功能,包含自己的業(yè)務(wù)邏輯和適配器。各個微服務(wù)之間的關(guān)聯(lián)通過暴露api來實(shí)現(xiàn)。這些獨(dú)立的微服務(wù)不需要部署在同一個虛擬機(jī),同一個系統(tǒng)和同一個應(yīng)用服務(wù)器中。

2、為什么是微服務(wù)

傳統(tǒng)單體應(yīng)用

SpringCloud 微服務(wù)系列——【基礎(chǔ)與服務(wù)注冊中心詳解】

1.優(yōu)點(diǎn)

  • 單一架構(gòu)模式在項目初期很小的時候開發(fā)方便,測試方便,部署方便,運(yùn)行良好。

2.缺點(diǎn)

  • 應(yīng)用隨著時間的推進(jìn),加入的功能越來越多,最終會變得巨大,一個項目中很有可能數(shù)百萬行的代碼,互相之間繁瑣的jar包。
  • 久而久之,開發(fā)效率低,代碼維護(hù)困難
  • 如果想整體應(yīng)用采用新的技術(shù),新的框架或者語言,那是不可能的。
  • 任意模塊的漏洞或者錯誤都會影響這個應(yīng)用,降低系統(tǒng)的可靠性

微服務(wù)架構(gòu)應(yīng)用

SpringCloud 微服務(wù)系列——【基礎(chǔ)與服務(wù)注冊中心詳解】

1.優(yōu)點(diǎn)

  • 將服務(wù)拆分成多個單一職責(zé)的小的服務(wù),進(jìn)行單獨(dú)部署,服務(wù)之間通過網(wǎng)絡(luò)進(jìn)行通信
  • 每個服務(wù)應(yīng)該有自己單獨(dú)的管理團(tuán)隊,高度自治
  • 服務(wù)各自有自己單獨(dú)的職責(zé),服務(wù)之間松耦合,避免因一個模塊的問題導(dǎo)致服務(wù)崩潰

2.缺點(diǎn)

  • 開發(fā)人員要處理分布式系統(tǒng)的復(fù)雜性
  • 多服務(wù)運(yùn)維難度,隨著服務(wù)的增加,運(yùn)維的壓力也在增大
  • 服務(wù)治理 和 服務(wù)監(jiān)控難度增加

3、微服務(wù)的解決方案

3.1、Dubbo (阿里系)

  • 初出茅廬:2011年末,阿里巴巴在GitHub上開源了基于Java的分布式服務(wù)治理框架Dubbo,之后它成為了國內(nèi)該類開源項目的佼佼者,許多開發(fā)者對其表示青睞。同時,先后有不少公司在實(shí)踐中基于Dubbo進(jìn)行分布式系統(tǒng)架構(gòu),目前在GitHub上,它的fork、star數(shù)均已破萬。Dubbo致力于提供高性能和透明化的RPC遠(yuǎn)程服務(wù)調(diào)用方案,以及SOA服務(wù)治理方案,使得應(yīng)用可通過高性能RPC實(shí)現(xiàn)服務(wù)的輸出、輸入功能和Spring框架無縫集成。Dubbo包含遠(yuǎn)程通訊、集群容錯和自動發(fā)現(xiàn)三個核心部分。

  • 停止維護(hù):從2012年10月23日Dubbo 2.5.3發(fā)布后,在Dubbo開源將滿一周年之際,阿里基本停止了對Dubbo的主要升級。只在之后的2013年和2014年更新過2次對Dubbo 2.4的維護(hù)版本,然后停止了所有維護(hù)工作。Dubbo對Srping的支持也停留在了Spring 2.5.6版本上。

  • 死而復(fù)生:多年漫長的等待,隨著微服務(wù)的火熱興起,在國內(nèi)外開發(fā)者對阿里不再升級維護(hù)Dubbo的吐槽聲中,阿里終于開始重新對Dubbo的升級和維護(hù)工作。在2017年9月7日,阿里發(fā)布了Dubbo的2.5.4版本,距離上一個版本2.5.3發(fā)布已經(jīng)接近快5年時間了。在隨后的幾個月中,阿里Dubbo開發(fā)團(tuán)隊以差不多每月一版本的速度開始快速升級迭代,修補(bǔ)了Dubbo老版本多年來存在的諸多bug,并對Spring等組件的支持進(jìn)行了全面升級。

  • 2018年1月8日,Dubbo創(chuàng)始人之一梁飛在Dubbo交流群里透露了Dubbo 3.0正在動工的消息。Dubbo 3.0內(nèi)核與Dubbo 2.0完全不同,但兼容Dubbo 2.0。Dubbo 3.0將以Streaming為內(nèi)核,不再是Dubbo 時代的RPC,但是RPC會在Dubbo 3.0中變成遠(yuǎn)程Streaming對接的一種可選形態(tài)。從Dubbo新版本的路線規(guī)劃上可以看出,新版本的Dubbo在原有服務(wù)治理的功能基礎(chǔ)上,將全面擁抱微服務(wù)解決方案。

  • 結(jié)論:當(dāng)前由于RPC協(xié)議、注冊中心元數(shù)據(jù)不匹配等問題,在面臨微服務(wù)基礎(chǔ)框架選型時Dubbo與Spring Cloud是只能二選一,這也是為什么大家總是拿Dubbo和Spring Cloud做對比的原因之一。Dubbo之后會積極尋求適配到Spring Cloud生態(tài),比如作為Spring Cloud的二進(jìn)制通信方案來發(fā)揮Dubbo的性能優(yōu)勢,或者Dubbo通過模塊化以及對http的支持適配到Spring Cloud。

SpringCloud 微服務(wù)系列——【基礎(chǔ)與服務(wù)注冊中心詳解】

3.2、Spring Cloud

  • Spring Cloud NetFlix

    基于美國Netflix公司開源的組件進(jìn)行封裝,提供了微服務(wù)一棧式的解決方案。

  • Spring Cloud alibaba

    在Spring cloud netflix基礎(chǔ)上封裝了阿里巴巴的微服務(wù)解決方案。

  • Spring Cloud Spring

    目前spring官方趨勢正在逐漸吸收Netflix組件的精華,并在此基礎(chǔ)進(jìn)行二次封裝優(yōu)化,打造spring專有的解決方案

4、什么是 SpringCloud

官網(wǎng): https://cloud.spring.io/spring-cloud-static/Hoxton.SR5/reference/html/

Spring Cloud provides tools for developers to quickly build some of the common patterns in distributed systems (e.g. configuration management, service discovery, circuit breakers, intelligent routing, micro-proxy, control bus). Coordination of distributed systems leads to boiler plate patterns, and using Spring Cloud developers can quickly stand up services and applications that implement those patterns. -------[摘自官網(wǎng)]

通俗理解

  • springcloud是一個含概多個子項目的開發(fā)工具集,集合了眾多的開源框架,他利用了Spring Boot開發(fā)的便利性實(shí)現(xiàn)了很多功能,如服務(wù)注冊,服務(wù)注冊發(fā)現(xiàn),負(fù)載均衡等.SpringCloud在整合過程中主要是針對Netflix(耐非)開源組件的封裝.SpringCloud的出現(xiàn)真正的簡化了分布式架構(gòu)的開發(fā)。NetFlix 是美國的一個在線視頻網(wǎng)站,微服務(wù)業(yè)的翹楚,他是公認(rèn)的大規(guī)模生產(chǎn)級微服務(wù)的杰出實(shí)踐者,NetFlix的開源組件已經(jīng)在他大規(guī)模分布式微服務(wù)環(huán)境中經(jīng)過多年的生產(chǎn)實(shí)戰(zhàn)驗(yàn)證,因此Spring Cloud中很多組件都是基于NetFlix

核心架構(gòu)及其組件

核心組件說明

  • eurekaserver、consul、nacos 服務(wù)注冊中心組件
  • rabbion & openfeign 服務(wù)負(fù)載均衡 和 服務(wù)調(diào)用組件
  • hystrix & hystrix dashboard 服務(wù)斷路器 和 服務(wù)監(jiān)控組件
  • zuul、gateway 服務(wù)網(wǎng)關(guān)組件
  • config 統(tǒng)一配置中心組件
  • bus 消息總線組件

SpringCloud 微服務(wù)系列——【基礎(chǔ)與服務(wù)注冊中心詳解】

5、環(huán)境搭建

5.1、版本命名

springcloud是一個由眾多獨(dú)立子項目組成的大型綜合項目,原則每個子項目上有不同的發(fā)布節(jié)奏,都維護(hù)自己發(fā)布版本號。為了更好的管理springcloud的版本,通過一個資源清單BOM(Bill of Materials),為避免與子項目的發(fā)布號混淆,所以沒有采用版本號的方式,而是通過命名的方式。這些名字是按字母順序排列的。如倫敦地鐵站的名稱(“天使”是第一個版本,“布里斯頓”是第二個版本,"卡姆登"是第三個版本)。當(dāng)單個項目的點(diǎn)發(fā)布累積到一個臨界量,或者其中一個項目中有一個關(guān)鍵缺陷需要每個人都可以使用時,發(fā)布序列將推出名稱以“.SRX”結(jié)尾的“服務(wù)發(fā)布”,其中“X”是一個數(shù)字。

2.倫敦地鐵站名稱 [了解]

  • Angel、Brixton、Camden、Dalston、Edgware、Finchley、Greenwich、Hoxton

5.2、版本選擇

SpringCloud 微服務(wù)系列——【基礎(chǔ)與服務(wù)注冊中心詳解】

5.3、環(huán)境搭建

  • springboot 2.2.5.RELEASE
  • springcloud Hoxton.SR6
  • java8
  • maven 3.3.5
  • idea 2020

1.創(chuàng)建springboot項目 指定版本為 2.2.5.RELEASE版本

<!--    繼承springboot的父工程-->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.2.5.RELEASE</version>
</parent>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
    </plugins>
</build>

2.引入springcloud的版本管理

<!--    統(tǒng)一維護(hù)依賴的版本-->
    <properties>
    	<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <java.version>1.8</java.version>
        <spring-cloud.version>Hoxton.SR6</spring-cloud.version>
    </properties>
    <!--全局管理springcloud版本,并不會引入具體依賴-->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>      <!-- 其它組件小版本號的維護(hù)-->
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

3.完成上述操作springboot與springcloud環(huán)境搭建完成,接下來就是使用到具體的springcloud組件,在項目中引入具體的組件即可

6、服務(wù)注冊中心

什么是服務(wù)注冊中心

所謂服務(wù)注冊中心就是在整個的微服務(wù)架構(gòu)中單獨(dú)提出一個服務(wù),這個服務(wù)不完成系統(tǒng)的任何的業(yè)務(wù)功能,僅僅用來完成對整個微服務(wù)系統(tǒng)的服務(wù)注冊和服務(wù)發(fā)現(xiàn),以及對服務(wù)健康狀態(tài)的監(jiān)控和管理功能。

SpringCloud 微服務(wù)系列——【基礎(chǔ)與服務(wù)注冊中心詳解】

1.服務(wù)注冊中心

  • 可以對所有的微服務(wù)的信息進(jìn)行存儲,如微服務(wù)的名稱、IP、端口等
  • 可以在進(jìn)行服務(wù)調(diào)用時通過服務(wù)發(fā)現(xiàn)查詢可用的微服務(wù)列表及網(wǎng)絡(luò)地址進(jìn)行服務(wù)調(diào)用
  • 可以對所有的微服務(wù)進(jìn)行心跳檢測,如發(fā)現(xiàn)某實(shí)例長時間無法訪問,就會從服務(wù)注冊表移除該實(shí)例

2.常用的注冊中心

springcloud支持的多種注冊中心Eureka、Consul(GO)、Zookeeper(java)、以及阿里巴巴推出Nacos(java)。這些注冊中心在本質(zhì)上都是用來管理服務(wù)的注冊和發(fā)現(xiàn)以及服務(wù)狀態(tài)的檢查的。

6.1、Eureka注冊中心

官網(wǎng):https://github.com/Netflix/eureka/wiki

簡介

Eureka是Netflix開發(fā)的服務(wù)發(fā)現(xiàn)框架,本身是一個基于REST的服務(wù)。SpringCloud將它集成在其子項目spring-cloud-netflix中,以實(shí)現(xiàn)SpringCloud的服務(wù)注冊和發(fā)現(xiàn)功能。Eureka包含兩個組件:

  • Eureka Server
  • Eureka Client
開發(fā)Eureka Server

1.創(chuàng)建項目并引入eureka server依賴

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!--引入 eureka server-->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
    </dependency>
</dependencies>

2.編寫配置application.yml

server:
  port: 8761 # eureka 默認(rèn)的端口號
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:8761/eureka  #指定服務(wù)注冊中心的地址
#指定服務(wù)注冊中心的名字
spring:
  application:
    name: EUREKASERVER #服務(wù)名稱不要使用下劃線  服務(wù)名稱不區(qū)分大小寫 推薦服務(wù)名大寫

3.開啟EurekaServer,入口類加入注解

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

4.訪問Eureka的服務(wù)注冊頁面

http://localhost:8761

SpringCloud 微服務(wù)系列——【基礎(chǔ)與服務(wù)注冊中心詳解】

5.為什么項目啟動控制臺報錯?

SpringCloud 微服務(wù)系列——【基礎(chǔ)與服務(wù)注冊中心詳解】

原因分析:

eureka組件包含 eurekaserver 和 eurekaclient。server是一個服務(wù)注冊中心,用來接受客戶端的注冊。client的特性會讓當(dāng)前啟動的服務(wù)把自己作為eureka的客戶端進(jìn)行服務(wù)中心的注冊,當(dāng)項目啟動時服務(wù)注冊中心還沒有創(chuàng)建好,所以找不到服務(wù)的客戶端組件就直接報錯了,當(dāng)服務(wù)注冊中心啟動成功后,就不再報錯啦!

解決方案:

eureka.client.register-with-eureka=false    #不再將自己作為客戶端進(jìn)行注冊  
eureka.client.fetch-registry=false		# 不獲取注冊信息

再次啟動,控制器也不再報錯

SpringCloud 微服務(wù)系列——【基礎(chǔ)與服務(wù)注冊中心詳解】

開發(fā)Eureka Client

1.創(chuàng)建項目并引入eureka client依賴

<!--引入eureka client-->
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

2.編寫配置application.yml

server.port=8888		#服務(wù)端口號											
spring.application.name=eurekaclient8888	#服務(wù)名稱唯一標(biāo)識
eureka.client.service-url.defaultZone=http://localhost:8761/eureka #eureka注冊中心地址

3.開啟eureka客戶端并加入注解

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

4.啟動服務(wù)注冊中心,然后啟動eureka客戶端服務(wù)

SpringCloud 微服務(wù)系列——【基礎(chǔ)與服務(wù)注冊中心詳解】

5.查看eureka server的服務(wù)注冊情況

SpringCloud 微服務(wù)系列——【基礎(chǔ)與服務(wù)注冊中心詳解】

Eureka自我保護(hù)機(jī)制

服務(wù)頻繁啟動時 EurekaServer出現(xiàn)錯誤

  • EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY’RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE.

SpringCloud 微服務(wù)系列——【基礎(chǔ)與服務(wù)注冊中心詳解】

自我保護(hù)機(jī)制

官網(wǎng)地址: https://github.com/Netflix/eureka/wiki/Server-Self-Preservation-Mode

默認(rèn)情況下,如果Eureka Server在一定時間內(nèi)(默認(rèn)90秒)沒有接收到某個微服務(wù)實(shí)例的心跳,Eureka Server將會移除該實(shí)例。但是當(dāng)網(wǎng)絡(luò)分區(qū)故障發(fā)生時,微服務(wù)與Eureka Server之間無法正常通信,而微服務(wù)本身是正常運(yùn)行的,此時不應(yīng)該移除這個微服務(wù),所以引入了自我保護(hù)機(jī)制。

Eureka Server在運(yùn)行期間會去統(tǒng)計心跳失敗比例在 15 分鐘之內(nèi)是否低于 85%,如果低于 85%,Eureka Server 會將這些實(shí)例保護(hù)起來,讓這些實(shí)例不會過期。這種設(shè)計的哲學(xué)原理就是"寧可信其有不可信其無!"。自我保護(hù)模式正是一種針對網(wǎng)絡(luò)異常波動的安全保護(hù)措施,使用自我保護(hù)模式能使Eureka集群更加的健壯、穩(wěn)定的運(yùn)行。

在Eureka server端關(guān)閉自我保護(hù)機(jī)制

eureka.server.enable-self-preservation=false  #關(guān)閉自我保護(hù)
eureka.server.eviction-interval-timer-in-ms=3000 #超時3s自動清除  默認(rèn)60*1000 1min鐘清除
----------------------------yml風(fēng)格------------------------------------------
eureka:
  server:
    enable-self-preservation: false  # 關(guān)閉自我保護(hù)機(jī)制
    eviction-interval-timer-in-ms: 3000 # 超時移除時間

微服務(wù)客戶端修改減短服務(wù)心跳的時間

eureka.instance.lease-expiration-duration-in-seconds=10 #用來修改eureka server默認(rèn)接受心跳的最大時間 默認(rèn)是90s
eureka.instance.lease-renewal-interval-in-seconds=5 #指定客戶端多久向eureka server發(fā)送一次心跳 默認(rèn)是30s
--------------------------------yml風(fēng)格--------------------------------------
eureka:
  instance:
    lease-expiration-duration-in-seconds: 10
    lease-renewal-interval-in-seconds: 5

盡管如此關(guān)閉自我保護(hù)機(jī)制還是會出現(xiàn)警告

SpringCloud 微服務(wù)系列——【基礎(chǔ)與服務(wù)注冊中心詳解】

官方不建議關(guān)閉Eureka自我保護(hù)機(jī)制

Eureka集群的搭建

1.按照之前創(chuàng)建EurekaServer的方式創(chuàng)建多個服務(wù)器端,修改端口號和注冊中心地址

2.客戶端集群也可采用之前創(chuàng)建客戶端的方式創(chuàng)建多個客戶端,修改端口號和注冊中心地址

3.不采用以上的兩種形式也可以利用IDEA工具進(jìn)行集群的快速搭建,操作方式如下:

SpringCloud 微服務(wù)系列——【基礎(chǔ)與服務(wù)注冊中心詳解】

修改端口號:-Dserver.port=9090

SpringCloud 微服務(wù)系列——【基礎(chǔ)與服務(wù)注冊中心詳解】

復(fù)制完成后,啟動項目即可

SpringCloud 微服務(wù)系列——【基礎(chǔ)與服務(wù)注冊中心詳解】

eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:8788/eureka,http://127.0.0.1:8789/eureka
      
#客戶端
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8787/eureka,http://localhost:8788/eureka,http://localhost:8789/eureka

6.2、Consul注冊中心

官網(wǎng):https://www.consul.io

consul是一個可以提供服務(wù)發(fā)現(xiàn),健康檢查,多數(shù)據(jù)中心,Key/Value存儲等功能的分布式服務(wù)框架,用于實(shí)現(xiàn)分布式系統(tǒng)的服務(wù)發(fā)現(xiàn)與配置。與其他分布式服務(wù)注冊與發(fā)現(xiàn)的方案,使用起來也較為簡單。Consul用Golang實(shí)現(xiàn),因此具有天然可移植性(支持Linux、Windows和Mac OS X);安裝包僅包含一個可執(zhí)行文件,方便部署。

1.下載consul

  • https://www.consul.io/downloads

SpringCloud 微服務(wù)系列——【基礎(chǔ)與服務(wù)注冊中心詳解】

2.安裝consul

  • 官方安裝視頻地址: https://learn.hashicorp.com/consul/getting-started/install.html
  • 解壓之后發(fā)現(xiàn)consul只有一個腳本文件

SpringCloud 微服務(wù)系列——【基礎(chǔ)與服務(wù)注冊中心詳解】

3.根據(jù)解壓縮目錄配置環(huán)境變量

4.查看consul環(huán)境變量是否配置成功,執(zhí)行命令出現(xiàn)如下信息代表成功

SpringCloud 微服務(wù)系列——【基礎(chǔ)與服務(wù)注冊中心詳解】

5.訪問consul的web服務(wù)端口

http://localhost:8500

指定數(shù)據(jù)中心啟動 consul agent -dev -datacenter mosin

6.開發(fā)consul 客戶端即微服務(wù)

  • 1.創(chuàng)建項目并引入consul客戶端依賴
 <!--引入consul依賴-->
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>
  • 編寫yml配置
server.port=8889
spring.application.name=consulclient8889
spring.cloud.consul.host=localhost	#注冊consul服務(wù)的主機(jī)					
spring.cloud.consul.port=8500	    #注冊consul服務(wù)的端口號					 
#指定注冊的服務(wù)名稱 默認(rèn)就是應(yīng)用名
spring.cloud.consul.discovery.service-name=${spring.application.name} 
  • 啟動服務(wù)查看consul界面服務(wù)信息

SpringCloud 微服務(wù)系列——【基礎(chǔ)與服務(wù)注冊中心詳解】

  • consul 開啟健康監(jiān)控檢查

開啟consul健康監(jiān)控

默認(rèn)情況consul監(jiān)控健康是開啟的,但是必須依賴健康監(jiān)控依賴才能正確監(jiān)控健康狀態(tài)所以直接啟動會顯示錯誤,引入健康監(jiān)控依賴之后服務(wù)正常

<!-- 這個包是用做健康度監(jiān)控的-->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

SpringCloud 微服務(wù)系列——【基礎(chǔ)與服務(wù)注冊中心詳解】

關(guān)閉consul的健康檢查(不推薦)

spring.cloud.consul.discovery.register-health-check=false

不同注冊中心區(qū)別

1.CAP定理

CAP定理:CAP定理又稱CAP原則,指的是在一個分布式系統(tǒng)中,一致性(Consistency)、可用性(Availability)、分區(qū)容錯性(Partition tolerance)。CAP 原則指的是,這三個要素最多只能同時實(shí)現(xiàn)兩點(diǎn),不可能三者兼顧。

  • 一致性(C):
    在分布式系統(tǒng)中的所有數(shù)據(jù)備份,在同一時刻是否同樣的值。(等同于所有節(jié)點(diǎn)訪問同一份最新的數(shù)據(jù)副本)
  • 可用性(A):
    在集群中一部分節(jié)點(diǎn)故障后,集群整體是否還能響應(yīng)客戶端的讀寫請求。(對數(shù)據(jù)更新具備高可用性)
  • 分區(qū)容忍性(P):
    就是高可用性,一個節(jié)點(diǎn)崩了,并不影響其它的節(jié)點(diǎn)(100個節(jié)點(diǎn),掛了幾個,不影響服務(wù),越多機(jī)器越好)

2.Eureka特點(diǎn)

  • Eureka中沒有使用任何的數(shù)據(jù)強(qiáng)一致性算法保證不同集群間的Server的數(shù)據(jù)一致,僅通過數(shù)據(jù)拷貝的方式爭取注冊中心數(shù)據(jù)的最終一致性,雖然放棄數(shù)據(jù)強(qiáng)一致性但是換來了Server的可用性,降低了注冊的代價,提高了集群運(yùn)行的健壯性。

3.Consul特點(diǎn)

  • 基于Raft算法,Consul提供強(qiáng)一致性的注冊中心服務(wù),但是由于Leader節(jié)點(diǎn)承擔(dān)了所有的處理工作,勢必加大了注冊和發(fā)現(xiàn)的代價,降低了服務(wù)的可用性。通過Gossip協(xié)議,Consul可以很好地監(jiān)控Consul集群的運(yùn)行,同時可以方便通知各類事件,如Leader選擇發(fā)生、Server地址變更等。

4.zookeeper特點(diǎn)

  • 基于Zab協(xié)議,Zookeeper可以用于構(gòu)建具備數(shù)據(jù)強(qiáng)一致性的服務(wù)注冊與發(fā)現(xiàn)中心,而與此相對地犧牲了服務(wù)的可用性和提高了注冊需要的時間。

SpringCloud 微服務(wù)系列——【基礎(chǔ)與服務(wù)注冊中心詳解】


??碼文不易,本篇文章就介紹到這里,如果想要學(xué)習(xí)更多Java系列知識,點(diǎn)擊關(guān)注博主,博主帶你零基礎(chǔ)學(xué)習(xí)Java知識。與此同時,對于日常生活有困擾的朋友,歡迎閱讀我的第四欄目:《國學(xué)周更—心性養(yǎng)成之路》,學(xué)習(xí)技術(shù)的同時,我們也注重了心性的養(yǎng)成。

SpringCloud 微服務(wù)系列——【基礎(chǔ)與服務(wù)注冊中心詳解】文章來源地址http://www.zghlxwxcb.cn/news/detail-427831.html

到了這里,關(guān)于SpringCloud 微服務(wù)系列——【基礎(chǔ)與服務(wù)注冊中心詳解】的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • SpringCloud之Eureka 服務(wù)注冊中心

    SpringCloud之Eureka 服務(wù)注冊中心

    5 Eureka 服務(wù)注冊中心 5.1什么是 Eureka Netflix在涉及Eureka時,遵循的就是API原則. Eureka是Netflix的有個子模塊,也是核心模塊之一。Eureka是基于REST的服務(wù),用于定位服務(wù),以實(shí)現(xiàn)云端中間件層服務(wù)發(fā)現(xiàn)和故障轉(zhuǎn)移,服務(wù)注冊與發(fā)現(xiàn)對于微服務(wù)來說是非常重要的,有了服務(wù)注冊與發(fā)

    2024年02月04日
    瀏覽(23)
  • SpringCloud | Dubbo 微服務(wù)實(shí)戰(zhàn)——注冊中心詳解

    SpringCloud | Dubbo 微服務(wù)實(shí)戰(zhàn)——注冊中心詳解

    前些天發(fā)現(xiàn)了一個巨牛的人工智能學(xué)習(xí)網(wǎng)站,通俗易懂,風(fēng)趣幽默,忍不住分享一下給大家 :https://www.captainbed.cn/z chatgpt體驗(yàn)地址 在項目開發(fā)過程中,隨著項目不斷擴(kuò)大,也就是業(yè)務(wù)的不斷增多,我們將采用集群,微服務(wù)的形式去降低配置,集群是指將一個項目部署到多個服

    2024年02月05日
    瀏覽(87)
  • SpringCloud搭建Eureka服務(wù)注冊中心(六)

    SpringCloud搭建Eureka服務(wù)注冊中心(六)

    前面說過eureka是c/s模式的 ?server服務(wù)端就是服務(wù)注冊中心,其他的都是client客戶端,服務(wù)端用來管理所有服務(wù),客戶端通過注冊中心,來調(diào)用具體的服務(wù); 我們先來搭建下服務(wù)端,也就是服務(wù)注冊中心; project xmlns=\\\"http://maven.apache.org/POM/4.0.0\\\" xmlns:xsi=\\\"http://www.w3.org/2001/XMLSche

    2024年02月10日
    瀏覽(23)
  • Springcloud筆記(2)-Eureka服務(wù)注冊中心

    Springcloud筆記(2)-Eureka服務(wù)注冊中心

    Eureka作為一個微服務(wù)的治理中心,它是一個服務(wù)應(yīng)用,可以接收其他服務(wù)的注冊,也可以發(fā)現(xiàn)和治理服務(wù)實(shí)例。 服務(wù)治理中心是微服務(wù)(分布式)架構(gòu)中最基礎(chǔ)和最核心的功能組件,它主要對各個服務(wù)實(shí)例進(jìn)行管理,包括 服務(wù)注冊和服務(wù)發(fā)現(xiàn) 等 本文參考:springcloud教程 --

    2024年02月05日
    瀏覽(56)
  • 【微服務(wù) SpringCloud】實(shí)用篇 · Eureka注冊中心

    【微服務(wù) SpringCloud】實(shí)用篇 · Eureka注冊中心

    微服務(wù)(3) 假如我們的服務(wù)提供者 user-service部署了多個實(shí)例(不同實(shí)例,端口號不一致) ,如圖: 大家思考幾個問題: 我們剛才的編程,是寫死在程序里的,ip和端口都是寫死的, 這種硬編碼的方式,之后改變ip和端口代碼不就沒法用了? order-service在發(fā)起遠(yuǎn)程調(diào)用的時候

    2024年02月08日
    瀏覽(27)
  • 【微服務(wù)】SpringCloud-Nacos注冊中心

    【微服務(wù)】SpringCloud-Nacos注冊中心

    ?? 博客主頁: ??@不會壓彎的小飛俠 ? 歡迎關(guān)注: ?? 點(diǎn)贊 ?? 收藏 ? 留言 ? ? 系列專欄: ??SpringCloud專欄 ? 知足上進(jìn),不負(fù)野心。 ?? 歡迎大佬指正,一起學(xué)習(xí)!一起加油! Nacos是SpringCloudAlibaba的組件,而SpringCloudAlibaba也遵循SpringCloud中定義的服務(wù)注冊、服務(wù)發(fā)現(xiàn)

    2024年02月02日
    瀏覽(28)
  • SpringCloud + Gateway(網(wǎng)關(guān)) + Nacos(注冊中心+配置中心)+ Dubbo(內(nèi)部服務(wù)調(diào)用)

    SpringCloud + Gateway(網(wǎng)關(guān)) + Nacos(注冊中心+配置中心)+ Dubbo(內(nèi)部服務(wù)調(diào)用)

    Apache Dubbo是一款微服務(wù)開發(fā)框架,它提供了 RPC通信 與 微服務(wù)治理 兩大關(guān)鍵能力 1、協(xié)議支持方面 Feign更加優(yōu)雅簡單。Feign是通過REST API實(shí)現(xiàn)的遠(yuǎn)程調(diào)用,基于Http傳輸協(xié)議,服務(wù)提供者需要對外暴露Http接口供消費(fèi)者調(diào)用,服務(wù)粒度是http接口級的。通過短連接的方式進(jìn)行通信,

    2024年02月06日
    瀏覽(1436)
  • SpringCloud微服務(wù)技術(shù)棧的注冊中心Eureka

    在微服務(wù)架構(gòu)中,服務(wù)的數(shù)量龐大,而且每個服務(wù)可能會有多個實(shí)例。此時,需要一個中心化的地方來管理和維護(hù)各個服務(wù)的相關(guān)信息,這就是微服務(wù)治理中很重要的一環(huán):服務(wù)注冊與發(fā)現(xiàn)。其中,服務(wù)注冊是指將提供服務(wù)的應(yīng)用實(shí)例注冊到注冊中心,而服務(wù)發(fā)現(xiàn)則是指從注

    2023年04月09日
    瀏覽(18)
  • 【SpringCloud入門】-- Nacos快速入門之搭建服務(wù)與注冊中心

    【SpringCloud入門】-- Nacos快速入門之搭建服務(wù)與注冊中心

    目錄 前言: ?1.Nacos的下載與安裝 2. 去MySQL建立一個名為nacos的數(shù)據(jù)庫 3.介紹配置文件,conf目錄下的 application.properties 4.nacos啟動 5. nacos作為注冊中心的作用 6.建立一個項目,實(shí)現(xiàn)向命名空間注冊 前言: 上文我們已經(jīng)簡單介紹了一下Nacos,現(xiàn)在我們一起來動手搭建一個Nacos的注

    2024年02月09日
    瀏覽(21)
  • SpringCloud微服務(wù) 【實(shí)用篇】| Eureka注冊中心、Ribbon負(fù)載均衡

    SpringCloud微服務(wù) 【實(shí)用篇】| Eureka注冊中心、Ribbon負(fù)載均衡

    目錄 一:Eureka注冊中心 1. Eureka原理 2. 動手實(shí)踐 ①搭建EurekaServer ②服務(wù)注冊 ③服務(wù)發(fā)現(xiàn)? 二:Ribbon負(fù)載均衡 1. 負(fù)載均衡原理 2.?負(fù)載均衡策略 3. 懶加載 tips:前些天突然發(fā)現(xiàn)了一個巨牛的人工智能學(xué)習(xí)網(wǎng)站,通俗易懂,風(fēng)趣幽默,忍不住分享一下給大家,感興趣的同學(xué)可以

    2024年02月05日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包