SpringCloud集成使用(Greenwich.RELEASE版本--生產可用)——第一篇Eureka註冊中心

一. 背景

最近基於SpringCloud+SpringSecurity+Auth2微服務改造項目終於上線,有心思和時間進行整理項目資料,廢話不多說,直接上圖

先來一張官方文檔說明,可以看出微服務架構適應於物聯網、移動端、瀏覽器,學習並使用微服務是很有必要的一件事。

 

下面這張圖是我所在項目所構建的項目架構圖

因爲項目緊急,並未使用SpringCloud的配置中心,僅僅使用了SpringCloud的以下組件:
1.Feign聲明式調用

2.Zuul路由轉發

3.Zipkin調用分析

4.Eureka註冊中心

5.Hystrix熔斷

二.架構思路

其實本人也是第一次進行項目架構,屬於趕鴨子上架那種,木辦法,Not me who,Not now when !

誰不想擁有一個高可用、低耦合、易擴展的coding體系,但真正實操起來,才發現有多欠,暫時不表。

1.爲了實現每個服務模塊的低耦合,每個服務模塊都有自己的依賴包xxx-share.jar

2.爲了實現高可用,使每個模塊都可獨立部署並隨時增加/刪除服務節點xxx-server

感覺還是在說廢話!!!

3.來點乾貨,項目中使用的技術棧由以下幾部分:

(1)基於SpringSecurity+Auth2做的授權認證

(2)RocketMq的消息隊列

(3)Redis集羣緩存服務

(4)自定義線程池

(5)mybatis

(6)hikari數據庫連接池

(7)lombok

據阿里P8大佬說,如果你能玩轉Spring和redis基本上就足以應付目前所有的業務開發,不要問我爲啥用上面的技術選型,大概也許這就是所謂的緣分吧。

三.實戰

不能說太多概念上的東西,先玩起來再說,說太多概念性的東西容易讓人厭煩。

1.eureka原理

eureka是爲CS架構的註冊中心,分爲服務端server和客戶端client.

(1). eureka-server的作用主要有以下幾點

   eureka-server主要集中在提供服務註冊和發現的功能,在服務治理方面不如dubbo做得好。它主要是通過維護兩層緩存機制來維護註冊表,通過註冊和心跳機制來維護更新同步各個客戶端的狀態。

(2).eureka-client的作用有以下幾點

    eureka-client通過和eureka-server進行註冊、心跳通訊來完成服務註冊和服務續約。默認30秒進行一次心跳來告知eureka-server哥們,我還活着。當90秒內eureka-server還沒收到來自eureka-client的心跳就會把eureka-client給剔除掉。

2.註冊中心-eureka-server

(1)eureka-server基礎配置

#基礎信息配置
server:
  port: 8080
spring:
  application:
    name: eureka-server
  security:
    user:
      name: admin
      password: admin123

#註冊中心
eureka:
  instance:
    hostname: eureka-server
    #server收到下次心跳的超時時間,如果30秒還收不到,那你這個instance就拜拜,不和你玩了
    leaseExpirationDurationInSeconds: 30
    #client發送給server心跳的時間間隔
    leaseRenewalIntervalInSeconds: 10
    preferIpAddress: true
    ipAddress: ${spring.cloud.client.ip-address}
    instanceId: ${spring.cloud.client.ip-address}:${server.port}
  server:
    # 自我保護模式關閉
    enableSelfPreservation: false
    # 掃描失效服務的間隔時間
    eviction-interval-timer-in-ms: 30000
  client:
    #防止向自己註冊
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://${spring.cloud.client.ip-address}:${server.port}/eureka/

logging:
  level:
    org.springframework.security: DEBUG
  config: classpath:logback.xml

(2)註冊中心訪問保護

   註冊中心服務訪問的頁面最好使用基礎的認證,儘量保證安全。

   同時可以保證每個註冊過來的服務都是我們自己想要註冊的。

(3)官方eureka閉源了,無需擔心,總會有解決方案

3.eureka-client註冊服務

  (1)eureka-client其實就是一個獨立的服務,配置如下:

#註冊中心
eureka:
  client:
    serviceUrl:
      defaultZone: http://admin:admin123@localhost:8080/eureka/
  instance:
    preferIpAddress: true
    ipAddress: ${spring.cloud.client.ip-address}
    instanceId: ${spring.cloud.client.ip-address}:${server.port}

    (2)eureka-client服務的啓動類上應加上@EnableEurekaClient

 

                                                實戰代碼,正在緊急從業務剝離中~~~~~~

 

 

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