搭建Eureka註冊中心

架構說明

在這裏插入圖片描述
存在的問題:

  • 代碼耦合,開發維護困難
  • 無法針對不同模塊進行針對性優化
  • 無法水平擴展
  • 單點容錯率低,併發能力差
  • 在這裏插入圖片描述

優點:

  • 系統拆分實現了流量分擔,解決了併發問題
  • 可以針對不同模塊進行優化
  • 方便水平擴展,負載均衡,容錯率提高

缺點:

  • 系統間相互獨立,會有很多重複開發工作,影響開發效率

在這裏插入圖片描述
優點:

  • 將基礎服務進行了抽取,系統間相互調用,提高了代碼複用和開發效率

缺點:

  • 系統間耦合度變高,調用關係錯綜複雜,難以維護

  • 在這裏插入圖片描述
    以前出現了什麼問題?

  • 服務越來越多,需要管理每個服務的地址

  • 調用關係錯綜複雜,難以理清依賴關係

  • 服務過多,服務狀態難以管理,無法根據服務情況動態管理

服務治理要做什麼?

  • 服務註冊中心,實現服務自動註冊和發現,無需人爲記錄服務地址
  • 服務自動訂閱,服務列表自動推送,服務調用透明化,無需關心依賴關係
  • 動態監控服務狀態監控報告,人爲控制服務狀態

缺點:

  • 服務間會有依賴關係,一旦某個環節出錯會影響較大
  • 服務關係複雜,運維、測試部署困難,不符合DevOps思想

微服務

前面說的SOA,英文翻譯過來是面向服務。微服務,似乎也是服務,都是對系統進行拆分。因此兩者非常容易混淆,但其實卻有一些差別:

微服務的特點:

  • 單一職責:微服務中每一個服務都對應唯一的業務能力,做到單一職責
  • 微:微服務的服務拆分粒度很小,例如一個用戶管理就可以作爲一個服務。每個服務雖小,但“五臟俱全”。
  • 面向服務:面向服務是說每個服務都要對外暴露Rest風格服務接口API。並不關心服務的技術實現,做到與平臺和語言無關,也不限定用什麼技術實現,只要提供Rest的接口即可。
  • 自治:自治是說服務間互相獨立,互不干擾
    • 團隊獨立:每個服務都是一個獨立的開發團隊,人數不能過多。
    • 技術獨立:因爲是面向服務,提供Rest接口,使用什麼技術沒有別人干涉
    • 前後端分離:採用前後端分離開發,提供統一Rest接口,後端不用再爲PC、移動段開發不同接口
    • 數據庫分離:每個服務都使用自己的數據源
    • 部署獨立,服務間雖然有調用,但要做到服務重啓不影響其它服務。有利於持續集成和持續交付。每個服務都是獨立的組件,可複用,可替換,降低耦合,易維護

架構的演變 傳統架構–>水平拆分–>垂直拆分(最早的分佈式)–>soa(dubbo)–>微服務(springCloud)
spring公司的核心產品,如圖
在這裏插入圖片描述
在這裏插入圖片描述
我們也可以到它的官網去看,百度我就不貼圖了,spring全家桶😀

spring官網
在這裏插入圖片描述

項目啓動 搭建 Eureka註冊中心

爲什麼要搭建Eureka註冊中心,Eureka是Netflix開發的服務發現框架,本身是一個基於REST的服務,主要用於定位運行在AWS域中的中間層服務,以達到負載均衡和中間層服務故障轉移的目的。

Eureka Server提供服務註冊服務,各個節點啓動後,會在Eureka Server中進行註冊,這樣Eureka Server中的服務註冊表中將會存儲所有可用服務節點的信息,服務節點的信息可以在界面中直觀的看到。Eureka Server本身也是一個服務,默認情況下會自動註冊到Eureka註冊中心。,去官方可以看下對應版本號

pringCloud將它集成在其子項目spring-cloud-netflix中,以實現SpringCloud的服務發現功能。

這裏可以使用IDEA的spring的 initalizr搭建
在這裏插入圖片描述
不過也可以使用官網的快速開始來,搭建,我這裏就用官網的開始搭建
在這裏插入圖片描述
進入到這裏,點擊start.spring.io
在這裏插入圖片描述
如圖所示,最右邊呢可以換背景

在這裏插入圖片描述
添加依賴這裏我稍微改了下,這裏搭建 註冊中心服務端,所以只需要一個 Eureka Server
在這裏插入圖片描述
選錯了,點這裏可以刪除掉
在這裏插入圖片描述

