1)原理說明**
- 服務啓動後向Eureka註冊,Eureka Server會將註冊信息向其他Eureka Server進行同步,當服務消費者要調用服務提供者,則向服務註冊中心獲取服務提供者地址,然後會將服務提供者地址緩存在本地,下次再調用時,則直接從本地緩存中取,完成一次調用。
- 當服務註冊中心Eureka Server檢測到服務提供者因爲宕機、網絡原因不可用時,則在服務註冊中心將服務置爲DOWN狀態,並把當前服務提供者狀態向訂閱者發佈,訂閱過的服務消費者更新本地緩存。
- 服務提供者在啓動後,週期性(默認30秒)向Eureka Server發送心跳,以證明當前服務是可用狀態。Eureka Server在一定的時間(默認90秒)未收到客戶端的心跳,則認爲服務宕機,註銷該實例。
- 處於不同節點的eureka通過Replicate進行數據同步
- Application Service爲服務提供者
- Application Client爲服務消費者
- Make Remote Call完成一次服務調用
2)新建其它Eureka註冊中心
新建microservicecloud-eureka-7002/microservicecloud-eureka-7003,步驟與之前一樣,將microservicecloud-eureka-7001Eureka註冊中心的內容複製到7002,7002,參考:上一篇博客
注意這裏:要修改主啓動類,
2)修改映射配置
修改C:\Windows\System32\drivers\etc路徑下的hosts文件
如果是單節點的註冊中心,是無法保證系統穩定性的,當然現在項目部署架構不可能是單節點的。集羣節點的部署思路:通過運行多個實例並請求他們相互註冊,來完成註冊中心的高可用性
3)3臺eureka服務器的yml配置
7001:
server:
port: 7001
eureka:
instance:
hostname: eureka7001.com #eureka服務端的實例名稱
client:
register-with-eureka: false #false表示不向註冊中心註冊自己。
fetch-registry: false #false表示自己端就是註冊中心,我的職責就是維護服務實例,並不需要去檢索服務
service-url:
#單機 defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #設置與Eureka Server交互的地址查詢服務和註冊服務都需要依賴這個地址(單機)。
defaultZone: http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
7002:
server:
port: 7002
eureka:
instance:
hostname: eureka7002.com #eureka服務端的實例名稱
client:
register-with-eureka: false #false表示不向註冊中心註冊自己。
fetch-registry: false #false表示自己端就是註冊中心,我的職責就是維護服務實例,並不需要去檢索服務
service-url:
#defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #設置與Eureka Server交互的地址查詢服務和註冊服務都需要依賴這個地址。
defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7003.com:7003/eureka/
7003:
server:
port: 7003
eureka:
instance:
hostname: eureka7003.com #eureka服務端的實例名稱
client:
register-with-eureka: false #false表示不向註冊中心註冊自己。
fetch-registry: false #false表示自己端就是註冊中心,我的職責就是維護服務實例,並不需要去檢索服務
service-url:
#defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #設置與Eureka Server交互的地址查詢服務和註冊服務都需要依賴這個地址。
defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/
4)microservicecloud-provider-dept-8001微服務provider發佈到上面3臺eureka集羣配置中
server:
port: 8001
mybatis:
config-location: classpath:mybatis/mybatis.cfg.xml # mybatis配置文件所在路徑
type-aliases-package: com.jiatp.springcloud.entity # 掃描此包下的entity ->所有entity別名類所在包
mapper-locations:
- classpath:mybatis/mapper/**/*.xml # mapper映射文件
spring:
application:
name: microservicecloud-dept # 很重要,對外暴露的微服務名字
datasource:
type: com.alibaba.druid.pool.DruidDataSource # 數據源類型
driver-class-name: org.gjt.mm.mysql.Driver # 數據庫驅動包
url: jdbc:mysql://localhost:3306/cloudDB01?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone = GMT
username: root
password: 123456
dbcp2:
min-idle: 5 # 數據庫連接池的最小維持連接數
initial-size: 5 # 初始化連接數
max-idle: 5 # 最大連接數
max-wait-millis: 200 # 等待連接獲取的最大超時時間
eureka:
client: # 客戶端註冊進eureka服務列表內
serviceUrl:
defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
instance:
instance-id: microservicecloud-dept8001 # 自定義服務名稱信息
prefer-ip-address: true # 訪問路徑可以顯示IP地址
info:
app.name: jiatp-microservicecloud
company.name: www.jiatp.club
build.artifactId: $project.artifactId$
build.version: $project.version$
測試: