寫在前面
我在軟件行業浸泡了近十年時間,一直在做OA以及平臺方面研發,帶了幾年團隊,近兩年玩過貿易、金融,現在是一名自由職業者。
近年來互聯網創業浪潮一波趕過一波,技術也隨着業務的提升一步步向前進,從單機模式到多機部署再到soa服務化,再到近兩年微服務炙手可熱;憑心而論,這些軟件架構有優劣之分嗎?我個人認爲是沒有的,之所以會有這些的架構演變,完全是因爲通過互聯網,大家的業務越做越大,越做越複雜,用戶量也越來越多,準確的說之所以有這麼多高級的軟件架構,完全是因爲被業務量、用戶量所倒逼出來的。
如今還有單機模式的互聯網應用嗎?我想也應該是有的,比如廣大的個人站長們,難道他們的模式就不代表先進的生產力嗎?我不覺得,反而我覺得他們是互聯網中最有活力的存在,軟件只是工具,業務纔是核心,只有越來越大的業務纔有更先進的工具,你讓站長們剛剛開始就上微服務,豈不是本末道置,總之一句話,請遵循業務規則,並重視業務,節約成本,要知道適合自己的纔是最好的。
BB了這麼多,最後分享一個問題,我們學微服務框架有用嗎?當然有用,雷軍說:“站在風口上,豬也會飛”,想想以前互聯網中小企業因爲技術而限制業務發展也是頭疼,現在好了,spring全家桶幫我們解決了中小企業一直來的技術問題,現在有很多中小企業,甚至包括一線大廠也開始對其使用,爲了老婆的迪奧,孩子的奧利奧,加油,學吧!
對於我自己來說,身處互聯網時代卻沒有積極擁抱互聯網,不失爲遺憾。抱着學習的態度做了這個實戰教程,希望自己能重拾初心,也希望能與廣大網友共勉,共進步。
1.資料目錄
Spring Cloud中文學習網:https://springcloud.cc/
Spring Cloud英文學習網:http://cloud.spring.io/spring-cloud-static/spring-cloud.html
2.環境介紹
工程環境:mac os + jdk 1.8.0_x + maven2 + sts 3.9.x + git
工程依賴:springboot 2.1.1 + springCloud Greenwich.RC2
3.eureka註冊中心
3.1 創建工程
第一步:通過sts創建一個spring starter project
第二步:點擊“next”,出現如下界面,選擇Cloud Discovery下的Eureka Server:
第三步:點擊“finish”,等待sts下載各個相關的jar包即可,最終形成效果如下圖:
3.2 啓動工程
簡單的幾個步驟,來啓動eureka註冊中心
- 我們改變一下server port,改一下application.properties後綴,爲applicaiton.yml,加入server:port: 9000,改這個是一個習慣問題,不改也可以用。
- MircoServiceEurekaApplication加入“@EnableEurekaServer”,這個得解釋一下,後面的教程中不再解釋這些,這個註解從字面上理解是開啓eureka server,實際上就是通過這個註解告訴我們要啓動的應用,而Spring Cloud已經幫我們把這個eureka集成好了,我們配置配置就可以使用了,這也是爲什麼Spring Cloud能成爲業界主流的原因。
- 正常啓動就行了,看一下啓動後的界面。
4.親測的注意事項
- eureka是需要依賴springboot的父工程,在微服務中一般是單獨做爲工程啓動的,注意不要與業務工程產生混淆,如果需要公司級的依賴關係,可以在“<dependencyManagement>”加入如下代碼:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>${springboot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
- springboot的版本與springCloud的版本是配套的且一一對應的,兩者的版本要兼容。
- eureka在spring建工程時規定的jdk版本是1.8.0或者11,如果出現tomcat無法啓動,一定要檢查一下jdk版本。
- @EnableEurekaServer配置後無法啓動的情況也是jdk版本問題,總之使用jdk1.8.0就對了,不要使用過高的版本,我就用過jdk10啓動過,傻呼呼的啓了幾個小時。
- 啓動後發現eureka界面無法訪問,一般是springboot與springCloud的版本不兼容,當然如果不加@EnableEurekaServer的話界面也是無法訪問的。
5.eureka註冊中心集羣高可用
註冊中心的重要性,不言而喻,既然是中心,那麼說明要負擔很多任務,如何把註冊中心配置成高可用的呢?現在我們就來學習一下,一個工程啓動多個eureka註冊中心。
springboot在啓動可以指定參數,指定你要使用的配置文件類型,一般來說我們分爲開發、測試、生產三個環境,但是如果我們要在一個工程裏面啓動三個一樣類型的環境怎麼做呢?
首先我不建議在微服務項目中大家繼續使用如下規則:
application.yml
application-test.yml
application-dev.yml
application-pro.yml
最後在在application.yml中指定你要使用的環境。
我們先看一下我一般定義的命名規則:
{app-name}-{node-x}-dev.yml
{app-name}-{node-x}-test.yml
{app-name}-{node-x}-pro.yml
其中app-name代表你的應用名稱,一般建議與spring.application.name一致。
node代表是否集羣服務。
x可以自己定義,可以是數字,也可以是ip。
最後是開發、測試、生產環境的區分。
接着上面的例子,我們把例子中的application.yml名稱改爲eureka-node-1-test.yml,然後複製兩個分別命名爲eureka-node-2-test.yml,最後是eureka-node-3-test.yml。如圖示:
然後我們修改eureka-server-node-1-test.yml的內容如下:
server:
port: 9001
spring:
application:
name: eureka-server #給你的微服務應用起一名字
eureka:
client:
serviceUrl:
defaultZone: http://localhost:9002/eureka/,http://localhost:9003/eureka/
接着按同樣的方式依次將node-2和node-3中的port修改爲9002,9003,將defaultZone的把除自己之外的兩個地址修改。然後打開debug config,在Arguments裏面加入如下參數:
最後我們複製兩個,然後依次啓動這三個服務,這樣我們的eureka server的集羣部署就完成了。最終效果如圖所示:
至此我們的eureka集羣就完成了。
6.結語
首先,這是我第一次寫教程類文章,爲了區別與其他教程,我準備不講任何概念,我覺得能玩到spring cloud這步的“猿類”們,基本上對軟件架構、各種理念都有了解,而且基本上都有自己的理解。對此不理解的朋友們,請自行百度一下相關的概念。
我更希望更多剛接觸spring cloud的朋友們,能通過你的手指去感知它,而不是僅僅存在聽別人說,聽別人講,或者自己臆想的東西。在編程領域能動手的絕不動口,我以前的一個導師就說過,同樣的程序寫二十遍,基本上能學的東西都融會貫通了。
好了,第一篇文章廢話有點多,後面不會有了。?
7.一點點重要的事情
- 教程中所有的步驟都由我自己從零搭建測試。
- 教程中源代碼地址github-SpringCloud實戰之初級入門(一)— eureka註冊中心
- 教程對應的視頻地址愛奇藝-SpringCloud實戰之初級入門(一)— eureka註冊中心