鍵盤輸入Ctrl + 回車,下載下來之後,解壓,導入進去
在這裏插入圖片描述
只需要找到剛剛解壓的項目的pom.xml,點擊ok
在這裏插入圖片描述
默認下一步,就好了,初始了一個springboot的項目,springboot的一個啓動依賴,就有一堆的jar包,springboot內置了tomcat,裏面有hikari連接池,Hikari是一款非常強大,高效,並且號稱“史上最快連接池”。並且在springboot2.0之後,採用的默認數據庫連接池就是Hikari。不需要引入依賴,已經在SpringBoot中包含了。
在這裏插入圖片描述
把src目錄刪掉,因爲這裏要用到maven的拆分聚合思想,每一個模塊就可以獨立啓動
在這裏插入圖片描述
然後用到Git ,沒集成的話,不過你要去下載Git,可以按照下圖就可以了
在這裏插入圖片描述
這裏說明下等下好打開控制檯用
在這裏插入圖片描述
初始化
在這裏插入圖片描述
Git init初始化
在這裏插入圖片描述
就可以看到這個項目交給Git來管理了
在這裏插入圖片描述
點擊Git commit
在這裏插入圖片描述
這兩項也是檢查各種問題的
在這裏插入圖片描述
如果沒有輸入用戶名的話就輸入用戶名,郵箱啥的
在這裏插入圖片描述
在這裏插入圖片描述
初始工作完成了就完成了

創建eureka子模塊

eureka是一個註冊中心,服務管理
Eure可以參考這裏
爲什麼需要Eureka參考

這裏是說,要不要交給Git來管理,點擊Yes是就完事了
在這裏插入圖片描述
在這裏插入圖片描述
創建了Eureka 因爲註冊中心,不知道 他自己是註冊中心
在這裏插入圖片描述
把父工程的中的註冊中心搬到子模塊中,父工程不需要那個依賴

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

在這裏插入圖片描述
然後在子模塊的src目錄下創建SpringBoot的啓動類
在這裏插入圖片描述
Springboot默認集成 tomcat<>/font
在這裏插入圖片描述
新建一個application.properties文件,解決註冊中心啓動失敗問題
在這裏插入圖片描述

spring.application.name=eureka
# eureka 官方的端口號
server.port=8761
############### 啓動報錯就是 因爲 下面那兩個 #########################
# 獲取註冊信息 因爲本身就是 註冊中心 所以本身就不需要獲取註冊信息 這裏默認爲 true
eureka.client.fetch-registry=false
# 註冊到 eureka註冊中心去,本身就是註冊中心 不需要去註冊
eureka.client.register-with-eureka=false

在這裏插入圖片描述
啓動類加上@EnableEurekaServer
在這裏插入圖片描述http://localhost:8761/地址欄輸入,啓動成功了
在這裏插入圖片描述
這裏可以改造下boot啓動類,這是一種固定的寫法

 private static final Logger LOG = LoggerFactory.getLogger(EurekaApplication.class);

  public static void main(String[] args) {
    SpringApplication app = new SpringApplication(EurekaApplication.class);
    Environment env = app.run(args).getEnvironment();
    LOG.info("啓動成功!!");
    LOG.info("Eureka地址: \thttp://127.0.0.1:{}", env.getProperty("server.port"));
  }

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
新建一個,logback.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!-- 修改一下路徑 value 是日誌輸出的路徑 不要使用絕對路徑,不是每個電腦又D盤F盤什麼的 日誌輸出根據你的項目路徑輸出的-->
    <property name="PATH" value="/log/adger/eureka"></property>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
<!--打印 年月日 時分秒%d{yyyy-MM-dd HH:mm:ss.SSS} 高亮顯示 %highlight(%-5level) 控制檯顏色 %blue(%-50logger{50}:%-4line) 日誌信息 %msg%n</Pattern>-->
       <Pattern>%d{ss.SSS} %highlight(%-5level) %blue(%-30logger{30}:%-4line) %msg%n</Pattern>
        </encoder>
    </appender>

    <!-- 輸出級別 TRACE_FILE 輸出到文件裏面去 -->
    <appender name="TRACE_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${PATH}/trace.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <FileNamePattern>${PATH}/trace.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>10MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <layout>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %-50logger{50}:%-4line %green(%-8X{UUID}) %msg%n</pattern>
        </layout>
    </appender>

    <!-- 錯誤級別 -->
    <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${PATH}/error.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <FileNamePattern>${PATH}/error.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>10MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <layout>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %-50logger{50}:%-4line %green(%-8X{UUID}) %msg%n</pattern>
        </layout>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <root level="ERROR">
        <appender-ref ref="ERROR_FILE" />
    </root>

    <root level="TRACE">
        <appender-ref ref="TRACE_FILE" />
    </root>

    <root level="INFO">
        <appender-ref ref="STDOUT" />
    </root>
</configuration>

啓動,就可以點擊地址了
在這裏插入圖片描述
日誌輸出
在這裏插入圖片描述
這篇文章也是,斷斷續續的寫的😂

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章