1. 程式人生 > >微服務SpringCloud+Docker入門到高級實戰(教程詳情)

微服務SpringCloud+Docker入門到高級實戰(教程詳情)

超時時間 images 講課 wiki 灰度 ket ignore 源碼剖析 面向對象


第一章 課程介紹和學習路線

1、微服務架構SpringCloud課程介紹
簡介:課程介紹和課程大綱講解,講課風格和重點內容理解技巧


2、技術選型和學後水平
簡介:課程所需基礎和技術選型講解,學完課程可以到達怎樣的程度,

1、IDEA JDK8 Maven SpringBoot基礎 Linux

2、理解掌握並開發SpringCloud裏面主流架構和組件的基礎使用,還有部分源碼原理的理解

3、掌握學習的技巧和解決問題的思路

第二章 架構演進和分布式系統基礎知識

1、傳統架構演進到分布式架構
簡介:講解單機應用和分布式應用架構演進基礎知識 (畫圖)

高可用 LVS+keepalive


1、單體應用:
開發速度慢
啟動時間長
依賴龐大
等等


2、微服務
易開發、理解和維護
獨立的部署和啟動


不足:
分布式系統-》分布式事務問題
需要管理多個服務-》服務治理

2、微服務核心基礎講解
簡介:講解微服務核心知識 :網關、服務發現註冊、配置中心、鏈路追蹤、負載均衡器、熔斷
1、網關:路由轉發 + 過濾器
/api/v1/pruduct/ 商品服務
/api/v1/order/ 訂單服務
/api/v1/user/ 用戶服務


2、服務註冊發現:調用和被調用方的信息維護

3、配置中心:管理配置,動態更新 application.properties

4、鏈路追蹤:分析調用鏈路耗時
例子:下單-》查詢商品服務獲取商品價格-》查詢用戶信息-》保存數據庫

5、負載均衡器:分發負載

6、熔斷:保護自己和被調用方


3、常見的微服務框架
簡介:講解常用的微服務框架

consumer: 調用方
provider: 被調用方
一個接口一般都會充當兩個角色(不是同時充當)

1、dubbo: zookeeper + dubbo + springmvc/springboot
官方地址:http://dubbo.apache.org/#!/?lang=zh-cn
配套
通信方式:rpc
註冊中心:zookeper/redis
配置中心:diamond

2、springcloud: 全家桶+輕松嵌入第三方組件(Netflix 奈飛)
官網:http://projects.spring.io/spring-cloud/
配套
通信方式:http restful
註冊中心:eruka/consul
配置中心:config
斷路器:hystrix
網關:zuul
分布式追蹤系統:sleuth+zipkin

學習資料:https://blog.csdn.net/zhangweiwei2020/article/details/78646252


4、微服務下電商項目基礎模塊設計
簡介:微服務下電商項目基礎模塊設計 分離幾個模塊,課程圍繞這個基礎項目進行學習
小而精的方式學習微服務

1、用戶服務
1)用戶信息接口
2)登錄接口

2、商品服務
1)商品列表
2)商品詳情

3、訂單服務
1)我的訂單
2)下單接口

第三章 SpringCloud核心組件註冊中心

1、什麽是微服務的註冊中心
簡介:講解什麽是註冊中心,常用的註冊中心有哪些 (畫圖)

理解註冊中心:服務管理,核心是有個服務註冊表,心跳機制動態維護

服務提供者provider: 啟動的時候向註冊中心上報自己的網絡信息

服務消費者consumer: 啟動的時候向註冊中心上報自己的網絡信息,拉取provider的相關網絡信息


為什麽要用:
微服務應用和機器越來越多,調用方需要知道接口的網絡地址,如果靠配置文件的方式去控制網絡地址,對於動態新增機器,維護帶來很大問題

主流的註冊中心:
zookeeper、Eureka、consul、etcd 等


2、分布式應用知識CAP理論知識
簡介:講解分布式核心知識CAP理論

CAP定理:
指的是在一個分布式系統中,Consistency(一致性)、 Availability(可用性)、Partition tolerance(分區容錯性),三者不可同時獲得。


一致性(C):在分布式系統中的所有數據備份,在同一時刻是否同樣的值。(所有節點在同一時間的數據完全一致,越多節點,數據同步越耗時)


可用性(A):負載過大後,集群整體是否還能響應客戶端的讀寫請求。(服務一直可用,而且是正常響應時間)


分區容錯性(P):分區容忍性,就是高可用性,一個節點崩了,並不影響其它的節點(100個節點,掛了幾個,不影響服務,越多機器越好)


CAP理論就是說在分布式存儲系統中,最多只能實現上面的兩點。而由於當前的網絡硬件肯定會出現延遲丟包等問題,所以分區容忍性是我們必須需要實現的。所以我們只能在一致性和可用性之間進行權衡

3、分布式系統CAP原理常見面試題和註冊中心選擇
簡介:講解CAP原則在面試中回答和註冊中心選擇

C A 滿足的情況下,P不能滿足的原因:
數據同步(C)需要時間,也要正常的時間內響應(A),那麽機器數量就要少,所以P就不滿足

CP 滿足的情況下,A不能滿足的原因:
數據同步(C)需要時間, 機器數量也多(P),但是同步數據需要時間,所以不能再正常時間內響應,所以A就不滿足

AP 滿足的情況下,C不能滿足的原因:
機器數量也多(P),正常的時間內響應(A),那麽數據就不能及時同步到其他節點,所以C不滿足

註冊中心選擇:
Zookeeper:CP設計,保證了一致性,集群搭建的時候,某個節點失效,則會進行選舉行的leader,或者半數以上節點不可用,則無法提供服務,因此可用性沒法滿足

Eureka:AP原則,無主從節點,一個節點掛了,自動切換其他節點可以使用,去中心化

結論:分布式系統中P,肯定要滿足,所以只能在CA中二選一
沒有最好的選擇,最好的選擇是根據業務場景來進行架構設計

如果要求一致性,則選擇zookeeper,如金融行業

如果要去可用性,則Eureka,如電商系統

4、SpringCloud微服務核心組件Eureka介紹和閉源後影響
簡介:
SpringCloud體系介紹
官方地址:http://projects.spring.io/spring-cloud/


