小D課堂 - 新版本微服務springcloud+Docker教程_1_01課程簡介

筆記

=============================================



SpringCloud課程筆記.txt

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

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




二、技術選型和學後水平
    簡介:課程所需基礎和技術選型講解,學完課程能夠到達怎樣的程度,
    
    一、IDEA JDK8 Maven SpringBoot基礎 Linux

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

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







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

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

        高可用 LVS+keepalive 


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


    二、微服務
        易開發、理解和維護
        獨立的部署和啓動
        等


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





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


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

        三、配置中心:管理配置,動態更新 application.properties
        
        四、鏈路追蹤:分析調用鏈路耗時
            例子:下單-》查詢商品服務獲取商品價格-》查詢用戶信息-》保存數據庫
        
        五、負載均衡器:分發負載
        
        六、熔斷:保護本身和被調用方








三、常見的微服務框架
    簡介:講解經常使用的微服務框架

        consumer: 調用方
        provider: 被調用方
        一個接口通常都會充當兩個角色(不是同時充當)
            
        一、dubbo: zookeeper + dubbo + springmvc/springboot
            官方地址:http://dubbo.apache.org/#!/?lang=zh-cn
            配套
                通訊方式:rpc
                註冊中心:zookeper/redis
                配置中心:diamond

        二、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








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

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

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

        三、訂單服務 
            1)個人訂單
            2)下單接口


第三章 SpringCloud核心組件註冊中心
一、什麼是微服務的註冊中心
    簡介:講解什麼是註冊中心,經常使用的註冊中心有哪些 (畫圖)
        
        理解註冊中心:服務管理,核心是有個服務註冊表,心跳機制動態維護

        服務提供者provider: 啓動的時候向註冊中心上報本身的網絡信息
            
        服務消費者consumer: 啓動的時候向註冊中心上報本身的網絡信息,拉取provider的相關網絡信息


        爲何要用:
            微服務應用和機器愈來愈多,調用方須要知道接口的網絡地址,若是靠配置文件的方式去控制網絡地址,對於動態新增機器,維護帶來很大問題

        主流的註冊中心:
            zookeeper、Eureka、consul、etcd 等
二、分佈式應用知識CAP理論知識
    簡介:講解分佈式核心知識CAP理論

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




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

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


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


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

三、分佈式系統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,如電商系統

四、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


五、服務註冊和發現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


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

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

    三、開發商品列表接口,商品詳情接口
    
    四、配置文件加入註冊中心地址
        使用eureka客戶端 官方文檔:http://cloud.spring.io/spring-cloud-netflix/single/spring-cloud-netflix.html#netflix-eureka-client-starter



七、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實戰和註冊中心高可用


一、經常使用的服務間調用方式講解
    簡介:講解經常使用的服務間的調用方式

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

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


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

            http數據包大

            java開發:HttpClient,URLConnection


二、微服務調用方式之ribbon實戰 訂單調用商品服務
    簡介:實戰電商項目 訂單服務 調用商品服務獲取商品信息
        一、建立order_service項目
        二、開發僞下單接口
        三、使用ribbon. (相似httpClient,URLConnection) 

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


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


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

    自定義負載均衡策略: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

    策略選擇:
        一、若是每一個機器配置同樣,則建議不修改策略 (推薦)
        二、若是部分機器配置強,則能夠改成 WeightedResponseTimeRule


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


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

        二、編碼實戰


        三、注意點:
            一、路徑
            二、Http方法必須對應
            三、使用requestBody,應該使用@PostMapping
            四、多個參數的時候,經過@RequestParam("id") int id)方式調用


六、Feign核心源碼解讀和服務調用方式ribbon和Feign選擇    
    簡介: 講解Feign核心源碼解讀和 服務間的調用方式ribbon、feign選擇
    
        一、ribbon和feign兩個的區別和選擇
            選擇feign
                默認集成了ribbon
                寫起來更加思路清晰和方便
                採用註解方式進行配置,配置熔斷等方式方便

        二、超時配置
            默認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)從可用性和可靠性觸發,爲了防止系統崩潰
            2)最終讓用戶體驗到的是某些功能暫時不能用

        不一樣點
            1)服務熔斷通常是下游服務故障致使的,而服務降級通常是從總體系統負荷考慮,由調用方控制
        


