【微服務】134:SpringCloud

今天是劉小愛自學Java的第134天。

感謝你的觀看,謝謝你。

image

學習內容安排如下:

  • SpringCloud的接觸。

  • 利用SpringCloud搭建微服務架構,當然這個估計要3天時間才能完成,今天主要是注冊中心Eureka的學習。

一、SpringCloud

微服務是一種系統架構方式,最終肯定需要技術架構去實施,我們使用的就是SpringCloud了,不用多說,看名稱都知道又是Spring旗下的一個項目。

所以對于Java開發來說,spring真是個繞不開的坎,哪里都有它。

image

其主要涉及的組件包括,Netflix:

  • Eureka:注冊中心

  • Zuul:服務網關

  • Ribbon:負載均衡

  • Feign:服務調用

  • Hystix:熔斷器

這幾天依次學習這些知識點。

二、Eureka:注冊中心

顧名思義,注冊中心的作用在于服務的管理,記錄服務提供者的信息。

1Eureka服務端

所有的服務都要在Eureka服務端上注冊,那如何讓一個SpringBoot應用成為Eureka服務端呢?

image

①引入eureka服務端依賴

這個依賴非常長,記2個核心點:

  • starter啟動器的意思.

  • erueka-server對應erueka的服務端,有服務端肯定也會有客戶端。

②啟動類開啟eureka服務

@EnableEurekaServer,看這個注解的意思就能知道是開始前eureka服務。

也就是說該SpringBoot引用被作為了euerka服務端,也就是前面說的管理服務的注冊中心。

image

③配置注冊中心地址

這里就是指它自己,這是什么意思呢?

eureka服務端是專門用來管理服務的,所有的服務都要在它這個注冊,而它本身也是一個服務,所以需要自己注冊自己。

④給服務命名

這個也好理解,application翻譯是應用,在這里也就是一個服務,給它命名為eureka-server。

2Eureka客戶端:服務的注冊

比如user-service這個服務是用來查詢和user相關數據的,將該服務注冊,讓其它服務都可以直接調用它。

image

①引入eureka客戶端依賴

一樣的,2個核心點:

  • starter啟動器的意思。

  • erueka-client對應erueka的客戶端。

②啟動類開啟eureka客戶端

@EnableEurekaClient,同理確實也是有這個注冊的,開啟eureka客戶端。

不過這里使用@EnableDiscoveryClient,它功能要更加地強大。

3Eureka客戶端:服務的發現

上述服務注冊了,那另外的服務要直接使用它,就稱之為服務的發現。

既然是服務,肯定也需要先完成注冊,一樣的步驟:導入依賴,啟動類上添加客戶端注解。

image

DiscoverClient:也就是啟動類上注解配置的客戶端。

RestTemplate:這個昨天詳細學習過,通過它可是實現服務之間的調用。

①拉取服務

通過discoverClient的getInstances()方法可以拉取指定的服務。

②負載均衡

利用負載均衡獲取其中的一個服務,因為我們這里總共就只有一個服務,所以不需要利用負載均衡。

這個文章結尾會詳細講述到。

③字符串占位符

通過restTemplate的getForObject()方法可以向指定的url發起get請求。

通過String的format()方法實現拼接,將后面的ip,端口和id拼接到%s這個占位符中。

4服務的調用測試

上述配置完成后,就可以通過consumer-demo這個服務,調用user-service這個服務了。

image

根據id去數據庫查詢對應的用戶,我們只在user-service服務中實現了service層和dao層的代碼編寫。

如果在consumer服務中要用,直接調用user-service服務即可。

三、Eureka詳解

Eureka架構中的三個核心角色:

image

①服務注冊中心

Eureka的服務端應用,提供服務注冊和發現功能,也就是上述的eureka-server。

②服務提供者

提供服務的應用,可以是SpringBoot應用,也可以是其它任意技術實現,只要對外提供的是Rest風格服務即可。

也就是上述實現的user-service。

③服務消費者

消費應用從注冊中心獲取服務列表,從而得知每個服務方的信息,知道去哪里調用服務方,也就是我們實現的consumer-demo。

2服務續約

image

lease-renewal-interval-in-seconds

服務續約的間隔,默認為30秒,renewal本身就是續約的意思。

lease-expiration-duration-in-seconds

