在阿里的這些天

第一天

  • 上午九點(diǎn)到下午三點(diǎn)左右驾霜,入職活動(dòng)結(jié)束灌闺,被帶到工位。

  • 安裝環(huán)境鸠匀,

    • jdk 1.8 64位
    • maven這邊工程通過maven構(gòu)建缀棍,推薦使用maven3以上版本
    • IDEA 下載爬范。idea自帶maven插件青瀑,但需要在默認(rèn)的settings.XML文件中添加內(nèi)部的maven遠(yuǎn)程倉庫地址
    • git下載安裝,代碼寄存在gitlab哑诊。
    • 所有安裝環(huán)境部署完畢之后镀裤,了解工具的使用
  • 熟悉團(tuán)隊(duì)的各位成員暑劝,相互認(rèn)識(shí)和學(xué)習(xí)

      • 注意事項(xiàng):
      • 每周三晚上八點(diǎn)之前提交周報(bào):寫這一周的學(xué)習(xí)內(nèi)容,遇到的問題毁习,解決的方法纺且,什么收獲
      • 每天的學(xué)習(xí)中遇到的問題記下來稍浆,晚上找時(shí)間向師傅請教。做到當(dāng)天的問題當(dāng)天解決朗伶。

第二天

  • 學(xué)習(xí)阿里的代碼編程規(guī)范
    • 根據(jù)規(guī)范中總結(jié)的經(jīng)驗(yàn)论皆,結(jié)合自己之前編碼中的個(gè)人習(xí)慣進(jìn)行反思点晴,發(fā)現(xiàn)自己存在之前存在很多編碼不規(guī)范的地方粒督,對這些地方進(jìn)行重點(diǎn)總結(jié)(規(guī)范內(nèi)容較多,后續(xù)還會(huì)繼續(xù)看)
  • 了解spring boot仇矾。由于內(nèi)網(wǎng)資料看不到贮匕,自己在外網(wǎng)搜一下相關(guān)教程刻盐,并使用spring boot搭建一個(gè)hello world程序敦锌。

第三天

  • 熟悉信用證基本概念乙墙,了解國內(nèi)跟單流程

  • java基礎(chǔ)復(fù)習(xí):

    • jvm類加載機(jī)制

      • 類加載器
      類加載器類型 名稱 負(fù)責(zé)加載 加載的類
      Bootstrap ClassLoader 引導(dǎo)類加載器 核心java class 所有java.開頭的類
      Extension ClassLoader 擴(kuò)展類加載器 擴(kuò)展的java class javax.開頭的、放在ext目錄下面的
      System ClassLoader 系統(tǒng)類加載器 用戶程序自身的class 系統(tǒng)中配置的環(huán)境變量classpath路徑下面的類
      • 類加載機(jī)制
        • 全盤負(fù)責(zé):當(dāng)一個(gè)classLoader加載一個(gè)類的時(shí)候汉买,該class所依賴的所有class 也由這個(gè)classloader負(fù)責(zé)載入蛙粘。除非是顯示的使用另一個(gè)classLoader載入出牧。
        • 雙親委托:先讓父類的加載器加載崔列,如果父類加載器無法加載的話赵讯,再該類的加載器進(jìn)行加載。
    • 垃圾回收

    • 內(nèi)存模型

    • 基礎(chǔ)集合類

    • jdk 8 新特性

    • servlet

      • 生命周期:
        • 初始化:servlet容器會(huì)在啟動(dòng)時(shí)初始化一些servlet组底,如果在web.xml中的servlet標(biāo)簽之間加入load-startup 1
  • maven工具學(xué)習(xí)债鸡,重點(diǎn)關(guān)注如下問題

    • 如何解決jar沖突

      • 在項(xiàng)目中的pom文件中將沖突依賴排除厌均,具體寫法:比如我們要講一個(gè)依賴中的相應(yīng)jar包排除

        <dependency>
           <groupId>com.xxx.xx</groupId>
           <artifactId>xxx</artifactId>
           <version>x</version>
           <exclusions>
               <exclusion>
                   <artifactId>com.springsource.slf4j.org.apache.commons.logging</artifactId>
                   <groupId>org.slf4j</groupId>
               </exclusion>
           </exclusions>
        </dependency>
        

        ?

      ?

