服務注冊Eureka

目錄

一、背景

1、概念

2、CAP 理論

3、常見的注冊中心

二、Eureka

三、搭建 Eureka Server

1、搭建注冊中心

四、服務注冊

五、服務發現

六、Eureka 和 Zooper 的區別


一、背景

1、概念

遠程調用就類似于一種通信

例如:當游客與景區之間進行通信(電話的方式),此時游客需要得到景區的電話,例如通過景區官網或者 114 查號臺進行查詢

那么 114 平臺又是如何知道景區和電話的關系的呢?

景區當創建和修改的時候告訴 114 平臺,由 114 平臺對信息進行維護,游客就可以通過 114 查詢電話,再向景區進行通訊

上述的解決方案同樣也適用于微服務中

在微服務中,有兩個角色:服務消費者和服務提供者

當訂單服務調用商品服務,從中獲取到對應的商品信息,此時訂單服務就是服務消費者,商品服務就是服務提供者

服務提供者在啟動之初,向平臺進行注冊,告訴平臺 應用 和 IP 的關系,服務消費者可以從平臺中根據應用獲取到 IP 地址,然后根據 IP 地址進行遠程調用

服務提供者和注冊中心的關系我們稱之為服務注冊,服務消費者和注冊中心的關系稱為服務發現

我們來看一下這三種角色分別的作用

注意:服務提供者和服務消費者是相對的概念!!!

服務注冊和服務發現的解釋:


2、CAP 理論

CAP 理論是分布式系統中最基礎、最關鍵的理論

我們來看一下 CAP 理論的圖:

C:Consistency 一致性(此處的一致性指的是強一致性)

A:Availability 可用性 (對所有請求都有響應,這個響應可能是錯誤的數據)

P:Partition tolerance 分區容錯性(在網絡分區的情況下,我們的系統依然可以對外提供服務)

例如:銀行利率下調,這個通知需要下發到各個銀行的工作人員,通知下發需要一定的時間

一致性:在相同的時間點,所有的工作人員對客戶講的利率都是一樣的

可用性:不論何時,所有的銀行工作人員對客戶咨詢利率都是有回復的(回復也有可能是舊利率)

分區容錯性:如果其中一個工作人員請假了,銀行仍然可以對外提供服務

在分布式系統中,P 必須要保證,所以 C 和 A 只能二選一,因此我們的架構就是 AP / CP 架構

CP架構: 為了保證分布式系統對外的數據?致性, 于是選擇不返回任何數據

AP架構: 為了保證分布式系統的可?性, 節點2返回V0版本的數據(即使這個數據不正確)

什么是強一致性?

數據庫集群分為主庫和從庫

客戶端向數據庫集群發送了一個數據修改的請求,數據庫集群需要向客戶端進行響應,響應的時機分為以下兩種:

1、主庫接收到請求,并處理成功,此時數據還未完全同步到從庫,隨著時間的推移,主庫和從庫的數據最終達到一致性

2、主庫接收到請求,并且所有從庫數據同步成功時,數據庫集群才進行響應?

強一致性:主庫和從庫,無論何時對外提供的服務都是一致的【第二種情況】

弱一致性:隨著時間的推移,最終達到了一致性【第一種情況】


3、常見的注冊中心


二、Eureka

官方文檔: https://github.com/Netflix/eureka/wiki
Eureka主要分為兩個部分:
Eureka Server: 作為注冊中心Server端, 向微服務應用程序提供服務注冊, 發現, 健康檢查等能力.
Eureka Client: 服務提供者, 服務啟動時, 會向Eureka Server 注冊自己的信息(IP,端口,服務信息
等),Eureka Server 會存儲這些信息

三、搭建 Eureka Server

1、搭建注冊中心

(1)創建項目

(2)pom 中加入 Eureka 的依賴

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>

(3)配置文件增加 Eureka 相關配置

# Eureka相關配置
# Eureka 服務
server:port: 10010
spring:application:name: eureka-server
eureka:instance:hostname: localhostclient:fetch-registry: false # 表示是否從Eureka Server獲取注冊信息,默認為true.因為這是一個單點的Eureka Server,不需要同步其他的Eureka Server節點的數據,這里設置為falseregister-with-eureka: false # 表示是否將自己注冊到Eureka Server,默認為true.由于當前應用就是Eureka Server,故而設置為false.service-url:# 設置與Eureka Server的地址,查詢服務和注冊服務都需要依賴這個地址defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

(4)啟動類,開啟 Eureka 功能

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


四、服務注冊

服務注冊分為以下幾步:

1、加入 Eureka 的依賴

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

2、修改配置信息