二、Netflix開源組件斷路器Hystrix介紹
    簡介:介紹Hystrix基礎知識和使用場景
    
    文檔地址:
        https://github.com/Netflix/Hystrix
        https://github.com/Netflix/Hystrix/wiki

    一、什麼是Hystrix?
        1)hystrix對應的中文名字是「豪豬」
        
        2)hystrix    英[hɪst'rɪks] 美[hɪst'rɪks]

    
    二、爲何要用?
        在一個分佈式系統裏,一個服務依賴多個服務,可能存在某個服務調用失敗,
        好比超時、異常等,如何可以保證在一個依賴出問題的狀況下,不會致使總體服務失敗,
        經過Hystrix就能夠解決

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

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


    四、熔斷後怎麼處理?
        出現錯誤以後能夠 fallback 錯誤的處理信息

        兜底數據








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

    一、加入依賴
    
    注意:網上新舊版本問題,因此要以官網爲主,否則部分註解會丟失
    最新版本 2.0

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


    二、增長註解
        啓動類裏面增長註解
        @EnableCircuitBreaker

        註解愈來愈多-》 SpringCloudApplication註解

    三、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>




四、Feign結合Hystrix斷路器開發實戰《下》
    簡介:講解SpringCloud整合斷路器的使用,用戶服務異常狀況
    一、feign結合Hystrix
        
        1)開啓feign支持hystrix  (注意,必定要開啓,舊版本默認支持,新版本默認關閉)
            feign:
              hystrix:
                enabled: true

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


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

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

    三、使用

        //監控報警
        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();
       


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

    一、查看默認講解策略 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

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

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


七、斷路器Dashboard監控儀表盤實戰
    簡介:講解斷路器Dashboard基礎使用和查看
    一、加入依賴
         <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>

    二、啓動類增長註解
        @EnableHystrixDashboard

        
    三、配置文件增長endpoint
management:
  endpoints:
    web:
      exposure:
        include: "*"


    四、訪問入口
        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


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

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

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


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

一、微服務網關介紹和使用場景
    簡介:講解網關的做用和使用場景 (畫圖)
    
    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腳本,而且高併發、非阻塞的處理各類請求







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

    一、加入依賴


    二、啓動類加入註解 @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

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

    簡介:講解Zuul網關原理和過濾器生命週期,
     
    一、路由名稱定義問題
        路由映射重複覆蓋問題
    
    二、Http請求頭過濾問題

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

    四、共享RequestContext,上下文對象


四、自定義Zuul過濾器實現登陸鑑權實戰
    簡介:自定義Zuul過濾器實現登陸鑑權實戰

    一、新建一個filter包

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

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


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

    一、nginx層限流

    二、網關層限流





六、Zuul微服務網關集羣搭建
    簡介:微服務網關Zull集羣搭建

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





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

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



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

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

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

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

            一、第一個值,spring.application.name的值
            
            二、第二個值,96f95a0dd81fe3ab ,sleuth生成的一個ID,叫Trace ID,用來標識一條請求鏈路,一條請求鏈路中包含一個Trace ID,多個Span ID
            
            三、第三個值,852ef4cfcdecabf三、spanid 基本的工做單元,獲取元數據,如發送一個http

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

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






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


      


    四、可視化鏈路追蹤系統Zipkin部署
        簡介:講解Zipkin的介紹和部署
        一、什麼是zipkin
            官網:https://zipkin.io/
            大規模分佈式系統的APM工具(Application Performance Management),基於Google Dapper的基礎實現,和sleuth結合能夠提供可視化web界面分析調用鏈路耗時狀況            
            
        二、同類產品
            鷹眼(EagleEye)
            CAT
            twitter開源zipkin,結合sleuth
            Pinpoint,運用JavaAgent字節碼加強技術
            StackDriver Trace (Google) 

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

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

        四、知識拓展: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


    五、高級篇幅之鏈路追蹤組件Zipkin+Sleuth實戰
        簡介:使用Zipkin+Sleuth業務分析調用鏈路分析實戰
        
        一、文檔
        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等存儲

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

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

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

        四、配置zipkin.base-url

        五、配置採樣百分閉spring.sleuth.sampler


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

    
第八章 微服務核心知識分佈式配置中心Config實戰
    
    一、微服務下的分佈式配置中心
        簡介:講解什麼是配置中心及使用先後的好處 (畫圖)
        什麼是配置中心:
            一句話:統一管理配置, 快速切換各個環境的配置
        
        相關產品:
            百度的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/


    二、SpringCloud的配置中心組件config-server實戰
        簡介:講解SpringCloud配置中心config-server實戰
        一、新建項目,建立config-server
        二、啓動類增長註解
            @EnableConfigServer



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

        一、默認使用git存儲配置中心
            使用git服務器,能夠本身搭建gitlab服務器
            或者使用github、開源中國git、阿里雲git

            794666918@qq.com
            xdclass.net123

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

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


        三、訪問方式(必定要注意語法,若是有問題,會出錯)
            多種訪問路徑,能夠經過啓動日誌去查看
            例子 http://localhost:9100/product-service.yml

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

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



