java企業項目實戰
① 求一本書的pdf電子版,《java開發入門及項目實戰》,明日科技編著的
請下載附件吧,文件已給你上傳,希望對你的研究有所幫助,文件較大,耐心下載,還望採納答案
java學習路線圖——Java開發入門及項目實戰.pdf 明日科技編著 清華大學出版社 電子版下載
《Java開發入門及項目實戰》清華大學出版社.pdf
說明:本書系統全面地介紹了使用Java語言進行編程的各種技術,從初學者的角度出發,科學合理地設計全書內容,是學習Java編程技術的完美教程。全書共分3篇18章,第1篇為入門篇,主要包括Java語言概述、Eclipse開發工具、Java語言基礎、流程式控制制、數組、面向對象入門、面向對象進階、字元串與包裝類等內容;第2篇為提高篇,主要包括Java集合類框架、常用數學工具類、優雅地錯誤處理、輸入/輸出、枚舉類型與泛型、Swing入門、多線程、網路通信、資料庫操作等內容;第3篇為應用篇,介紹企業人事管理系統項目開發的全過程。
② SpringCloud Alibaba 實戰,來自尚矽谷電商項目理解
電商項目常見解決技術搭配方案:
SpringCloud Alibaba --nacos:注冊中心
SpringCloud Alibaba --nacos:配置中心
SpringCloud --Ribbon:負載均衡
SpringCloud Alibaba --Sentinel:服務容錯(限流、降級、熔斷)
SpringCloud --Gateway:API網關(webflux編程模式)
SpringCloud --Sleuth(調用鏈監控)
SpringCloud Alibaba --Seata:分布式事務解決方案
作用:因為都會用到springcloud alibaba,所以將 放到公共服務中,統一管理版本
Nacos 文檔地址: https://nacos.io/zh-cn/docs/quick-start.html
Nacos 下載地址:https://github.com/alibaba/nacos/releases
第一步:在需要注冊到nacos的服務pom文件中添加相應的nacos依賴
作用:將我們的服務注冊到注冊中心中,同時也可以從注冊中心中發現其他服務
第二步:將 Nacos 伺服器地址配置添加到 /src/main/resources/application.properties 文件中,
給當前服務命名
第三步:使用@EnableDiscoveryClient 註解開啟服務注冊和發現
啟動 Nacos 伺服器
下載 Nacos Server下載頁面
將下載的文件解壓,進入nacos/bin文件夾(),並根據操作系統的實際情況
Linux/Unix/Mac , 執行 sh startup.sh -m standalone
Windows , 執行 cmd startup.cmd
查詢服務
http://127.0.0.1:8848/nacos
用戶名和密碼默認都是nacos
如:member會員服務需要調用coupon優惠券服務的方法
1.在member服務和coupon服務的pom文件中引入feign依賴
2.開啟feign功能,在member服務上開啟
@FeignClient("gulimall-coupon"):其中gulimall-coupon為nacos注冊的被調用的服務名,@RequestMapping("/coupon/coupon/member/list")路徑為gulimall-coupon服務中membercoupons()方法的調用全路徑(添加上controller上的請求路徑)
對應的在gulimall-coupon服務中有membercoupons()方法的具體實現
第一步:引入 Nacos Config 進行配置管理
第二步:在需要管理配置的服務下,添加bootstrap.properties
第三步:需要給配置中心添加數據集(Data Id)gulimall-coupon.properties
第四步:給 應用名.properties 添加任何配置
第五步:在需要讀取配置的類上添加註解@RefreshScope,實時刷新獲取配置文件內容
@RefreshScope:動態獲取並刷新配置
@Value("${配置項的名}")
細節部分:
1.命名空間:主要用來做配置隔離
默認是public(保留空間);默認新增的所有配置都在public空間
a:開發、測試、生產:利用命名空間來做環境隔離
b:每一個微服務之間互相隔離配置,每一個微服務都創建自己的命名空間,只載入自己命名空間下的所有配置
2.配置集
一組相關或者不相關的配置項的集合稱為配置集。在系統中,一個配置文件通常就是一個配
置集,包含了系統各個方面的配置。例如,一個配置集可能包含了數據源、線程池、日誌級
別等配置項。
3.配置集ID
Nacos 中的某個配置集的 ID。配置集 ID 是組織劃分配置的維度之一。Data ID 通常用於組
織劃分系統的配置集。一個系統或者應用可以包含多個配置集,每個配置集都可以被一個有
意義的名稱標識。Data ID 通常採用類 Java 包(如 com.taobao.tc.refund.log.level)的命名
規則保證全局唯一性。此命名規則非強制。
4.配置組
Nacos 中的一組配置集,是組織配置的維度之一。通過一個有意義的字元串(如 Buy 或
Trade )對配置集進行分組,從而區分 Data ID 相同的配置集。當您在 Nacos 上創建一個
配置時,如果未填寫配置分組的名稱,則配置分組的名稱默認採用 DEFAULT_GROUP 。配置
分組的常見場景:不同的應用或組件使用了相同的配置類型,如 database_url 配置好
MQ_topic 配置。
載入多配置文件:
官方文檔:https://github.com/alibaba/Sentinel/wiki/%E4%BB%8B%E7%BB%8D
項目地址:https://github.com/alibaba/Sentinel
隨著微服務的流行,服務和服務之間的穩定性變得越來越重要。Sentinel 以流量為切入點,
從流量控制、熔斷降級、系統負載保護等多個維度保護服務的穩定性。
什麼是熔斷降級
除了流量控制以外,降低調用鏈路中的不穩定資源也是關鍵 Sentinel 的使命之一。由於調用關系的復雜性,如果調用鏈路中的某個資源出現了不穩定,最終會導致請求發生堆積。
Sentinel 和 Hystrix 的原則是一致的: 當檢測到調用鏈路中某個資源出現不穩定的表現,例如
如請求響應時間長或異常比例升高的時候,則對這個資源的調用進行限制,讓請求快速失敗,
避免影響到其它的資源而導致級聯故障。
熔斷降級設計理念
在限制的手段上,Sentinel 和 Hystrix 採取了完全不一樣的方法。
Hystrix 通過 線程池隔離 的方式,來對依賴(在 Sentinel 的概念中對應 資源)進行了隔
離。這樣做的好處是資源和資源之間做到了最徹底的隔離。缺點是除了增加了線程切換的成
本(過多的線程池導致線程數目過多),還需要預先給各個資源做線程池大小的分配。
Sentinel 對這個問題採取了兩種手段
a.通過並發線程數進行限制
b.通過響應時間對資源進行降級
步驟:
1、引入依賴
2、使用 Nacos 注冊中心
3、定義 fallback 實現
在服務消費者中,實現 feign 遠程介面,介面的實現方法即為調用錯誤的容錯方法
4、定義 fallbackfactory 並放在容器中
5、改造 fallback 類接受異常並實現容錯方法
6、遠程介面配置 feign 客戶端容錯
7、開啟 sentinel 代理 feign 功能;在 application.properties 中配置
測試熔斷效果。當遠程服務出現問題,會自動調用回調方法返回默認數據。