服務失效時間,默認值90秒,expiration本身就是終結的意思

也就是說,默認情況下每個30秒服務會向注冊中心發送一次心跳,證明自己還活著。

如果超過90秒沒有發送心跳,EurekaServer就會認為該服務GG了,會從服務列表中移除。

這兩個值在生產環境不要修改,默認即可。

3負載均衡Ribbon

在剛才的案例中,我們啟動了一個user-service,通過DiscoveryClient來獲取服務實例信息,獲取ip和端口來訪問。

但是實際環境中,往往會開啟很多個user-service。

此時我們獲取的服務列表中就會有多個,到底該訪問哪一個呢?

Eureka中已經幫我們集成了負載均衡組件:Ribbon,簡單修改代碼即可使用。

image

①開啟負載均衡

通過@LoadBanlanced注解即可開啟負載均衡。

開啟之后,就可以直接使用了。

image

②url編寫

開啟負載均衡,url中的ip和端口直接使用服務的名稱使用即可。

最后

謝謝你的觀看。

如果可以的話,麻煩幫忙點個贊,謝謝你。



喜歡的朋友記得點贊、收藏、關注哦!!!

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

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

相關文章

三次貝塞爾曲線,二次貝塞爾曲線有什么區別

三次貝塞爾曲線和二次貝塞爾曲線在控制點數量、數學表達式和曲線復雜度上有所不同。以下是它們的主要區別: 1. 控制點數量 二次貝塞爾曲線:由3 個點定義(起點、終點和 1 個控制點)。三次貝塞爾曲線:由4 個點定義&…

springboot集成dubbo