四、分佈式配置中心客戶端使用實戰
    簡介:微服務裏面客戶端接入配置中心實戰
        官方文檔:http://cloud.spring.io/spring-cloud-config/single/spring-cloud-config.html#_spring_cloud_config_client
        
        一、加入依賴
             <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-config-client</artifactId>
            </dependency>

         二、修改對應服務的配置文件,把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實戰

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

        二、爲何使用這個
            配置更新了,可是其餘系統不知道是否更新









    二、消息隊列和RabbitMQ基礎介紹
        簡介:消息隊列和RabbitMQ基礎介紹
            
            一、消息隊列介紹
                參考:https://www.cnblogs.com/linjiqin/p/5720865.html

            二、同類產品
                ActiveMQ
                RocketMQ
                Kafka
                等

            三、SpringCloud默認推薦使用RabbitMQ


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





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

        一、若是對Docker沒基礎,課程後續有講解Docker,能夠先跳轉過去學習Docker
        二、安裝步驟
            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": 爲容器指定一個名稱


        三、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





    四、高級篇幅消息總線整合配置中心架構流程圖
        簡介:講解消息總線Bus結合config組件搭建配置中心項目架構圖和操做流程
            
            啓動
            rabbitmq: docker run -d -p 5672:5672 -p 15672:15672 rabbitmq:management
            rabbitmq默認是5672,因此改成5672端口
            
            一、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

            二、在配置文件中增長關於RabbitMQ的鏈接(若是是本機,則能夠直接啓動,採用默認鏈接配置)
                spring:
                  rabbitmq:
                    host: localhost
                    port: 5672
                    username: guest
                    password: guest
            
                #暴露所有的監控信息
                management:
                  endpoints:
                    web:
                      exposure:
                        include: "*"

            三、須要刷新配置的地方,增長註解 
                @RefreshScope

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

            五、動態刷新配置: 在開發和測試環境使用,儘可能少在生產環境使用


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

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

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


    
    二、項目裏面添加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>


    三、修改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

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




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

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

    簡介:回顧SpringCloud前面10章的基礎內容
        
        1)介紹微服務的基礎知識,核心組件,CAP原理

        2)SpringCloud註冊中心 Eureka

        3)product-service / order-service

        4) 僞RPC Ribbon / feign 

        5) hystrix熔斷

        6) 服務網關介紹,zuul

        7)配置中心config-server


    



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



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

    一、雲服務器介紹和阿里雲服務器ECS服務器選購
        簡介:什麼是雲服務器及目前主要的幾個廠商介紹
        一、阿里雲、騰訊雲、亞馬遜雲
        阿里雲:https://www.aliyun.com/
        騰訊雲:https://cloud.tencent.com/
        亞馬遜雲:https://aws.amazon.com/
        
        
    二、阿里雲服務器遠程登陸和經常使用工具
        簡介:講解阿里雲服務器登陸使用和常見終端工具
        一、windows工具   putty,xshell, security
            參考資料:
                https://jingyan.baidu.com/article/e75057f210c6dcebc91a89dd.html
                https://www.jb51.net/softjc/88235.html

        二、蘋果系統MAC: 經過終端登陸 
            ssh root@ip  回車後輸入密碼
            ssh root@120.25.1.38

        三、能夠嘗試本身經過百度進行找文檔, 安裝mysql jdk  nginx maven git redis elk 





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

         一、一個http請求的故事
         二、什麼是cname和a記錄
                 A記錄和CNAME只能夠同時生效一個,A記錄優先
         
         三、域名和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




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

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

        二、購買服務器,阿里雲,騰訊雲,亞馬遜雲aws

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

  
    