第四天

  • START

    • 之前有過java web開發(fā)經(jīng)驗(yàn),對于servlet的生命周期以及基本開發(fā)過程有了解模她,但對于filter和listener了解不是很深侈净。對這些盲點(diǎn)進(jìn)行逐一攻破
    • 對web.xml的所有常用的配置深入掌握(規(guī)范畜侦、原理)夏伊,對不常用的標(biāo)簽要有所了解
    • 能夠準(zhǔn)確描述出servlet溺忧、filter鲁森、listener各自發(fā)揮的作用垄懂、生命周期草慧、加載順序等
    • 使用filter漫谷、servlet、listener編寫一個(gè)動(dòng)態(tài)網(wǎng)頁小demo
    • filter servlet listener:
    • 初始化順序:listener -》filter -》servlet
    • 銷毀順序:servlet- 》filter-》listener(和初始化順序相反)
  • web.xml

    ?

  • filter

    • 定義:過濾器惕稻,對web服務(wù)器所管理的web資源:例如jsp俺祠、servlet、靜態(tài)文件等進(jìn)行攔截宋梧。例如實(shí)現(xiàn)URL級(jí)別的權(quán)限訪問捂龄、過濾敏感詞匯
    • 主要用于對httpServletRequest進(jìn)行預(yù)處理倦沧,也可以對httpServletResponse進(jìn)行后處理。
    • 完整流程:FIlter對用戶請求預(yù)處理--》servlet對請求進(jìn)行做出相應(yīng)--》FIlter在對相應(yīng)進(jìn)行后處理

    filer和servlet請求響應(yīng)圖

    • filter鏈:在一個(gè)web應(yīng)用中告希,可能會(huì)有多個(gè)filter燕偶,這些filter 組合起來稱作filter鏈酝惧。filter的執(zhí)行順序根據(jù)filter在web.xml中定義的順序一致

    • filer 生命周期:和servlet一樣晚唇,filter的創(chuàng)建和銷毀由web容器負(fù)責(zé),當(dāng)web容器啟動(dòng)時(shí)葵礼,將創(chuàng)建filter實(shí)例對象鸳粉,調(diào)用init方法枯夜。filer對象只會(huì)創(chuàng)建一次,故filer是單例的摔吏。在多線程情況下會(huì)存在線程安全性問題,故不要在file類中定義屬性變量,最好是無狀態(tài)的诗箍,如果非要使用滤祖,一定要使用線程安全的類桑逝。比如并發(fā)包中的類。

    • filer的四種攔截方式:REQUEST 首昔、FORWORD寡喝、 INCLUDE、ERROE

    • REQUEST:直接訪問目標(biāo)資源

    • FORWORD:轉(zhuǎn)發(fā)

    • INCLUDE:例如:<jsp:include>

    • ERROR:web.xml中配置error-page時(shí)

      可以在filter-mapping中添加多個(gè)dispatch子元素

    • filer用在哪:權(quán)限檢查勒奇、編碼過濾

    • 如何使用filer:實(shí)現(xiàn)javax.servlet.Filer接口预鬓,并覆蓋doFilter方法

    public class MyFilfer implements Filer{
      @Override
      public void doFilter(ServletRequest srep, ServletResponse sresp, FilterChain fc) {
         //TODO   
      }
    }
    

    在web.xml中添加filter

    <filter>
      <filter-name>myFilter</filter-name>
      <filer-class>MyFilfer</filer-class>
    </filter>
    <filter-mapping>
       <filter-name>myFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    

    ?

  • servlet

    • 生命周期:servlet實(shí)例的創(chuàng)建有兩個(gè)時(shí)機(jī):
    • 客戶端第一次請求某個(gè)servlet時(shí),系統(tǒng)創(chuàng)建servlet的實(shí)例
    • web應(yīng)用啟動(dòng)時(shí)立刻創(chuàng)建servlet 實(shí)例赊颠,需要在web.xml中配置<load-on-startup>1(或大于1)</load-on-startup>
    • 容器中只存在一個(gè)servlet實(shí)例格二。單例多線程的。故也是線程不安全
  • Demo :使用servlet 和 filter 實(shí)現(xiàn)登錄小程序

    1. filter 對用戶請求進(jìn)行攔截顶猜,驗(yàn)證是否登錄挠日。如果session有用戶信息郑原,則放過酸役。否則redirect到登錄頁面
    2. servlet 對登錄請求進(jìn)行處理奄薇,將用戶信息保存到session中

    git分支地址:http://gitlab.alibaba-inc.com/shixu.sx/user_login/tree/master

  • 問題解決

    • JVM性能調(diào)優(yōu)監(jiān)控常用命令

    • jps :列出jvm中正在運(yùn)行的進(jìn)程信息

      -q 不輸出類名、Jar名和傳入main方法的參數(shù)
      -m 輸出傳入main方法的參數(shù)
      -l 輸出main類或Jar的全限名
      -v 輸出傳入JVM的參數(shù)
      
      shixu.sx@$ jps -l
      9520 sun.tools.jps.Jps
      17924 org.apache.catalina.startup.Bootstrap
      9812 org.jetbrains.jps.cmdline.Launcher
      14184
      14440 org.jetbrains.idea.maven.server.RemoteMavenServer
      
    • jstack: 主要用來查看某個(gè)java線程堆棧信息

      場景:找出某個(gè)java 進(jìn)程中最耗費(fèi)cpu的java線程勺届,并定位堆棧信息

      方案:

      1. 首先找出該java進(jìn)程的進(jìn)程id嗜湃,比如要找bootstrap進(jìn)程刚陡,

        1. 在windows環(huán)境下蝙云,命令行輸入:jps | findstr "bootstrap"
        2. linux環(huán)境下唯灵,輸入:jps | grep "bootstrap"
      2. 根據(jù)進(jìn)程id,找出該進(jìn)程內(nèi)最耗費(fèi)資源的線程信息

        命令行輸入:top -Hp 進(jìn)程id绝淡, 然后根據(jù)列出的線程信息找到time最長的線程id

        1. 將線程id轉(zhuǎn)化為十六進(jìn)制,然后在命令行輸入

          jstack 進(jìn)程id | grep 線程id對應(yīng)的十六進(jìn)制數(shù)棵譬,根據(jù)打印出來的堆棧信息可以知道是哪個(gè)線程的問題

    • jmap: 用來查看堆內(nèi)存使用情況

      使用jmap -heap pid查看進(jìn)程堆內(nèi)存使用情況。

    • jstat:jvm統(tǒng)計(jì)監(jiān)測工具

      圖片

      S0C、S1C阻肩、S0U、S1U:Survivor 0/1區(qū)容量(Capacity)和使用量(Used)
      EC擂仍、EU:Eden區(qū)容量和使用量
      OC亿昏、OU:年老代容量和使用量
      PC、PU:永久代容量和使用量
      YGC依疼、YGT:年輕代GC次數(shù)和GC耗時(shí)
      FGC秘案、FGCT:Full GC次數(shù)和Full GC耗時(shí)
      GCT:GC總耗時(shí)
      堆內(nèi)存 = 年輕代 + 年老代 + 永久代
      年輕代 = Eden區(qū) + 兩個(gè)Survivor區(qū)(From和To)
      

    • 查看網(wǎng)絡(luò)端口命令:

    • windows:

      • 查看所有端口占用:netstat -ano
      • 查看指定端口占用:netstat -ano | findstr "端口號(hào)"
    • linux:

      • 查看所有端口占用:netstat -anp
      • 查看指定端口占用:netstat -anp | grep "端口號(hào)"
    • ?