Eureka的基礎知識-->畫圖講解交互流程,服務提供者<-->服務消費者 ;

Eureka 2.x閉源後選擇

參考:https://www.jianshu.com/p/d32ae141f680
https://blog.csdn.net/zjcjava/article/details/78608892


5、服務註冊和發現Eureka Server搭建實戰
簡介:使用IDEA搭建Eureka服務中心Server端並啟動,項目基本骨架介紹

官方文檔:http://cloud.spring.io/spring-cloud-netflix/single/spring-cloud-netflix.html#spring-cloud-eureka-server

第一步:創建項目
第二步: 添加註解 @EnableEurekaServer
第三步:增加配置application.yml
server:
port: 8761

eureka:
instance:
hostname: localhost
client:
#聲明自己是個服務端
registerWithEureka: false
fetchRegistry: false
serviceUrl:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

第四步:訪問註冊中心頁面

maven地址: https://www.cnblogs.com/sword-successful/p/6408281.html

6、服務註冊和發現之Eureka Client搭建商品服務實戰
簡介:搭建用商品服務,並將服務註冊到註冊中心

1、創建一個SpirngBoot應用,增加服務註冊和發現依賴
2、模擬商品信息,存儲在內存中

3、開發商品列表接口,商品詳情接口

4、配置文件加入註冊中心地址
使用eureka客戶端 官方文檔:http://cloud.spring.io/spring-cloud-netflix/single/spring-cloud-netflix.html#netflix-eureka-client-starter

7、Eureka服務註冊中心配置控制臺問題處理
簡介:講解服務註冊中心管理後臺,(後續還會細講)

問題:eureka管理後臺出現一串紅色字體:是警告,說明有服務上線率低

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.

關閉檢查方法:eureka服務端配置文件加入
server:
enable-self-preservation: false
註意:自我保護模式禁止關閉,默認是開啟狀態true


問題二:為什麽只加一個註冊中心地址,就可以註冊
By having spring-cloud-starter-netflix-eureka-client on the classpath, your application automatically registers with the Eureka Server. Configuration is required to locate the Eureka server, as shown in the following example:


第四章 服務消費者ribbon和feign實戰和註冊中心高可用


1、常用的服務間調用方式講解
簡介:講解常用的服務間的調用方式

RPC:
遠程過程調用,像調用本地服務(方法)一樣調用服務器的服務
支持同步、異步調用
客戶端和服務器之間建立TCP連接,可以一次建立一個,也可以多個調用復用一次鏈接

PRC數據包小
protobuf
thrift
rpc:編解碼,序列化,鏈接,丟包,協議


Rest(Http):
http請求,支持多種協議和功能
開發方便成本低

http數據包大

java開發:HttpClient,URLConnection

2、微服務調用方式之ribbon實戰 訂單調用商品服務
簡介:實戰電商項目 訂單服務 調用商品服務獲取商品信息
1、創建order_service項目
2、開發偽下單接口
3、使用ribbon. (類似httpClient,URLConnection)

啟動類增加註解
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}
4、根據名稱進行調用商品,獲取商品詳情

3、高級篇幅之Ribbon負載均衡源碼分析實戰
簡介: 講解ribbon服務間調用負載均衡源碼分析
1、完善下單接口
2、分析@LoadBalanced
1)首先從註冊中心獲取provider的列表
2)通過一定的策略選擇其中一個節點
3)再返回給restTemplate調用

4、高級篇幅之服務間調用之負載均衡策略調整實戰
簡介:實戰調整默認負載均衡策略實戰

自定義負載均衡策略:http://cloud.spring.io/spring-cloud-static/Finchley.RELEASE/single/spring-cloud.html#_customizing_the_ribbon_client_by_setting_properties

在配置文件yml裏面,自定義負載均衡策略
#自定義負載均衡策略
product-service:
ribbon:
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule

策略選擇:
1、如果每個機器配置一樣,則建議不修改策略 (推薦)
2、如果部分機器配置強,則可以改為 WeightedResponseTimeRule

5、微服務調用方式之feign 實戰 訂單調用商品服務
簡介:改造電商項目 訂單服務 調用商品服務獲取商品信息
Feign: 偽RPC客戶端(本質還是用http)
官方文檔: https://cloud.spring.io/spring-cloud-openfeign/


1、使用feign步驟講解(新舊版本依賴名稱不一樣)
加入依賴
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
啟動類增加@EnableFeignClients
增加一個接口 並@FeignClient(name="product-service")

2、編碼實戰


3、註意點:
1、路徑
2、Http方法必須對應
3、使用requestBody,應該使用@PostMapping
4、多個參數的時候,通過@RequestParam("id") int id)方式調用


6、Feign核心源碼解讀和服務調用方式ribbon和Feign選擇
簡介: 講解Feign核心源碼解讀和 服務間的調用方式ribbon、feign選擇

1、ribbon和feign兩個的區別和選擇
選擇feign
默認集成了ribbon
寫起來更加思路清晰和方便
采用註解方式進行配置,配置熔斷等方式方便

2、超時配置
默認optons readtimeout是60,但是由於hystrix默認是1秒超時

#修改調用超時時間
feign:
client:
config:
default:
connectTimeout: 2000
readTimeout: 2000

模擬接口響應慢,線程睡眠新的方式
try {
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}

第五章 互聯網架構服務降級熔斷 Hystrix 實戰


1、分布式核心知識之熔斷、降級講解
簡介:系統負載過高,突發流量或者網絡等各種異常情況介紹,常用的解決方案

1、熔斷:
保險絲,熔斷服務,為了防止整個系統故障,包含子和下遊服務

下單服務 -》商品服務
-》用戶服務 (出現異常-》熔斷)

2、降級:
拋棄一些非核心的接口和數據

旅行箱的例子:只帶核心的物品,拋棄非核心的,等有條件的時候再去攜帶這些物品


3、熔斷和降級互相交集
相同點:
1)從可用性和可靠性觸發,為了防止系統崩潰
2)最終讓用戶體驗到的是某些功能暫時不能用

不同點
1)服務熔斷一般是下遊服務故障導致的,而服務降級一般是從整體系統負荷考慮,由調用方控制