第十二章 微服務必備技能Docker容器基礎篇幅 
    
    一、微服務下的Docker介紹和使用場景
        簡介:Docker介紹和使用場景

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

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

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

        二、爲何要用
            一、提供一次性的環境,假如須要安裝Mysql,則須要安裝不少依賴庫、版本等,若是使用Docker則經過鏡像就能夠直接啓動運行   

            二、快速動態擴容,使用docker部署了一個應用,能夠製做成鏡像,而後經過Dokcer快速啓動

            三、組建微服務架構,能夠在一個機器上模擬出多個微服務,啓動多個應用

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

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







    二、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



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

        一、概念:
            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
            經過類建立對象,經過鏡像建立容器


    四、Docker容器常見命令實戰
        簡介:講解Docker在雲服務上的實際應用
        一、 經常使用命令(安裝部署好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



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

            docker search nignx
        二、列舉
            docker images
        三、拉取
            docker pull nignx
        三、啓動
            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
        四、訪問
            若是是阿里雲服務,記得配置安全組,騰訊雲也須要配置,這個就是一個防火牆




    六、公司中Docker鏡像倉庫使用講解
        簡介:講解通常公司中鏡像倉庫在的使用
        
        一、爲啥要用鏡像倉庫


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

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

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



    七、高級篇幅之構建本身的鏡像倉庫
        簡介:使用阿里雲搭建本身的鏡像倉庫
        
        一、阿里雲鏡像倉庫:https://dev.aliyun.com/search.html

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


        二、使用阿里雲私有鏡像倉庫
            1)登陸: docker login --username=794666918@qq.com 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 --username=794666918@qq.com 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/

    一、步驟: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鏡像並上傳私有倉庫並部署

            一、建立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 暴露鏡像端口
            二、構建鏡像
            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

            三、查看啓動日誌 docker logs -f  containerid
         
            文檔:https://yeasy.gitbooks.io/docker_practice/image/dockerfile/











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

        一、新增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>

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

        三、打包:
            mvn install dockerfile:build

        四、推送阿里雲鏡像倉庫

        阿里雲鏡像倉庫: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

        五、查看日誌 docker logs -f  containerid






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

        一、服務地址 ssh root@47.106.120.173

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

        二、推送鏡像

        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



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

        一、升級雲服務器配置(購買配置後須要重啓機器才生效)
        
        二、啓動完成後,須要開啓docker
            指令: systemctl  start docker

        三、全部對外的都要通過網關才能夠對外,應用間通訊(除非跨機房)都用內網通訊









    六、實戰系列之Docker部署Redis
        簡介:使用Docker安裝redis
        一、搜索鏡像 docker search redis
        
        二、拉取 docker pull docker.io/redis
        
        三、啓動 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
        
        四、訪問redis容器裏面,進行操做
        docker exec -it 295058d2b92e redis-cli










    七、生產環境常見問題之配置中心訪問
        簡介:講解生產環境部署常見問題,配置中心訪問路徑變化
        
        一、配置中心訪問出錯,路徑不對
           
           解決:修改全部的註冊中心,增長下面配置
        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








    八、實戰系列之打包Docker鏡像打包商品服務和訂單服務、網關 
       簡介:打包Docker鏡像部署商品服務和訂單服務、網關
       
       注意:
       一、maven打包構建,會觸發單元測試,部分狀況能夠跳過,
       mvn install -Dmaven.test.skip=true dockerfile:build

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










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

         一、拉取鏡像、啓動



         訪問路徑
         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


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

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

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

            1)選擇的時候根據公司裏面團隊人員熟悉程度,下降學習成本
            2)選擇社區活躍的而且文檔相對較多的,怎麼判斷活躍,能夠看github上代碼提交和start數
        
        二、雲服務選擇: 騰訊雲,阿里雲 ,遇到問題能夠提交工單,有專人跟進

        
        三、部署了應用,可是訪問不了
            解決思路:
                1)查看應用啓動是否正常,若是有錯誤日誌,複製錯誤日誌去百度搜索!!!!!!!特別重要
                    
                2)啓動正常,則先在本機使用 CURL "http://lcoalhost:8080/api/v1/user/find"  訪問對應的接口,看是否有響應

                3)啓動正常,且curl有響應,則檢查是否有關閉防火牆,或者開放對應的訪問端口,開放端口才能夠訪問

                4)騰訊雲和阿里雲都是有安全組,相似外層防火牆,必定要去web控制檯檢查是否有開啓端口



        四、內網和外網訪問,鑑權問題安全問題

                1)全部應用只能經過網關提供對外訪問的入口

                2)應用程序之間通信,採用內網


        五、程序出錯或者異常: 複製錯誤日誌去百度搜索,網上有不少人會遇到相似的錯誤,多積累,特別強調







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

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

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


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

        
        四、微服務和容器盛行的狀況下,容器編排和自動縮擴容愈來愈重要

            能夠關注:k8s / service mesh /server less 等技術

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

            2)也能夠加我微信交流: jack794666918

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


 html

相關文章
相關標籤/搜索