BeanDefinitionRegistryPostProcessor public interface BeanDefinitionRegistryPostProcessor extends BeanFactoryPostProcessor {/*** 允許開發者在Spring容器加載Bean定義(BeanDefinition)后,實例化Bean之前,動態修改或注冊新的BeanDefinition* 該接…

Seata 全面深入學習指南

Seata 全面深入學習指南 學習目錄 第一部分:Seata 基礎篇 分布式事務基礎概念Seata 概述與核心架構Seata 部署與快速入門第二部分:Seata 核心機制 Seata 事務模式詳解 AT 模式TCC 模式SAGA 模式XA 模式Seata 事務協調機制Seata 高可用設計第三部分:Seata 高級特性 Seata 配…

【Linux】基于策略模式的簡單日志設計

📝前言: 這篇文章我們來講講Linux——基于策略模式的簡單日志設計 🎬個人簡介:努力學習ing 📋個人專欄:Linux 🎀CSDN主頁 愚潤求學 🌄其他專欄:C學習筆記,C語…

C#引用傳遞代碼記錄

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace 值傳遞和引用傳遞 {internal class Program{static void Main(string[] args){person P1new person();P1.name "張三";person P2 …

React動態渲染:如何用map循環渲染一個列表(List)

React動態渲染:如何用map循環渲染一個列表(List)? 系列回顧: 在上一篇中,我們學習了如何通過onClick等事件處理,讓React應用響應用戶的操作。現在我們的組件已經能“聽懂話”了。但是,目前為止我們展示的內…

React Native【實戰范例】水平滾動分類 FlatList

import React from "react"; import { FlatList, SafeAreaView, StyleSheet, Text, View } from "react-native"; interface itemType {id: string;title: string;icon: string; } // 水平滾動數據 const horizontalData: itemType[] [{ id: "1"…

iOS swiftUI的實用舉例

SwiftUI 是 Apple 推出的聲明式 UI 框架,以下是一些實用技巧和最佳實踐,可以幫助你更高效地開發 iOS/macOS/watchOS/tvOS 應用。 1. 布局技巧 靈活的空間占用 // 使用 Spacer 填充可用空間 HStack {Text("Left")Spacer() // 填充中間空間 …

SpringMVC異步處理Servlet

使用SpringMVC異步處理Servlet解決的問題 可以不阻塞有限的tomcat 線程(默認是200~250個,springboot3是200個),確保網絡請求可以持續響應特定業務使用自定義線程池,可以處理的業務量更大對上層業務完全無感知&#xf…

同步與異步編程范式全景研究——從CPU時鐘周期到云原生架構的范式演進

第一章 時空觀的根本分歧 1.1 物理時間的約束性 同步操作的本質是對牛頓絕對時間的服從,其阻塞特性源于馮諾依曼體系下指令順序執行的基因。現代CPU的流水線技術(如Intel Hyper-Threading)通過指令級并行實現偽異步,但開發者仍需…

【零散技術】5分鐘完成Odoo18 登陸頁面全自定義

序言:時間是我們最寶貴的財富,珍惜手上的每個時分 從最初的tinyERP到Open ERP,再由OpenERP到Odoo,雖然UI已經過了多次大改,Odoo登錄界面依舊丑陋,同時還有各種Odoo版權信息,對于定制項目而言是不友好的。 今天以Odoo18…

Vue3 + TypeScript + Element Plus + el-pagination 分頁查詢實例分享

前端技術棧&#xff1a;Vue3 TypeScript Element Plus el-pagination 后端技術棧&#xff1a;Java Spring Boot Mybatis 應用異常情況說明&#xff1a;點擊頁碼2&#xff0c;會發送兩次請求&#xff0c;并且自動跳回頁碼1 代碼&#xff1a; Reagent.vue <script set…

LoadRunner 2023 安裝部署

下載地址&#xff1a;鏈接: https://caiyun.139.com/w/i/2nQQRYCZ1Ssjl 提取碼:3gz0 復制內容打開139-云盤 主要下載Micro_Focus_LoadRunner_2023_Community_Edition.exe來安裝就可以。 如要漢化&#xff0c;則再下載安裝Language_Packs.exe的安裝包 說明&#xff1a;LoadR…

ABC410 : F - Balanced Rectangles

https://atcoder.jp/contests/abc410/tasks/abc410_fhttps://atcoder.jp/contests/abc410/tasks/abc410_f首先可以一眼看出暴力 &#xff1a;枚舉左上角和右下角&#xff0c;用前綴和算出矩形中#的數量&#xff0c;判斷即可 但這樣是,爆!!! 考慮優化&#xff0c;我們可以枚舉…

嵌入式學習筆記 - HAL庫對外設的封裝

一 外設封裝結構 HAL庫對外設的封裝使用了xx_HandleTypeDef類型的外設句柄結構體&#xff0c;這個句柄結構體的第一個成員Instance(xx_TypeDef類型)一般為該外設的所有寄存器的起始基地址&#xff0c;第二個成員Init&#xff08;xx_InitTypeDef類型&#xff09;一般為該外設的設…

高精度模板

加法 P1601 AB Problem&#xff08;高精&#xff09; #include<iostream>using namespace std; const int N 1e6 10; int a[N],b[N],c[N]; int len1,len2,lenMax; //長度要提前定義在全局&#xff0c;在函數中要使用 void add(int c[],int a[],int b[]) {for(int i0…

monorepo使用指北

| ?WARN? node_modules is present. Lockfile only installation will make it out-of-date ?ERR_PNPM_FETCH_404? GET https://registry.npmjs.org/common%2Fcommon: Not Found - 404 This error happened while installing a direct dependency of G:\monorepo\vue3 comm…

Java八股文——Spring「MyBatis篇」

與傳統的JDBC相比&#xff0c;MyBatis的優點&#xff1f; 面試官您好&#xff0c;MyBatis相比于傳統的JDBC&#xff0c;它并不是要完全顛覆JDBC&#xff0c;而是作為JDBC的一個強大的“增強框架”。它的核心價值在于&#xff0c;在保留了SQL最大靈活性的前提下&#xff0c;極大…

JavaScript基礎-常用的鼠標事件

一、前言 在前端開發中&#xff0c;鼠標事件 是實現用戶交互的重要手段之一。通過監聽用戶的點擊、移動、懸停等操作&#xff0c;我們可以構建出豐富而靈活的網頁交互體驗。 本文將帶你深入了解&#xff1a; JavaScript 中常見的鼠標事件&#xff1b;各類鼠標事件的觸發時機…

windows錄頻軟件

一.很反感有些做軟件的&#xff0c;把別人開源的改個界面收費&#xff0c;所以我找了一個開源免費的。 二.準備工具 一臺電腦&#xff0c; Captura:完全開源免費的錄頻軟件。 ffmpeg&#xff1a;音頻格式轉換軟件&#xff0c;這可是非常大名鼎鼎的工具。 三.安裝Captura 網址…