#Eureka Client
eureka:client:service-url:defaultZone: http://127.0.0.1:10010/eureka/
spring:application:name: product-service # 自定義名字

3、啟動,測試


五、服務發現

服務發現分為以下幾步:

1、加入 Eureka 依賴

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

2、修改配置信息

配置信息與上面的一樣

3、修改遠程調用代碼

@Service
public class OrderService {@Autowiredprivate OrderMapper orderMapper;@Autowiredprivate RestTemplate restTemplate;@Autowiredprivate DiscoveryClient discoveryClient;public OrderInfo selectOrderById(Integer orderId){OrderInfo orderInfo = orderMapper.selectOrderById(orderId);// String url = "http://127.0.0.1:9090/product/"+orderInfo.getProductId();List<ServiceInstance> instances = discoveryClient.getInstances("product-service");String uri = instances.get(0).getUri().toString();String url = uri + "/product/"+orderInfo.getProductId();ProductInfo productInfo = restTemplate.getForObject(url, ProductInfo.class);orderInfo.setProductInfo(productInfo);return orderInfo;}
}

4、啟動,測試


六、Eureka 和 Zooper 的區別

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/42611.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/42611.shtml
英文地址,請注明出處:http://en.pswp.cn/web/42611.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

代碼隨想錄算法訓練營第六十三天 | prim算法、kruskal算法、復習

53. 尋寶 — prim算法 題目鏈接&#xff1a;https://kamacoder.com/problempage.php?pid1053 文檔講解&#xff1a;https://programmercarl.com/kamacoder/0053.%E5%AF%BB%E5%AE%9D-prim.html 思路 本題是最小生成樹的模板題&#xff0c;最小生成樹可以使用 prim算法&#xf…

bash shell 重定向輸入和輸出

shell 提供的重定向操作符 操作符作用>將命令的輸出發到一個文件中如果文件存在&#xff0c;則新的文件數據會覆蓋已經存在的文件>>將命令的輸出追加到一有文件如果文件不存在&#xff0c;則創建新的文件<將文件內容重定向到命令<<內聯輸入重定向(inline in…

Xubuntu24.04之設置高性能模式兩種方式(二百六十一)

簡介: CSDN博客專家,專注Android/Linux系統,分享多mic語音方案、音視頻、編解碼等技術,與大家一起成長! 優質專欄:Audio工程師進階系列【原創干貨持續更新中……】?? 優質專欄:多媒體系統工程師系列【原創干貨持續更新中……】?? 優質視頻課程:AAOS車載系統+AOSP…

蒼穹外賣--新增員工

代碼開發 package com.sky.controller.admin;import com.sky.constant.JwtClaimsConstant; import com.sky.dto.EmployeeDTO; import com.sky.dto.EmployeeLoginDTO; import com.sky.entity.Employee; import com.sky.properties.JwtProperties; import com.sky.result.Result…

Springboot各個版本維護時間

Springboot各個版本維護時間

MQTT教程--服務器使用EMQX和客戶端使用MQTTX

什么是MQTT MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;是一種輕量級、基于發布-訂閱模式的消息傳輸協議&#xff0c;適用于資源受限的設備和低帶寬、高延遲或不穩定的網絡環境。它在物聯網應用中廣受歡迎&#xff0c;能夠實現傳感器、執行器和其它設備…

【Linux】shell基礎知識點(updating)

1.輸出重定向2.多命令批量執行&#xff08;; 、&&、 ||&#xff09;3.腳本不同方式執行的區別&#xff08;source、bash、sh、./&#xff09;4.理解環境變量5.export6.引號的使用last.命令相關 1.輸出重定向 3種數據流&#xff1a; stdin&#xff1a;標準輸入&#xf…

jmeter持續學習之----性能初級一些概念和指標

服務端為什么要進行性能測試 大量用戶下&#xff0c;系統能否穩定運行&#xff08;比較多&#xff09; 用于硬件服務器的選型 用于軟件技術的選型 性能測試關注的點 用戶角度:響應時間 資源占用:并發用戶數,TPS,資源占用(cpu,內存,JVM) 性能測試策略 基準測試:單用戶測試,對…

去了字節跳動,才知道年薪40W的測試有這么多?

最近脈脈職言區有一條討論火了&#xff1a; 哪家互聯網公司薪資最‘厲害’&#xff1f; 下面的評論多為字節跳動&#xff0c;還炸出了很多年薪40W的測試工程師 我只想問一句&#xff0c;現在的測試都這么有錢了嗎&#xff1f; 前幾天還有朋友說&#xff0c;從騰訊跳槽去了字節&…

8.8.8.8 IP地址的作用

在跟著韋東山老師的學習手冊中看見了關于8.8.8.8 IP用于檢測網絡狀態&#xff0c;然后搜索了關于此IP的相關作用如下&#xff1a; 公共DNS服務&#xff1a;8.8.8.8是Google提供的兩個公共DNS服務器地址之一&#xff08;另一個是8.8.4.4&#xff09;。DNS&#xff08;域名系統&a…

代碼隨想錄訓練營第三十天 452用最少數量的箭引爆氣球 435無重疊區間 763劃分字母區間

第一題&#xff1a; 原題鏈接&#xff1a;452. 用最少數量的箭引爆氣球 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a;先根據每個元素的第一個值進行排序&#xff0c;然后從第一個元素開始遍歷&#xff0c;這里要注意我們初始化結果值的時候直接初始化為1&#x…

強化基石,引領未來:完善配套設施與提升服務水平

完善配套設施與提升服務水平對于產業園運營具有重要意義。它們不僅能夠提升園區的硬件環境和整體形象&#xff0c;增強園區的吸引力和競爭力&#xff1b;還能夠優化營商環境&#xff0c;降低企業運營成本&#xff0c;提高運營效率&#xff1b;同時推動園區創新&#xff0c;形成…

基于Java技術的網吧管理系統

你好呀&#xff0c;我是計算機學姐碼農小野&#xff01;如果有相關需求&#xff0c;可以私信聯系我。 開發語言&#xff1a;Java 數據庫&#xff1a;MySQL 技術&#xff1a;Java技術&#xff0c;B/S結構 工具&#xff1a;MyEclipse&#xff0c;MySQL 系統展示 首頁 個人中…

PDF轉Markdown的開源工具解析

Marker&#xff1a;PDF轉Markdown的開源工具解析 Marker是一個由VikParuchuri在GitHub上開發的開源項目&#xff0c;其核心功能是將PDF文件轉換為Markdown格式。以下是對Marker項目的詳細解析&#xff1a; 項目概述&#xff1a; 項目鏈接&#xff1a;https://github.com/VikP…

【技術追蹤】DiffuMatting:使用摳圖級別注釋合成任意對象(ECCV-2024)

萬物生&#xff1a;Diffusion與綠幕摳圖&#xff0c;影視領域的福音~ 論文&#xff1a;DiffuMatting: Synthesizing Arbitrary Objects with Matting-level Annotation 代碼&#xff1a;https://github.com/HUuxiaobin/DiffuMatting &#xff08;即將開源&#xff09; 0、摘要 …

2024年06月CCF-GESP編程能力等級認證C++編程一級真題解析

本文收錄于專欄《C等級認證CCF-GESP真題解析》&#xff0c;專欄總目錄&#xff1a;點這里。訂閱后可閱讀專欄內所有文章。 一、單選題&#xff08;每題 2 分&#xff0c;共 30 分&#xff09; 第 1 題 在C中&#xff0c;下列不可做變量的是( )。 A. five-Star B. five_star C…

(補充):java各種進制和文本、圖像、音頻在計算機中的存儲方式

文章目錄 前言一、進制1 逢幾進一2 常見進制在java中的表示3 進制中的轉換(1)任意進制轉十進制(2)十進制轉其他進制二、計算機中的存儲1 計算機的存儲規則(文本數據)(1)ASCII碼表(2)編碼規則的發展演化2 計算機的存儲規則(圖片數據)(1)分辨率、像素(2)黑白圖與灰度…

Knife4j的介紹與使用

目錄 一、簡單介紹1.1 簡介1.2 主要特點和功能&#xff1a; 二、使用步驟&#xff1a;2.1 添加依賴&#xff1a;2.2 yml數據源配置2.3 創建knife4j配置類2.4 注解的作用 最后 一、簡單介紹 1.1 簡介 Knife4j 是一款基于Swagger的開源文檔管理工具&#xff0c;主要用于生成和管…

Java客戶端調用SOAP方式的WebService服務實現方式分析

簡介 在多系統交互中&#xff0c;有時候需要以Java作為客戶端來調用SOAP方式的WebService服務&#xff0c;本文通過分析不同的調用方式&#xff0c;以Demo的形式&#xff0c;幫助讀者在生產實踐中選擇合適的調用方式。 本文JDK環境為JDK17。 結論 推薦使用Axis2或者Jaxws&#…

拆分pdf文件最簡單的方法,pdf怎么拆成一頁一張

在數字化的時代&#xff0c;pdf文件已經成為我們日常辦公、學習不可或缺的文檔格式。然而&#xff0c;有時候我們可能需要對一個大的pdf文件進行拆分&#xff0c;以方便管理和分享。那么&#xff0c;如何將一個pdf文件拆分成多個pdf呢&#xff1f;本文將為你推薦一種好用的拆分…