基於SpringBoot1.5.4與SpringCloud(Dalston.SR2)的SpringCloud學習博客,轉載請標明出處,O(∩_∩)O謝謝
- Spring Cloud簡介
SpringCloud為開發者提供了在分布式系統中的一些通用的組件(如管理配置、服務發現、斷路器、智能路由、微代理,控制總線,全局鎖,決策競選,分布式會話集群狀態),使用Spring Cloud開發人員可以快速地完成實現這些模式的服務和應用程序。它們在任何分布式環境中都能很好地工作
- Eureka
- 是純正的 servlet 應用,需構建成jar/war包部署
- 使用了 Jersey 框架實現自身的 RESTful HTTP接口
- peer之間的同步與服務的注冊全部通過 HTTP 協議實現
- 定時任務(發送心跳、定時清理過期服務、節點同步等)通過 JDK 自帶的 Timer 實現
- 內存緩存使用Google的guava包實現
- Eureka Server
該操作只適合IDEA(因為它牛逼)
1.創建項目,選擇Spring Initalizr -> Next
2.填寫項目基本信息 -> Next
3.Cloud Discovery 選擇當前最新版本(SpringBoot1.5.4),以及創建Eureka Server -> Next
Cloud Discovery 選擇當前最新版本(SpringBoot1.5.4),以及創建Eureka Server
4.Maven工程最后一步填寫的東西 -> Finish
至此項目創建完畢,從項目中可以看到IDEA為我們生成的pom.xml
- pom.xml
1 |
<dependencies> |
- BattcnCloudDiscoveryApplication.java
1 |
|
- bootstrap.yml
1 |
server: |
如果開啟Eureka健康檢查
1 |
eureka: |
官方:(WARNING)eureka.client.healthcheck.enabled=true應該只能設置application.yml。設置值bootstrap.yml將導致不期望的副作用,例如在具有UNKNOWN狀態的eureka中注冊。
官方鏈接:http://cloud.spring.io/spring-cloud-static/Dalston.SR1/#netflix-eureka-client-starter
- 測試
訪問:http://localhost:8761/,看到下圖表示Eureka Server已經運行成功
- Eureka Client
項目創建方式同上,只是選擇上從第二項的 Eureka Server
變成 Eureka Discovery
1.Eureka Client 可以看成是我們一個一個的服務,比如 battcn-cloud-hello
, battcn-cloud-order
它都是需要注冊到Eureka中去
- pom.xml
1 |
<dependencies> |
- BattcnCloudHelloApplication.java
1 |
|
- bootstrap.yml
1 |
server: |
- 測試
訪問:http://localhost:8762/,看到下圖表示注冊成功
訪問:http://localhost:8762/hello?email=1837307557@qq.com
可以看到:My Name's :battcn-cloud-hello Email:1837307557@qq.com
- Consul
consul是分布式的、高可用、橫向擴展的。consul提供的一些關鍵特性:
service discovery:consul通過DNS或者HTTP接口使服務注冊和服務發現變的很容易,一些外部服務,例如saas提供的也可以一樣注冊。
health checking:健康檢測使consul可以快速的告警在集群中的操作。和服務發現的集成,可以防止服務轉發到故障的服務上面。
key/value storage:一個用來存儲動態配置的系統。提供簡單的HTTP接口,可以在任何地方操作。
multi-datacenter:無需復雜的配置,即可支持任意數量的區域。
總結:只要知道它是解決我上一部分提出的問題就行,其它的東西慢慢理解
- 安裝方式
官網:https://www.consul.io/downloads.html
- Windows
解壓,在當前目錄進入到命令界面輸入 consul agent -dev
1.基於consul做注冊中心,服務注冊方式(還是用的battcn-cloud-hello) 只是做了改造
- pom.xml
1 |
<dependencies> |
- BattcnCloudHelloApplication.java
1 |
|
- bootstrap.yml
1 |
server: |
- 測試
訪問:http://localhost:8762/hello?email=1837307557@qq.com
可以看到:My Name's :battcn-cloud-hello Email:1837307557@qq.com