微服務之SpringCloud基礎

来源:https://www.cnblogs.com/cykj/archive/2018/03/25/Microservice.html
-Advertisement-
Play Games

微服務/SpringCloud/SpringMVC/Spring Boot/SpringCloud微服務基礎 ...


SpringCloud微服務基礎

微服務架構--SpringCloud
網站架構模式
單點應用/分散式系統面向於服務架構(SOA) /微服務架構
web項目
三層架構
1.控制層
2.業務邏輯層
3.數據訪問層
傳統項目:代碼全部在一個項目中,使用包名來區分
com.controller--控制
com.service--業務邏輯層
com.dao--數據訪問層

面向服務架構 公司
(如果互聯網公司,如果使用傳統架構技術開發代碼衝突,拆分項目)
1.分散式開發:將一個大的公司,拆分成n個子項目。
會員系統/支付系統/消息系統/微信系統
2.集群:將一個項目,相同功能部署在多台不同伺服器。
作用:解決高併發。

分散式架構就是將一個項目拆分成n多個子項目,每個子項目使用rpc遠程調用技術。
你用過哪些rpc遠程調用框架
SpringCloud/HttpClient/hessioan/dubbo
面向於微服務架構(SOA),通信協議SOAP SOAP http協議+xml序列號與反序列化
銀行使用webservice

反向代理伺服器
nginx
a.tomcate01
b.tomcate02

c.客戶端

SOA服務項目,提供外部訪問介面
提供外部訪問介面
(業務邏輯層和數據訪問層)


web工程-->rpc遠程調用
(控制層)

面向於服務架構優點:代碼服務/解耦,適合於大公司人多。
缺點:網路延遲,維護複雜,不好整合,編寫複雜
小公司 傳統項目
--------------------------------------------------------------------------------

微服務架構(分散式架構)
是在傳統soa架構領域升級
微--細分,輕量級,通訊協議http協議+rest風格+json
每個服務都是獨立運行

來源
1.移動端(安卓/ios端) pc端 h5端(手機瀏覽器)

2.H5工程 PC工程 混合工程 (RPC遠程調用 http協議+json格式+rest互聯網公司 httpclient)
使用比較簡單通信 使用httpclient[ 介面只允許在內網進行訪問,和外網介面進行對接https]
微服務架構與面向於服務架構區別:
面向於服務架構(SOA)主要針對於在銀行xml格式 企業級 ESP服務
微服務系統,會更加細分,Http+json+rest進行 輕量級 獨立運行 解耦

介面項目
3.會員服務 訂單服務 支付服務
(每個服務--對應一個資料庫)
主流:rpc解決框架dubbo/springcloud

--------------------------------------------------------------------------------

介面地址怎麼管理?http://member.itmayiedu.com/api/user
容錯機制/負載均衡/網關/路由策略/高併發情況下,怎麼介面限流/斷路
微服務解決框架--SpringCloud

SpringCloud解決什麼樣的問題?
配置管理(註冊中心eureka/zk)/服務發現/服務註冊/斷路器/路由策略/負載均衡/全局鎖(比如:redis)/分散式會話/客戶端調用/介面網關(ZUUL)/服務管理系統
----學習SpringCloud

rpc遠程調用
SpringBoot與SpringCloud
SpringBoot簡化xml配置,快捷整合框架
SpringCloud 是一套微服務解決方案--RPC遠程調用
關係SpringCloud依賴介面(SpringMVC)依賴與SpringBoot SpringMVC --介面


--------------------------------------------------------------------------------

SpringCloud技術流
1.SpringCloud註冊中心環境搭建euraka
2.服務註冊與發現
3.SpringCloud客戶端調用
rest/feign 客戶端調用工具
ribbon 負載均衡
zuul介面網關
eureka服務註冊

案例:會員服務提供用戶信息/訂單服務 查詢訂單
訂單服務需要查詢用戶,訂單服務調用會員服務介面

註冊中心(euraka)

會員服務(提供介面,服務提供者)-->註冊服務-->註冊中心(euraka)
訂單服務(調用介面,服務消費者)-->調用註冊中心(euraka)-->消費-->會員服務


編寫會員服務

編寫訂單服務

SpringCloud調用服務原理


負載均衡

怎麼實現負載均衡 nginx/lvs/HAproxy/F5
SpringCloud中負載均衡

什麼事介面網關??
介面網關作用攔截請求 類似ngix(配置一些攔截策略)

qianduan.itmayiedu.com
來源渠道(H5端調用)
ajax1 member.itmayiedu.com
ajax2 order.itmayiedu.com
跨域問題


使用項目名稱區分介面網關轉發到實際地址
www.itmayiedu.com/member
www.itmayiedu.com/order
SpringCloud里的zuul介面網關
介面網關作用:攔截所有請求,任何請求先交給介面網關,然後再用網管進行轉發nginx 反向代理

 

member.itmayiedu.com
會員服務

order.itmayiedu.com
訂單服務


使用Zuul搭建服務介面網關

介面網關:解決跨域問題

分散式配置文件中心概述
開發中,怎麼區分環境? dev測試環境/pre 預發佈/prd正式生產環境
調用第三方介面,alibaba.alibaba/api使用httpclient進行調用。配置信息,存放在配置文件中。
配置信息,存在配置中。需要重新發佈版本。
java代碼讀取配置,存放在永久區,static 修飾。缺點