第五天

  • 9點(diǎn)半到10點(diǎn)半,學(xué)習(xí)代碼規(guī)約

    • 問題:

      1. 規(guī)約中一條:避免在有鎖的代碼塊中調(diào)用RPC方法,為什么挣惰?

        A:一般情況下珍语,鎖的粒度要越小越好凡辱,調(diào)用RPC本身就是一種粗粒度的處理,所以不建議放在同步代碼塊中再来。其次扳抽,RPC遠(yuǎn)程調(diào)用不確定性太多斜姥,比如運(yùn)行時(shí)間長、超時(shí)沧竟、事務(wù)回滾等铸敏,如果RPC方法需要運(yùn)行很長時(shí)間,那么該鎖會(huì)一直被占用悟泵,導(dǎo)致其他線程等待時(shí)間過長杈笔。

  • jvm

    • jvm內(nèi)存區(qū)域
    • pc寄存器:程序計(jì)數(shù)器,線程私有糕非,保存當(dāng)前線程執(zhí)行的字節(jié)碼地址蒙具,唯一一個(gè)沒有規(guī)定任何OOM的區(qū)域
    • 虛擬機(jī)棧:線程私有,每個(gè)線程被創(chuàng)建時(shí)都會(huì)同時(shí)創(chuàng)建一個(gè)對應(yīng)的虛擬機(jī)棧朽肥,棧中存放著棧幀禁筏,每一個(gè)棧幀對應(yīng)一個(gè)方法調(diào)用。棧幀中保存局部變量表衡招、操作數(shù)棧篱昔、動(dòng)態(tài)鏈接等
    • 方法區(qū):線程共享,大小可以動(dòng)態(tài)調(diào)整蚁吝,主要存放:類信息(名稱旱爆、方法、字段等元信息)窘茁、靜態(tài)變量怀伦。(注:jdk 8 之后方法區(qū)已經(jīng)不存在,取而代之的是metaspace山林,一塊本地內(nèi)存房待,由于類的元數(shù)據(jù)分配在本地內(nèi)存中,元空間的最大可分配空間就是系統(tǒng)可用內(nèi)存空間驼抹。)
    • java堆:對象和數(shù)組都在這里分配空間桑孩。線程共享。垃圾回收的主要區(qū)域
    • 垃圾回收算法回顧
    • 遇到的問題
    1. 在JVM規(guī)范中規(guī)定框冀,如果線程執(zhí)行的是非native方法流椒,則程序計(jì)數(shù)器中保存的是當(dāng)前需要執(zhí)行的指令的地址;如果線程執(zhí)行的是native方法明也,則程序計(jì)數(shù)器中的值是undefined宣虾。為什么是undefined惯裕?如果是undefined的話,那么當(dāng)cpu再次切換執(zhí)行到該本地方法是绣硝,怎么找到要代碼行的地址蜻势?
    2. ?
  • maven 定義和相關(guān)命令回顧

    • 項(xiàng)目管理和構(gòu)建自動(dòng)化工具

    • maven倉庫:

    • 本地倉庫:第一次運(yùn)行maven構(gòu)建,會(huì)自動(dòng)下載所有依賴的jar文件到本地倉庫中鹉胖。它避免了每次構(gòu)建都引用遠(yuǎn)程倉庫的依賴文件

    • 中央倉庫:maven社區(qū)提供握玛,不需要配置。

    • 遠(yuǎn)程倉庫:如果maven在中央倉庫也找不到依賴的文件甫菠,會(huì)從用戶提供的遠(yuǎn)成倉庫中查找

    • maven依賴搜索順序:1. 本地倉庫 2. 中央倉庫 3. 遠(yuǎn)程倉庫 4. 都找不到挠铲,報(bào)錯(cuò)編譯失敗

    • 創(chuàng)建工程:

    命令:mvn archetype:generate -DgroupId=com.companyname.helloworld -DartifactId=helloworld Dpackage=com.company.helloworld -Dversion=1.0-SNAPSHOT

    • 構(gòu)建程序:

    命令:mvn package

    • 安裝工程:

    命令:mvn install

    (安裝到本地后,在本地倉庫會(huì)有該工程淑蔚,其他的項(xiàng)目可以依賴該工程)

    • 生成文檔

    命令:mvn site

    • spring

      • 控制翻轉(zhuǎn)和依賴注入:

      • bean作用域

      • bean生命周期

      • 依賴注入方式

      • 基于set方法

      • 基于構(gòu)造方法

        (二者優(yōu)劣)

      • AOP原理市殷,代理模式(動(dòng)態(tài)代理cglib和jdk代理區(qū)別)

      • 事務(wù)管理(編程式事務(wù)和聲明式事務(wù))

      • demo小程序

  • 總結(jié):

    • 今天主要是對spring的基礎(chǔ)知識(shí)和核心概念,以及常用的配置等進(jìn)行了復(fù)習(xí)刹衫〈浊蓿回顧過程中發(fā)現(xiàn),很多知識(shí)點(diǎn)停留在會(huì)用的水平带迟,對底層實(shí)現(xiàn)不了解音羞。比如注解這一塊,jvm在加載類的時(shí)候遇到注解該怎么處理仓犬、注解是如何引入相應(yīng)的功能的嗅绰,對這些問題了解以后,還要思考如何自己定義一個(gè)注解搀继。周末要對這一點(diǎn)進(jìn)行深入剖析窘面。同時(shí)對于spring boot進(jìn)行系統(tǒng)學(xué)習(xí)。