2、Netflix開源組件斷路器Hystrix介紹
簡介:介紹Hystrix基礎知識和使用場景

文檔地址:
https://github.com/Netflix/Hystrix
https://github.com/Netflix/Hystrix/wiki

1、什麽是Hystrix?
1)hystrix對應的中文名字是“豪豬”

2)hystrix 英[h?st‘r?ks] 美[h?st‘r?ks]


2、為什麽要用?
在一個分布式系統裏,一個服務依賴多個服務,可能存在某個服務調用失敗,
比如超時、異常等,如何能夠保證在一個依賴出問題的情況下,不會導致整體服務失敗,
通過Hystrix就可以解決

http://cloud.spring.io/spring-cloud-netflix/single/spring-cloud-netflix.html#_circuit_breaker_hystrix_clients

3、提供了熔斷、隔離、Fallback、cache、監控等功能


4、熔斷後怎麽處理?
出現錯誤之後可以 fallback 錯誤的處理信息

兜底數據


3、Feign結合Hystrix斷路器開發實戰《上》
簡介:講解SpringCloud整合斷路器的使用,用戶服務異常情況

1、加入依賴

註意:網上新舊版本問題,所以要以官網為主,不然部分註解會丟失
最新版本 2.0

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


2、增加註解
啟動類裏面增加註解
@EnableCircuitBreaker

註解越來越多-》 SpringCloudApplication註解

3、API接口編碼實戰
熔斷-》降級

1)最外層api使用,好比異常處理(網絡異常,參數或者內部調用問題)
api方法上增加 @HystrixCommand(fallbackMethod = "saveOrderFail")

編寫fallback方法實現,方法簽名一定要和api方法簽名一致(註意點!!!)

補充: 修改maven倉庫地址
pom.xml中修改

<repositories>
<repository>
<id>nexus-aliyun</id>
<name>Nexus aliyun</name>
<layout>default</layout>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories>


4、Feign結合Hystrix斷路器開發實戰《下》
簡介:講解SpringCloud整合斷路器的使用,用戶服務異常情況
1、feign結合Hystrix

1)開啟feign支持hystrix (註意,一定要開啟,舊版本默認支持,新版本默認關閉)
feign:
hystrix:
enabled: true

2)FeignClient(name="xxx", fallback=xxx.class ), class需要繼承當前FeignClient的類


5、熔斷降級服務異常報警通知實戰
簡介:完善服務熔斷處理,報警機制完善

1、加入redis依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
2、配置redis鏈接信息
redis:
database: 0
host: 127.0.0.1
port: 6379
timeout: 2000

3、使用

//監控報警
String saveOrderKye = "save-order";
String sendValue = redisTemplate.opsForValue().get(saveOrderKye);
final String ip = request.getRemoteAddr();
new Thread( ()->{
if (StringUtils.isBlank(sendValue)) {
System.out.println("緊急短信,用戶下單失敗,請離開查找原因,ip地址是="+ip);
//發送一個http請求,調用短信服務 TODO
redisTemplate.opsForValue().set(saveOrderKye, "save-order-fail", 20, TimeUnit.SECONDS);
}else{
System.out.println("已經發送過短信,20秒內不重復發送");
}
}).start();

6、高級篇幅之深入源碼剖析Hystrix降級策略和調整
簡介:源碼分析Hystrix降級策略和調整

1、查看默認講解策略 HystrixCommandProperties
1)execution.isolation.strategy 隔離策略
THREAD 線程池隔離 (默認)
SEMAPHORE 信號量
信號量適用於接口並發量高的情況,如每秒數千次調用的情況,導致的線程開銷過高,通常只適用於非網絡調用,執行速度快

2)execution.isolation.thread.timeoutInMilliseconds 超時時間
默認 1000毫秒

3)execution.timeout.enabled 是否開啟超時限制 (一定不要禁用)


4)execution.isolation.semaphore.maxConcurrentRequests 隔離策略為 信號量的時候,如果達到最大並發數時,後續請求會被拒絕,默認是10


官方文檔:
https://github.com/Netflix/Hystrix/wiki/Configuration#execution.isolation.strategy

2、調整策略
超時時間調整

hystrix:
command:
default:
execution:
isolation:
thread:
timeoutInMilliseconds: 4000

7、斷路器Dashboard監控儀表盤實戰
簡介:講解斷路器Dashboard基礎使用和查看
1、加入依賴
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

2、啟動類增加註解
@EnableHystrixDashboard


3、配置文件增加endpoint
management:
endpoints:
web:
exposure:
include: "*"


4、訪問入口
http://localhost:8781/hystrix

Hystrix Dashboard輸入: http://localhost:8781/actuator/hystrix.stream


參考資料
默認開啟監控配置
https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#boot-features-security-actuator

配置文件類:
spring-configuration-metadata.json

8、斷路器監控儀表參數講解和模擬熔斷
簡介:講解 斷路器監控儀表盤參數和模擬熔斷

1、sse server-send-event推送到前端

資料:https://github.com/Netflix/Hystrix/wiki/Dashboard

第六章 微服務網關zuul開發實戰

1、微服務網關介紹和使用場景
簡介:講解網關的作用和使用場景 (畫圖)

1)什麽是網關
API Gateway,是系統的唯一對外的入口,介於客戶端和服務器端之間的中間層,處理非業務功能 提供路由請求、鑒權、監控、緩存、限流等功能

統一接入
智能路由
AB測試、灰度測試
負載均衡、容災處理
日誌埋點(類似Nignx日誌)

流量監控
限流處理
服務降級

安全防護
鑒權處理
監控
機器網絡隔離


2)主流的網關
zuul:是Netflix開源的微服務網關,和Eureka,Ribbon,Hystrix等組件配合使用,Zuul 2.0比1.0的性能提高很多

kong: 由Mashape公司開源的,基於Nginx的API gateway

nginx+lua:是一個高性能的HTTP和反向代理服務器,lua是腳本語言,讓Nginx執行Lua腳本,並且高並發、非阻塞的處理各種請求

2、SpringCloud的網關組件zuul基本使用
簡介:講解zuul網關基本使用

1、加入依賴