1.將值存在緩存中,資料庫中備份。
2.後臺搭建一套可視化管理配置文件項目。
3.讀取流程先從緩存中讀取,緩存沒有在讀取資料庫。
4.緩存與資料庫值不同步怎麼解決,清理緩存。
將配置文件信息,存放在版本控制(git/svn)springcloud就是使用這種機制。

遠程地址

分散式配置文件中心(git)
dev文件--userName=itmayiedu
pre文件--userName=itmayiedu
prd文件--userName=itmayiedu


server-config
配置服務項目

會員服務工程

會員工程-->配置服務項目-->分散式配置文件中心

訂單服務工程

訂單工程-->配置服務項目-->分散式配置文件中心

1.遠程地址git主要存放配置文件信息
2.server-config主要緩存配置文件信息,可以被其他調用

搭建分散式配置中心

1.SpringCloud微服務解決框架RPC遠程調用
2.eureka註冊中心 ridbbon負載均衡客戶端 zuul網關 分散式配置中心
3.客戶端調用工具rest feign
feigin客戶端調用,SpringCloud斷路器Hystrix
服務降級/熔斷機制/限流

服務雪崩效應產生原因
SpringCloud Hystrix斷路器

SpringCloud hystrix 熔斷機制/服務降級/服務限流/解決服務雪崩效應

什麼是服務雪崩效應?

客戶端(同一時刻有51個請求)

tomcat伺服器

會員工程

user/login
user/get

(訂單功能需要訂單會員工程查詢)

訂單工程

order/getOrder【tomcate最大線程數50個】 依賴服務 user/get[每次需要3秒進行響應]
order/addOrder 請求等待(轉圈)/

雪崩效應:所有請求在處理一個服務,不能訪問其他服務介面。
1.使用超時機制,服務降級()
服務降級:服務調用介面的時候,如果發生錯誤或者超時,不讓調用介面,調用本fallback。
服務一旦發生錯誤/超時的時候,返回請求過時或者錯誤。

jmeter做壓力測試的一個工具

雪崩效應解決辦法

1.服務雪崩,產生服務堆積等待,導致其他服務介面無法訪問。
2.如何解決服務雪崩效應
a.超時機制--服務降級處理
服務降級:服務介面發生錯誤,不去調用介面,調用本地方法 SrpingBoot的fallback
b.熔斷機制 類似於保險絲
熔斷機制 就是為瞭解決服務高併發,一旦達到規定請求,的時候,熔斷,報錯。--服務降級
c.隔離機制:每個服務介面隔離開
c1介面

線程池


c2介面

線程池

d.限流機制:nginx 使用網關

使用hystrix實現服務降級


SpringCloud hystix短容器 :當我們使用RPC遠程調用的時候,超時,解決服務雪崩效應,
專門解決服務與服務之間報錯信息。

hystix斷路器 裡面包含服務降級,熔斷機制,隔離資源。

使用hystix解決服務雪崩原因


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 初級的文章和demo已經基本完成了,代碼也已經上傳到了我的github上,如果你對webpack的使用並不是十分瞭解,那麼建議你回頭看下走近系列,裡面包括了當前項目中使用頻繁的插件,loader的講解。以及基本的webpack配置,相關依賴等。如果你已經有了一定的webpack使用經驗。那麼你直接看 ...
  • 邏輯非(!)操作符,首先它的操作數轉換為一個布爾值,然後對其反求。 兩個邏輯非(!!)操作符,第一個(!)操作符,首先對她的操作數轉換為一個布爾值,然後對其求反,得到布爾值;第二個邏輯非(!)操作符則對這個布爾值再求反。 ...
  • DOM 是一個樹形結構,操作一個DOM節點,實際上就是這幾個操作:更新、刪除、添加、遍歷 在操作DOM節點之前,需要通過各種方式先拿到這個DOM節點,常用的方法有: 一、通過元素類型的方法來操作: 註意: 首碼為document,意思是在document節點下調用這些方法,當然也可以在其他的元素節點 ...
  • 微信小程式 下拉刷新 上拉載入,簡單方便,易於上手。 1.首先上list.wxml代碼 2.再上js代碼 3.簡單的list.wxss 4.list.json配置文件 至此,一個簡單的下拉刷新上拉載入基本搞定了。巧用微信的各種Api,就很舒服。 繼續擴展的話: 1.updateDom那裡下拉刷新是簡 ...
  • [1]Router [2]Route [3]Redirect [4]Link [5]Switch ...
  • 網站其本質就是HTML + CSS 外加一些JavaScript構成的。所以基本上只要你會一些前端,就可以開始花樣搭網站了。 如果只用HTML/CSS那做出來的網站只能叫靜態網站,性能好但維護不方便,所以你需要一個建站程式來幫你做這個事情。 如果你已經有一臺VPS(阿裡的ECS或者騰訊的CVM)... ...
  • 跨瀏覽器事件處理程式 最近在讀javascript高級程式設計,讀第十三章的時候有感。 開發中經常考慮的事情就是相容性,樣式相容,腳本相容等~~ 經常考慮的對象常為: DOM 與 IE (這裡的dom對象我理解為ie9,Firefox,chrome,safari,opera以上。IE則為ie8及以下 ...
  • 關於cas-server的安裝、部署網上教程很多。但是使用Cas,只通過部署時修改配置是無法滿足產品需求的,因此需要我們改造Cas。本文講解如何使用maven的overlay無侵入的改造Cas。 什麼是maven的overlay? overlay可以把多個項目war合併成為一個項目,並且如果項目存在 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...