第六天

  • 上午和師傅以及徐瀟師兄一起探討了在瀏覽器輸入www.alibaba.com叽躯,之后發(fā)生的一切财边,結(jié)合自己對這個(gè)問題的認(rèn)識(shí),發(fā)現(xiàn)自己對阿里整個(gè)網(wǎng)絡(luò)體系以及服務(wù)架構(gòu)了解很不夠点骑。

    • 域名解析:瀏覽器dns緩存酣难、本地dns緩存、本地host文件黑滴、請求根dns服務(wù)器解析(查詢dns根域憨募,自頂向下進(jìn)行查詢)
    • http連接:TCP三次握手,建立連接袁辈,客戶端與服務(wù)器
    • 到達(dá)阿里負(fù)載均衡層(F5或者LVS菜谣,F(xiàn)5是硬件實(shí)現(xiàn)負(fù)載均衡,LVS針對傳輸層TCP\IP)
    • VIPserver\vip
    • 統(tǒng)一接入(HTTPS解密成HTTP,這是一個(gè)CPU密集型任務(wù)葛菇,在這里進(jìn)行處理可以降低下游服務(wù)器壓力)
    • Tengin\apach\NGINX(負(fù)載均衡甘磨,應(yīng)用層負(fù)載均衡)
    • 感想:對阿里的整體網(wǎng)絡(luò)架構(gòu)了解還很不夠,比如VIP和VIPserver在其中的具體作用眯停,CDN等如何實(shí)現(xiàn)加速,怎么更快解析DNS卿泽,如果找到一條更短的路由莺债,等等,這些點(diǎn)以后要一一弄明白签夭。
  • spring boot start

    今天學(xué)習(xí)了spring boot齐邦,看了springboot的一些視頻,對spring boot有了一定的初步的認(rèn)識(shí)第租,初步了解了spring boot的一些基本理念措拇,如可以替換之前給予xml的配置,可以選用@configuration 和application.properties和application.yml來進(jìn)行配置spring bean慎宾。了解到了spring starters 丐吓,通過這個(gè)可以減少maven依賴中的版本不匹配問題。

    spring boot的學(xué)習(xí)中趟据,通過運(yùn)行demo券犁,加深了對spring boot的理解,demo中集成了JPA汹碱。接下來會(huì)將springboot中加入其它start比如:mybatis粘衬、tddl等,進(jìn)行學(xué)習(xí)咳促。

    感想:基于之前學(xué)習(xí)spring的基礎(chǔ)稚新,spring boot的學(xué)習(xí)整體順利。但目前對spring boot的理解更多的是在spring boot的使用上跪腹,并理解相關(guān)的看到的一些注解褂删,對spring boot的一些原理的還需要后面繼續(xù)深入。

    • 三種啟動(dòng)方式:
      • main方法中啟動(dòng)
      • mvn:spring-boot:run
      • mvn install 然后:java -jar 尺迂。笤妙。
    • controller的使用
      • @Controller:處理http請求
      • @RestController = @Controller + @ResponseBody:Spring4之后新加的注解,原來返回json需要@ResponseBody配合@Controller
      • @RequestMapping:配置url映射
    • 獲取參數(shù)
      • @PathVariable:獲取URL中的數(shù)據(jù)
      • @RequestParam:獲取請求參數(shù)中的值
      • @GetMapping@PostMapping:組合注解