2、啟動類加入註解 @EnableZuulProxy
默認集成斷路器 @EnableCircuitBreaker

默認訪問規則
http://gateway:port/service-id/**

例子:默認 /order-service/api/v1/order/save?user_id=2&product_id=1
自定義 /xdclass_order/api/v1/order/save?user_id=2&product_id=1

自定義路由轉發:
zuul:
routes:
order-service: /apigateway/**


環境隔離配置:
需求 :不想讓默認的服務對外暴露接口
/order-service/api/v1/order/save

配置:
zuul:
ignored-patterns:
- /*-service/api/v1/order/save

3、高級篇幅之Zuul常用問題分析和網關過濾器原理分析

簡介:講解Zuul網關原理和過濾器生命周期,

1、路由名稱定義問題
路由映射重復覆蓋問題

2、Http請求頭過濾問題

3、過濾器執行順序問題 ,過濾器的order值越小,越先執行

4、共享RequestContext,上下文對象

4、自定義Zuul過濾器實現登錄鑒權實戰
簡介:自定義Zuul過濾器實現登錄鑒權實戰

1、新建一個filter包

2、新建一個類,實現ZuulFilter,重寫裏面的方法

3、在類頂部加註解,@Component,讓Spring掃描

5、高級篇幅之高並發情況下接口限流特技
簡介:谷歌guava框架介紹,網關限流使用

1、nginx層限流

2、網關層限流

6、Zuul微服務網關集群搭建
簡介:微服務網關Zull集群搭建

1、nginx+lvs+keepalive
https://www.cnblogs.com/liuyisai/p/5990645.html

第七章 分布式鏈路追蹤系統Sleuth和ZipKin實戰

1、微服務下的鏈路追蹤講解和重要性
簡介:講解什麽是分布式鏈路追蹤系統,及使用好處

2、SpringCloud的鏈路追蹤組件Sleuth實戰
簡介:講解分布式鏈路追蹤組件Sleuth實戰

1、官方文檔
http://cloud.spring.io/spring-cloud-static/Finchley.SR1/single/spring-cloud.html#sleuth-adding-project

2、什麽是Sleuth
一個組件,專門用於記錄鏈路數據的開源組件

[order-service,96f95a0dd81fe3ab,852ef4cfcdecabf3,false]

1、第一個值,spring.application.name的值

2、第二個值,96f95a0dd81fe3ab ,sleuth生成的一個ID,叫Trace ID,用來標識一條請求鏈路,一條請求鏈路中包含一個Trace ID,多個Span ID

3、第三個值,852ef4cfcdecabf3、spanid 基本的工作單元,獲取元數據,如發送一個http

4、第四個值:false,是否要將該信息輸出到zipkin服務中來收集和展示。

3、添加依賴
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>


3、SpringCloud的鏈路追蹤組件Sleuth常見問題說明
簡介:講解分布式鏈路追蹤組件Sleuth常見問題說明



4、可視化鏈路追蹤系統Zipkin部署
簡介:講解Zipkin的介紹和部署
1、什麽是zipkin
官網:https://zipkin.io/
大規模分布式系統的APM工具(Application Performance Management),基於Google Dapper的基礎實現,和sleuth結合可以提供可視化web界面分析調用鏈路耗時情況

2、同類產品
鷹眼(EagleEye)
CAT
twitter開源zipkin,結合sleuth
Pinpoint,運用JavaAgent字節碼增強技術
StackDriver Trace (Google)

3、開始使用
https://github.com/openzipkin/zipkin
https://zipkin.io/pages/quickstart.html

zipkin組成:Collector、Storage、Restful API、Web UI組成

4、知識拓展:OpenTracing
OpenTracing 已進入 CNCF,正在為全球的分布式追蹤,提供統一的概念和數據標準。
通過提供平臺無關、廠商無關的 API,使得開發人員能夠方便的添加(或更換)追蹤系統的實現。


推薦閱讀:
http://blog.daocloud.io/cncf-3/
https://www.zhihu.com/question/27994350
https://yq.aliyun.com/articles/514488?utm_content=m_43347

5、高級篇幅之鏈路追蹤組件Zipkin+Sleuth實戰
簡介:使用Zipkin+Sleuth業務分析調用鏈路分析實戰

1、文檔
http://cloud.spring.io/spring-cloud-static/Finchley.SR1/single/spring-cloud.html#_sleuth_with_zipkin_via_http

sleuth收集跟蹤信息通過http請求發送給zipkin server,zipkinserver進行跟蹤信息的存儲以及提供Rest API即可,Zipkin UI調用其API接口進行數據展示

默認存儲是內存,可也用mysql、或者elasticsearch等存儲

2、加入依賴
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>

裏面包含 spring-cloud-starter-sleuth、spring-cloud-sleuth-zipkin

3、文檔說明:http://cloud.spring.io/spring-cloud-static/Finchley.SR1/single/spring-cloud.html#_features_2

4、配置zipkin.base-url

5、配置采樣百分閉spring.sleuth.sampler


推薦資料:
https://blog.csdn.net/jrn1012/article/details/77837710


第八章 微服務核心知識分布式配置中心Config實戰

1、微服務下的分布式配置中心
簡介:講解什麽是配置中心及使用前後的好處 (畫圖)
什麽是配置中心:
一句話:統一管理配置, 快速切換各個環境的配置

相關產品:
百度的disconf
地址:https://github.com/knightliao/disconf

阿裏的diamand
地址:https://github.com/takeseem/diamond

springcloud的configs-server:
地址:http://cloud.spring.io/spring-cloud-config/


推薦幹貨文章:http://jm.taobao.org/2016/09/28/an-article-about-config-center/

2、SpringCloud的配置中心組件config-server實戰
簡介:講解SpringCloud配置中心config-server實戰
1、新建項目,創建config-server
2、啟動類增加註解
@EnableConfigServer



3、使用git服務器結合Config搭建分布式配置中心
簡介:講解使用git服務器結合Config搭建分布式配置中心

1、默認使用git存儲配置中心
使用git服務器,可以自己搭建gitlab服務器
或者使用github、開源中國git、阿裏雲git

[email protected]
xdclass.net123

https://gitee.com/waitforxy/config_cloud.git

2、配置文件添加配置
spring:
application:
name: config-server
#git配置
cloud:
config:
server:
git:
uri: https://gitee.com/waitforxy/config_cloud
username: [email protected]
password: xdclass.net123
#超時時間
timeout: 5
#分支
default-label: master


3、訪問方式(一定要註意語法,如果有問題,會出錯)
多種訪問路徑,可以通過啟動日誌去查看
例子 http://localhost:9100/product-service.yml

/{name}-{profiles}.properties
/{name}-{profiles}.yml
/{name}-{profiles}.json
/{label}/{name}-{profiles}.yml

name 服務器名稱
profile 環境名稱,開發、測試、生產
lable 倉庫分支、默認master分支

4、分布式配置中心客戶端使用實戰
簡介:微服務裏面客戶端接入配置中心實戰
官方文檔:http://cloud.spring.io/spring-cloud-config/single/spring-cloud-config.html#_spring_cloud_config_client

1、加入依賴
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-client</artifactId>
</dependency>

2、修改對應服務的配置文件,把application.yml 改為 bootstrap.yml
#指定註冊中心地址
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/

#服務的名稱
spring:
application:
name: product-service
#指定從哪個配置中心讀取
cloud:
config:
discovery:
service-id: CONFIG-SERVER
enabled: true
profile: test
#建議用lable去區分環境,默認是lable是master分支
#label: test

註意點:
1.配置文件要用bootstrap.yml
2.默認讀取文件名是 服務名稱


第九章 微服務消息總線Bus結合消息隊列RabbitMQ實戰

1、消息總線Bus介紹和使用場景
簡介:講解消息總線Bus介紹和使用場景
1、什麽是消息
一個事件,需要廣播或者單獨傳遞給某個接口

2、為什麽使用這個
配置更新了,但是其他系統不知道是否更新

2、消息隊列和RabbitMQ基礎介紹
簡介:消息隊列和RabbitMQ基礎介紹

1、消息隊列介紹
參考:https://www.cnblogs.com/linjiqin/p/5720865.html

2、同類產品
ActiveMQ
RocketMQ
Kafka

3、SpringCloud默認推薦使用RabbitMQ


4、RabbitMQ介紹
官方文檔:http://www.rabbitmq.com/getstarted.html
中文文檔:http://rabbitmq.mr-ping.com/

3、實戰系列使用Docker搭建RabbitMQ3.7
簡介:使用Docker安裝RabbitMQ

1、如果對Docker沒基礎,課程後續有講解Docker,可以先跳轉過去學習Docker
2、安裝步驟
1)拉取鏡像:docker pull rabbitmq:management
2)查看當前鏡像列表:docker images
3)刪除指定鏡像:docker rmi IMAGE_ID (如果需要強制刪除加 -f)

4)創建容器
docker run -d --name="myrabbitmq" -p 5671:5671 -p 15672:15672 rabbitmq:management

參數講解:
run: 創建一個新的容器並運行一個命令
-d: 後臺運行容器,並返回容器ID
-p: 端口映射,格式為:主機(宿主)端口:容器端口
--name="rabbitmq": 為容器指定一個名稱


3、RabbitMQ默認創建了一個 guest 用戶,密碼也是 guest, 如果訪問不了記得查看防火墻,端口或者雲服務器的安全組
管理後臺:http://127.0.0.1:15672


其他安裝方式:
Linux安裝:https://blog.csdn.net/qq_34021712/article/details/72567786
windows安裝:http://www.rabbitmq.com/install-windows.html

https://blog.csdn.net/liyuejin/article/details/78410586

4、高級篇幅消息總線整合配置中心架構流程圖
簡介:講解消息總線Bus結合config組件搭建配置中心項目架構圖和操作流程

啟動
rabbitmq: docker run -d -p 5672:5672 -p 15672:15672 rabbitmq:management
rabbitmq默認是5672,所以改為5672端口

1、config-client加入依賴

<!--配置中心結合消息隊列-->

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>



官方文檔:http://cloud.spring.io/spring-cloud-bus/single/spring-cloud-bus.html#_bus_refresh_endpoint
文檔裏面 暴露端點 management.endpoints.web.exposure.include=bus-refresh

2、在配置文件中增加關於RabbitMQ的連接(如果是本機,則可以直接啟動,采用默認連接配置)
spring:
rabbitmq:
host: localhost
port: 5672
username: guest
password: guest

#暴露全部的監控信息
management:
endpoints:
web:
exposure:
include: "*"

3、需要刷新配置的地方,增加註解
@RefreshScope

4、訪問驗證 post方式:
http://localhost:8773/actuator/bus-refresh

5、動態刷新配置: 在開發和測試環境使用,盡量少在生產環境使用


5、微服務相關項目改造配置中心
簡介:把課程項目改造成配置中心講解

1、git裏面新增對應項目的配置文件,都要添加下面的配置
#服務的名稱
spring:
rabbitmq:
host: localhost
port: 5672
username: guest
password: guest

#暴露全部的監控信息
management:
endpoints:
web:
exposure:
include: "*"



2、項目裏面添加maven依賴

<!--配置中心客戶端-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-client</artifactId>
</dependency>

<!--config server-->

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>


3、修改application.properties為bootstrap.yml 並拷貝配置文件

#指定註冊中心地址
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/

#服務的名稱
spring:
application:
name: order-service
#指定從哪個配置中心讀取
cloud:
config:
discovery:
service-id: CONFIG-SERVER
enabled: true
profile: test

4、各個項目啟動順序
1)註冊中心
2)配置中心
3)對應的服務:商品服務、訂單服務。。。
4)啟動網關

第十章、SpringCloud課程內容上半部分總結

1、微服務核心知識內容回顧

簡介:回顧SpringCloud前面10章的基礎內容

1)介紹微服務的基礎知識,核心組件,CAP原理

2)SpringCloud註冊中心 Eureka

3)product-service / order-service

4) 偽RPC Ribbon / feign

5) hystrix熔斷

6) 服務網關介紹,zuul

7)配置中心config-server


2、微服務下半部分知識 雲服務器和Docker容器
簡介:講解雲服務器和容器知識

第十一章 阿裏雲ECS服務器介紹和網絡知識講解

1、雲服務器介紹和阿裏雲服務器ECS服務器選購
簡介:什麽是雲服務器及目前主要的幾個廠商介紹
1、阿裏雲、騰訊雲、亞馬遜雲
阿裏雲:https://www.aliyun.com/
騰訊雲:https://cloud.tencent.com/
亞馬遜雲:https://aws.amazon.com/


2、阿裏雲服務器遠程登錄和常用工具
簡介:講解阿裏雲服務器登錄使用和常見終端工具
1、windows工具 putty,xshell, security
參考資料:
https://jingyan.baidu.com/article/e75057f210c6dcebc91a89dd.html
https://www.jb51.net/softjc/88235.html

2、蘋果系統MAC: 通過終端登錄
ssh root@ip 回車後輸入密碼
ssh [email protected]

3、可以嘗試自己通過百度進行找文檔, 安裝mysql jdk nginx maven git redis elk

3、互聯網架構知識之網站部署上線基礎準備
簡介:講解應用部署到可以公網訪問需要步驟

1、一個http請求的故事

2、什麽是cname和a記錄
A記錄和CNAME只可以同時生效一個,A記錄優先

3、域名和ip的關系,DNS作用


參考資料:
https://blog.csdn.net/benbenzhuhwp/article/details/44704319

https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=0&rsv_idx=1&ch=1&tn=98050039_dg&wd=%E4%B8%80%E4%B8%AAhttp%E8%AF%B7%E6%B1%82%E7%9A%84%E8%AF%A6%E7%BB%86%E8%BF%87%E7%A8%8B&rsv_pq=80a65c5f00005961&rsv_t=a5fcWreuJzILdSwr4gI8pFqlO7HSu5BlhjwalyVzPiV9w2L%2BKEj78pPi1Qn6Vx4wXxI&rqlang=cn&rsv_enter=1&rsv_sug3=8&rsv_sug1=8&rsv_sug7=100&sug=%25E4%25B8%2580%25E4%25B8%25AAhttp%25E8%25AF%25B7%25E6%25B1%2582%25E7%259A%2584%25E8%25AF%25A6%25E7%25BB%2586%25E8%25BF%2587%25E7%25A8%258B&rsv_n=1


4、域名購買和配置解析實戰
簡介:域名購買和配置解析實戰

1、購買域名,備案
阿裏雲 備案地址:https://beian.aliyun.com/

2、購買服務器,阿裏雲,騰訊雲,亞馬遜雲aws

3、配置域名解析到服務器



第十二章 微服務必備技能Docker容器基礎篇幅

1、微服務下的Docker介紹和使用場景
簡介:Docker介紹和使用場景

1、什麽是Dokcer
百科:一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後發布到任何流行的 Linux 機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何接口;

使用go語言編寫,在LCX(linux容器)基礎上進行的封裝

簡單來說:
1)就是可以快速部署啟動應用
2)實現虛擬化,完整資源隔離
3)一次編寫,四處運行(有一定的限制,比如Docker是基於Linux 64bit的,無法在32bit的linux/Windows/unix環境下使用)

2、為什麽要用
1、提供一次性的環境,假如需要安裝Mysql,則需要安裝很多依賴庫、版本等,如果使用Docker則通過鏡像就可以直接啟動運行

2、快速動態擴容,使用docker部署了一個應用,可以制作成鏡像,然後通過Dokcer快速啟動

3、組建微服務架構,可以在一個機器上模擬出多個微服務,啟動多個應用

4、更好的資源隔離和共享

一句話:開箱即用,快速部署,可移植性強,環境隔離

2、Linux雲服務器Centos7安裝Docker實戰
簡介:講解阿裏雲ECS服務安裝Docker實戰
Linux Standard Base的縮寫,lsb_release命令用來顯示LSB和特定版本的相關信息
命令: lsb_release -a

阿裏雲安裝手冊:
https://help.aliyun.com/document_detail/51853.html?spm=a2c4g.11186623.6.820.RaToNY

常見問題:
https://blog.csdn.net/daluguishou/article/details/52080250


3、Docker倉庫、鏡像、容器核心知識講解
簡介:快速掌握Dokcer基礎知識,

1、概念:
Docker 鏡像 - Docker images:
容器運行時的只讀模板,操作系統+軟件運行環境+用戶程序

class User{
private String userName;
private int age;
}


Docker 容器 - Docker containers:
容器包含了某個應用運行所需要的全部環境

User user = new User()


Docker 倉庫 - Docker registeries:
用來保存鏡像,有公有和私有倉庫,好比Maven的中央倉庫和本地私服
鏡像倉庫:

(參考)配置國內鏡像倉庫:https://blog.csdn.net/zzy1078689276/article/details/77371782

對比面向對象的方式
Dokcer 裏面的鏡像 : Java裏面的類 Class
Docker 裏面的容器 : Java裏面的對象 Object
通過類創建對象,通過鏡像創建容器


4、Docker容器常見命令實戰
簡介:講解Docker在雲服務上的實際應用
1、 常用命令(安裝部署好Dokcer後,執行的命令是docker開頭),xxx是鏡像名稱

搜索鏡像:docker search xxx

列出當前系統存在的鏡像:docker images

拉取鏡像:docker pull xxx
xxx是具體某個鏡像名稱(格式 REPOSITORY:TAG)
REPOSITORY:表示鏡像的倉庫源,TAG:鏡像的標簽

運行一個容器:docker run -d --name "xdclass_mq" -p 5672:5672 -p 15672:15672 rabbitmq:management
docker run - 運行一個容器
-d 後臺運行
-p 端口映射
rabbitmq:management (格式 REPOSITORY:TAG),如果不指定tag,默認使用最新的
--name "xxx"

列舉當前運行的容器:docker ps

檢查容器內部信息:docker inspect 容器名稱

刪除鏡像:docker rmi IMAGE_NAME
強制移除鏡像不管是否有容器使用該鏡像 增加 -f 參數,

停止某個容器:docker stop 容器名稱

啟動某個容器:docker start 容器名稱

移除某個容器: docker rm 容器名稱 (容器必須是停止狀態)


文檔:
https://blog.csdn.net/permike/article/details/51879578

5、實戰應用之使用Docker部署Nginx服務器
簡介:講解使用Docker部署Nginx服務器實戰
1、獲取鏡像
docker run (首先會從本地找鏡像,如果有則直接啟動,沒有的話,從鏡像倉庫拉起,再啟動)

docker search nignx
2、列舉
docker images
3、拉取
docker pull nignx
3、啟動
docker run -d --name "xdclass_nginx" -p 8088:80 nginx
docker run -d --name "xdclass_nginx2" -p 8089:80 nginx
docker run -d --name "xdclass_nginx3" -p 8090:80 nginx
4、訪問
如果是阿裏雲服務,記得配置安全組,騰訊雲也需要配置,這個就是一個防火墻

6、公司中Docker鏡像倉庫使用講解
簡介:講解一般公司中鏡像倉庫在的使用

1、為啥要用鏡像倉庫


2、官方公共鏡像倉庫和私有鏡像倉庫
公共鏡像倉庫:
官方:https://hub.docker.com/,基於各個軟件開發或者有軟件提供商開發的
非官方:其他組織或者公司開發的鏡像,供大家免費試用

私有鏡像倉庫:
用於存放公司內部的鏡像,不提供給外部試用;

SpringCloud 開發了一個支付系統 -》做成一個鏡像 (操作系統+軟件運行環境+用戶程序)


7、高級篇幅之構建自己的鏡像倉庫
簡介:使用阿裏雲搭建自己的鏡像倉庫

1、阿裏雲鏡像倉庫:https://dev.aliyun.com/search.html

點擊管理控制臺-》初次使用會提示開通,然後設置密碼
xdclass.net123


2、使用阿裏雲私有鏡像倉庫
1)登錄: docker login [email protected] registry.cn-shenzhen.aliyuncs.com

2) 推送本地鏡像:
docker tag [ImageId] registry.cn-shenzhen.aliyuncs.com/xdclass/xdclass_images:[鏡像版本號]
例子:
docker tag 2f415b0e9a6e registry.cn-shenzhen.aliyuncs.com/xdclass/xdclass_images:xd_rabbitmq-v1.0.2

docker push registry.cn-shenzhen.aliyuncs.com/xdclass/xdclass_images:xd_rabbitmq-v1.0.2

3)拉取鏡像
線上服務器拉取鏡像:
docker login [email protected] registry.cn-shenzhen.aliyuncs.com

docker pull registry.cn-shenzhen.aliyuncs.com/xdclass/xdclass_images:xd_rabbitmq-v1.0.2

啟動容器:
docker run -d --name "xdclass_mq" -p 5672:5672 -p 15672:15672 2f415b0e9a6e


第十三章 微服務高級篇幅SpringCloud和Docker整合部署

第1課 高級篇幅之構建SpringBoot應用docker鏡像上集

簡介:使用Docker的maven插件,構建springboot應用

官方文檔:https://spring.io/guides/gs/spring-boot-docker/

1、步驟:maven裏面添加配置pom.xml

<properties>
<docker.image.prefix>xdclass</docker.image.prefix>
</properties>

<build>
<finalName>docker-demo</finalName>
<plugins>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.3.6</version>
<configuration>
<repository>${docker.image.prefix}/${project.artifactId}</repository>
<buildArgs>
<JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
</buildArgs>
</configuration>
</plugin>
</plugins>
</build>

配置講解
Spotify 的 docker-maven-plugin 插件是用maven插件方式構建docker鏡像的。
${project.build.finalName} 產出物名稱,缺省為${project.artifactId}-${project.version}

第2課 高級篇幅之構建SpringBoot應用docker鏡像下集

簡介:打包SpringCloud鏡像並上傳私有倉庫並部署

1、創建Dockerfile,默認是根目錄,(可以修改為src/main/docker/Dockerfile,如果修則需要制定路徑)
什麽是Dockerfile : 由一系列命令和參數構成的腳本,這些命令應用於基礎鏡像, 最終創建一個新的鏡像

FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]


參數講解:
FROM <image>:<tag> 需要一個基礎鏡像,可以是公共的或者是私有的, 後續構建會基於此鏡像,如果同一個Dockerfile中建立多個鏡像時,可以使用多個FROM指令

VOLUME 配置一個具有持久化功能的目錄,主機 /var/lib/docker 目錄下創建了一個臨時文件,並鏈接到容器的/tmp。改步驟是可選的,如果涉及到文件系統的應用就很有必要了。/tmp目錄用來持久化到 Docker 數據文件夾,因為 Spring Boot 使用的內嵌 Tomcat 容器默認使用/tmp作為工作目錄

ARG 設置編譯鏡像時加入的參數, ENV 是設置容器的環境變量
COPY : 只支持將本地文件復制到容器 ,還有個ADD更強大但復雜點
ENTRYPOINT 容器啟動時執行的命令
EXPOSE 8080 暴露鏡像端口
2、構建鏡像
mvn install dockerfile:build
打標簽
docker tag a1b9fc71720d registry.cn-shenzhen.aliyuncs.com/xdclass/xdclass_images:docker-demo-v201808
推送到鏡像倉庫
docker push registry.cn-shenzhen.aliyuncs.com/xdclass/xdclass_images:docker-demo-v201808

應用服務器拉取鏡像
docker pull registry.cn-shenzhen.aliyuncs.com/xdclass/xdclass_images:docker-demo-v201808


docker run -d --name xdclass_docker_demo1 -p 8099:8080 a1b9fc71720d

3、查看啟動日誌 docker logs -f containerid

文檔:https://yeasy.gitbooks.io/docker_practice/image/dockerfile/

第3課 實戰系列之註冊中心打包Docker鏡像
簡介:講解使用Docker打包註冊中心,上傳私有鏡像倉庫並部署

1、新增maven插件
<properties>
<docker.image.prefix>xdclass</docker.image.prefix>
</properties>

<build>
<finalName>docker-demo</finalName>
<plugins>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.3.6</version>
<configuration>
<repository>${docker.image.prefix}/${project.artifactId}</repository>
<buildArgs>
<JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
</buildArgs>
</configuration>
</plugin>
</plugins>
</build>

2、新建Dockerfile
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

3、打包:
mvn install dockerfile:build

4、推送阿裏雲鏡像倉庫

阿裏雲鏡像倉庫:https://dev.aliyun.com/search.html

docker tag 062d2ddf272a registry.cn-shenzhen.aliyuncs.com/xdclass/xdclass_images:eureka-v20180825
docker push registry.cn-shenzhen.aliyuncs.com/xdclass/xdclass_images:eureka-v20180825
docker pull registry.cn-shenzhen.aliyuncs.com/xdclass/xdclass_images:eureka-v20180825

5、查看日誌 docker logs -f containerid


第4課 實戰系列之部署RabbitMQ和配置中心打包Docker鏡像
簡介:講解使用Docker打包配置中心,和部署RabbitMQ

1、服務地址 ssh [email protected]

部署 rabbitmq: docker run -d -p 5672:5672 -p 15672:15672 rabbitmq:management

2、推送鏡像

docker tag 0f636543904e registry.cn-shenzhen.aliyuncs.com/xdclass/xdclass_images:config-server-v20180825

docker push registry.cn-shenzhen.aliyuncs.com/xdclass/xdclass_images:config-server-v20180825

docker pull registry.cn-shenzhen.aliyuncs.com/xdclass/xdclass_images:config-server-v20180825

5、常見問題處理之升級雲服務器
簡介:處理上節課出現的問題,升級服務器註意事項

1、升級雲服務器配置(購買配置後需要重啟機器才生效)

2、啟動完成後,需要開啟docker
指令: systemctl start docker

3、所有對外的都要經過網關才可以對外,應用間通信(除非跨機房)都用內網通信

6、實戰系列之Docker部署Redis
簡介:使用Docker安裝redis
1、搜索鏡像 docker search redis

2、拉取 docker pull docker.io/redis

3、啟動 docker run --name "xd_redis" -p 6379:6379 -d 4e8db158f18d
參考:
docker run --name "xd_redis" -p 6379:6379 -d 4e8db158f18d --requirepass "123456" -v $PWD/data:/data

4、訪問redis容器裏面,進行操作
docker exec -it 295058d2b92e redis-cli


7、生產環境常見問題之配置中心訪問
簡介:講解生產環境部署常見問題,配置中心訪問路徑變化

1、配置中心訪問出錯,路徑不對

解決:修改所有的註冊中心,增加下面配置
instance:
instance-id: ${spring.cloud.client.ip-address}:${server.port}
prefer-ip-address: true

docker tag 50a12cd66210 registry.cn-shenzhen.aliyuncs.com/xdclass/xdclass_images:config-server-v20180826


8、實戰系列之打包Docker鏡像打包商品服務和訂單服務、網關
簡介:打包Docker鏡像部署商品服務和訂單服務、網關

註意:
1、maven打包構建,會觸發單元測試,部分情況可以跳過,
mvn install -Dmaven.test.skip=true dockerfile:build

2、生產環境不能用localhost 或者 127.0.0.1, 一定要用內網通信ip (虛擬主機映射 hosts)


9、實戰系列雲服務器部署網關、訂單、商品服務
簡介:雲服務部署商品服務、訂單服務、網關服務

1、拉取鏡像、啟動

訪問路徑
http://47.106.120.173:8781/api/v1/order/save?product_id=5&user_id=5

http://47.106.120.173:9000/apigateway/order/api/v1/order/save?user_id=5&product_id=3&token=232serer

第十四章 課程總結和常見問題處理

1、SpringCloud微服務常見問題和解決思路
簡介:講解SpringCloud開發實戰常見問題,及解決思路

1、技術選擇:SpringCloud全家桶,每個組件又有多個替代,改怎麽選擇

1)選擇的時候根據公司裏面團隊人員熟悉程度,降低學習成本
2)選擇社區活躍的並且文檔相對較多的,怎麽判斷活躍,可以看github上代碼提交和start數

2、雲服務選擇: 騰訊雲,阿裏雲 ,遇到問題可以提交工單,有專人跟進


3、部署了應用,但是訪問不了
解決思路:
1)查看應用啟動是否正常,如果有錯誤日誌,復制錯誤日誌去百度搜索!!!!!!!特別重要

2)啟動正常,則先在本機使用 CURL "http://lcoalhost:8080/api/v1/user/find" 訪問對應的接口,看是否有響應

3)啟動正常,且curl有響應,則檢查是否有關閉防火墻,或者開放對應的訪問端口,開放端口才可以訪問

4)騰訊雲和阿裏雲都是有安全組,類似外層防火墻,一定要去web控制臺檢查是否有開啟端口

4、內網和外網訪問,鑒權問題安全問題

1)所有應用只能通過網關提供對外訪問的入口

2)應用程序之間通訊,采用內網


5、程序出錯或者異常: 復制錯誤日誌去百度搜索,網上有很多人會遇到類似的錯誤,多積累,特別強調

2、課程總結和後續技術規劃
簡介:總結SpringCloud課程和微服務後續課程規劃

1、springCloud全家桶,技術選擇和知識點特別多,一定要學會記筆記,微服務更多關註的是裏面架構和數據流轉,而不是具體的業務。

2、SpringCloud架構這些配置,一般使用一次後就不會多次修改了,進入公司主要還是開發業務,業務開發一般都用springboot,比較少讓新人搭建SpringCloud的架構


3、開發業務,無非就是CRUD,增刪改查,只不過是初級和高級的區別,封裝成通用和不通用的區別


4、微服務和容器盛行的情況下,容器編排和自動縮擴容越來越重要

可以關註:k8s / service mesh /server less 等技術


總結:
1)後續會推出對應的課程,還有項目實戰系列,大家記得關註 小D課堂,官網 :https://xdclass.net,

2)也可以加我微信交流: jack794666918

3)購買對應的課程後,記得進我們小D課堂官方的交流群,我會在裏面分享主流技術和答疑,面試經驗等等,還會同步更新資料和還超級幹貨分享

更多參考資料可參考

https://xdclass.net/html/course_catalogue.html?video_id=14
https://ke.qq.com/course/327760

微服務SpringCloud+Docker入門到高級實戰(教程詳情)