第七天

  • 今天主要對HSF進(jìn)行了學(xué)習(xí)噪裕。

在系統(tǒng)越來越復(fù)雜的情況下蹲盘,傳統(tǒng)的架構(gòu)會(huì)存在如下的問題:

  • 各個(gè)模塊耦合度過高,導(dǎo)致升級(jí)更新困難膳音,一處變處處變
  • 擴(kuò)展性差
  • 團(tuán)隊(duì)開發(fā)困難
  • 分布式部署非常困難

而HSF是一個(gè)遠(yuǎn)程RPC調(diào)用框架召衔。面向服務(wù),降低耦合性

  • HSF:

通過配置provider和consumer的bean就ok祭陷。

provider暴露自己提供服務(wù)的接口苍凛,consumer根據(jù)接口進(jìn)行調(diào)用趣席。

返回的對象序列化后,通過網(wǎng)絡(luò)傳輸醇蝴。

感想:關(guān)于hsf宣肚,今天學(xué)習(xí)的內(nèi)容主要是對基本原理和基本概念進(jìn)行學(xué)習(xí),然后運(yùn)行了一個(gè)小demo悠栓,對服務(wù)的發(fā)布和服務(wù)的消費(fèi)進(jìn)行了簡單的實(shí)現(xiàn)霉涨。接下來還會(huì)更深入的學(xué)習(xí)。

  • OCR識(shí)別的結(jié)果亂碼問題:

針對ocr識(shí)別的結(jié)果中文亂碼的問題惭适,我進(jìn)行了單元測試笙瑟,最后通過將亂碼內(nèi)容用iso-8859-1編碼方式轉(zhuǎn)化為字節(jié),然后再用utf-8解碼癞志,解決了這個(gè)問題往枷。iso-8859-1編碼方式是不支持中文的,所以當(dāng)對含有中文的內(nèi)容使用這種編碼方式進(jìn)行編碼的時(shí)候凄杯,再次解碼肯定會(huì)出現(xiàn)亂碼错洁。

因?yàn)閖ava本身是跨平臺(tái)的語言, 亂碼問題在java開發(fā)中非常常見盾舌,比如java的IO操作墓臭、數(shù)據(jù)庫、內(nèi)存妖谴、jav web等多種場景窿锉,而最終的問題就是出現(xiàn)在字節(jié)和字符的轉(zhuǎn)換上面。

第八天

  • 繼續(xù)學(xué)習(xí)HSF框架

通過看文檔膝舅,理解關(guān)于服務(wù)提供和服務(wù)的消費(fèi)過程:

  • 服務(wù)提供者將提供的服務(wù)和自己的IP注冊至注冊中心ConfigServer
  • ConfigServer會(huì)將服務(wù)提供者的IP列表推送至服務(wù)消費(fèi)者
  • 服務(wù)消費(fèi)者發(fā)起調(diào)用時(shí)嗡载,直接從ConfigServer推送過來的服務(wù)提供者的IP列表中選擇一個(gè)IP發(fā)起遠(yuǎn)程調(diào)用

標(biāo)準(zhǔn)的service方式RPC:

  • service 定義:基于OSGI的service定義方式
  • 底層通信方式:萬變不離tcp\ip ,io方面使用異步NIO仍稀,并使用長連接

Provider和Consumer的啟動(dòng)和處理過程

  • 初識(shí)TDDL

問題:單一數(shù)據(jù)庫無法滿足性能要求

  • 數(shù)據(jù)切分
  • 讀寫分離
  • 系統(tǒng)容災(zāi)和主備切換以及運(yùn)維等問題

TDDL提供用戶訪問和數(shù)據(jù)庫之前的隔離洼滚,實(shí)現(xiàn)透明操作

1.直接提供分庫分表,讀寫分離技潘、主從備份等解決數(shù)據(jù)庫擴(kuò)展問題的功能.

2.基于配置模型構(gòu)建的包括數(shù)據(jù)庫在線擴(kuò)容遥巴、準(zhǔn)實(shí)時(shí)數(shù)據(jù)同步服務(wù)、運(yùn)維平臺(tái)等支撐系統(tǒng)享幽。

核心設(shè)計(jì):

  • SQL解釋器 :語法樹铲掐、查詢匹配規(guī)則、分庫分表
  • 查詢優(yōu)化器
  • 執(zhí)行器

HSF原理

HSF架構(gòu)

81c9daf90bf2cdaf81edd7575ed29850.png
81c9daf90bf2cdaf81edd7575ed29850.png

HSF服務(wù)架構(gòu)主要幾塊組成:

  • ConfigServer: 用于服務(wù)的注冊與發(fā)現(xiàn)值桩,server通過向ConfigServer注冊自己的服務(wù)摆霉,會(huì)在ConfigServer注冊自己的服務(wù)信息,如服務(wù)地址,發(fā)布的接口携栋,服務(wù)版本等內(nèi)容搭盾。client端可以從ConfigServer訂閱自己想要的服務(wù),之后ConfigServer就會(huì)把訂閱的服務(wù)的信息發(fā)送給client,之后client和server就可以建立連接婉支,進(jìn)行RPC調(diào)用了鸯隅。
  • Diamond: 主要用于一些動(dòng)態(tài)的配置內(nèi)容,例如ConfigServer的地址向挖,路由匹配滋迈,動(dòng)態(tài)負(fù)載等配置。這些配置內(nèi)容户誓,可以通過在HSF服務(wù)治理網(wǎng)站上進(jìn)行配置。
  • Redis:負(fù)責(zé)存儲(chǔ)HSF的元數(shù)據(jù)幕侠,consumer和provider隔一段時(shí)間會(huì)將調(diào)用信息進(jìn)行上報(bào)帝美,同時(shí)存儲(chǔ)了應(yīng)用名和服務(wù)映射等信息。

服務(wù)注冊發(fā)現(xiàn)流程

HSF的基本架構(gòu)和服務(wù)調(diào)用方調(diào)用服務(wù)所需要需要經(jīng)過的流程晤硕。
HSF的基本架構(gòu)和服務(wù)調(diào)用方調(diào)用服務(wù)所需要需要經(jīng)過的流程悼潭。
  1. Provider從Diamond中獲取Configserver的地址、類型等信息舞箍。
  2. Provider在Configserver上注冊自己的IP地址舰褪、端口號(hào)、服務(wù)名疏橄、版本號(hào)占拍、Group號(hào)信息。
  3. Provider定期將元數(shù)據(jù)(調(diào)用次數(shù)捎迫、服務(wù)狀態(tài)等等)上報(bào)給Redis晃酒,用于服務(wù)治理。
  4. Consumer從Diamond中獲取Configserver的地址窄绒、類型等信息贝次。
  5. Consumer根據(jù)服務(wù)名、版本號(hào)彰导、Group號(hào)信息向Configserver訂閱Provider服務(wù)蛔翅。
  6. Consumer定期將元數(shù)據(jù)(調(diào)用次數(shù)、服務(wù)狀態(tài)等等)上報(bào)給Redis位谋,用于服務(wù)治理山析。
  7. Configserver推送Provider的IP地址列表給Consumer。
  8. Consumer選擇一個(gè)IP地址倔幼,與該P(yáng)rovider建立長連接盖腿、通過RpcRequest和RpcResponse進(jìn)行調(diào)用。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市翩腐,隨后出現(xiàn)的幾起案子鸟款,更是在濱河造成了極大的恐慌,老刑警劉巖茂卦,帶你破解...
    沈念sama閱讀 206,013評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件何什,死亡現(xiàn)場離奇詭異,居然都是意外死亡等龙,警方通過查閱死者的電腦和手機(jī)处渣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,205評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蛛砰,“玉大人罐栈,你說我怎么就攤上這事∧喑” “怎么了荠诬?”我有些...
    開封第一講書人閱讀 152,370評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長位仁。 經(jīng)常有香客問我柑贞,道長,這世上最難降的妖魔是什么聂抢? 我笑而不...
    開封第一講書人閱讀 55,168評(píng)論 1 278
  • 正文 為了忘掉前任钧嘶,我火速辦了婚禮,結(jié)果婚禮上琳疏,老公的妹妹穿的比我還像新娘有决。我一直安慰自己,他們只是感情好轿亮,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,153評(píng)論 5 371
  • 文/花漫 我一把揭開白布疮薇。 她就那樣靜靜地躺著,像睡著了一般我注。 火紅的嫁衣襯著肌膚如雪按咒。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,954評(píng)論 1 283
  • 那天但骨,我揣著相機(jī)與錄音励七,去河邊找鬼。 笑死奔缠,一個(gè)胖子當(dāng)著我的面吹牛掠抬,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播校哎,決...
    沈念sama閱讀 38,271評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼两波,長吁一口氣:“原來是場噩夢啊……” “哼瞳步!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起腰奋,我...
    開封第一講書人閱讀 36,916評(píng)論 0 259
  • 序言:老撾萬榮一對情侶失蹤单起,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后劣坊,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嘀倒,經(jīng)...
    沈念sama閱讀 43,382評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,877評(píng)論 2 323
  • 正文 我和宋清朗相戀三年局冰,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了测蘑。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 37,989評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡康二,死狀恐怖碳胳,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情沫勿,我是刑警寧澤固逗,帶...
    沈念sama閱讀 33,624評(píng)論 4 322
  • 正文 年R本政府宣布,位于F島的核電站藕帜,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏惜傲。R本人自食惡果不足惜洽故,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,209評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望盗誊。 院中可真熱鬧时甚,春花似錦、人聲如沸哈踱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,199評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽开镣。三九已至刀诬,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間邪财,已是汗流浹背陕壹。 一陣腳步聲響...
    開封第一講書人閱讀 31,418評(píng)論 1 260
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留树埠,地道東北人糠馆。 一個(gè)月前我還...
    沈念sama閱讀 45,401評(píng)論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像怎憋,于是被迫代替她去往敵國和親又碌。 傳聞我的和親對象是個(gè)殘疾皇子九昧,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,700評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)毕匀,斷路器铸鹰,智...
    卡卡羅2017閱讀 134,599評(píng)論 18 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,748評(píng)論 6 342
  • 從三月份找實(shí)習(xí)到現(xiàn)在,面了一些公司期揪,掛了不少掉奄,但最終還是拿到小米、百度凤薛、阿里姓建、京東、新浪缤苫、CVTE速兔、樂視家的研發(fā)崗...
    時(shí)芥藍(lán)閱讀 42,184評(píng)論 11 349
  • 此篇翻譯的是Spring Boot官方指南 Part III. 使用 Spring Boot (Using Spr...
    K天道酬勤閱讀 6,706評(píng)論 0 21
  • 昨天下午兩點(diǎn)半到的巴黎戴高樂機(jī)場。坐了有史以來最熱的地鐵活玲,巴黎地鐵沒有空調(diào)涣狗,32℃的天曬著太陽坐輕軌,還經(jīng)歷了同伴...
    小easy閱讀 262評(píng)論 2 3