martin fowler大神提出微服務的概念后,各種微服務的技術滿天飛,現在用的比較多的是spring cloud和阿里的dubbo,由於dubbo
在16年10月份就停止更新了,不過好像前些天又更新了下,這里我們講解spring cloud技術
dubbo源碼地址:https://github.com/alibaba/dubbo
spring cloud源碼地址:https://github.com/spring-cloud
組件有:注冊中心+普通服務+斷路器+服務網關+分布式追蹤+性能監控+消息總線+配置中心
運用的java框架:Intellij idea + spring boot + mybatis + mysql + maven
官網文檔:http://spring.io/docs/reference,主要用到了里面的spring boot,spring cloud netflix,spring cloud sleuth,spring cloud stream
spring cloud系列文章目標:記錄自己的技術方便自己和其它人學習,不過推薦入門后多去看官方文檔,技術最好也有淘汰的一天,鍛煉自己的學習能力才是最重要的
一、注冊中心
首先新建一個spring boot項目,訪問https://start.spring.io/,命名目錄名稱和項目名稱
點擊下載,解壓壓縮包,打開項目,將修改maven的本地倉庫地址,maven的遠程倉庫地址修改成阿里的maven地址,參考地址http://www.cnblogs.com/waterlufei/p/6498526.html
不改也可以主要是慢,有時候慢挺能鍛煉人的耐心的哈
訪問spring cloud的官網:http://projects.spring.io/spring-cloud/,將最新的版本控制copy下來
在項目的pom.xml中添加
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Dalston.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
然后在src/main/resources/application.properties中加入配置文件
spring.application.name=eureka-server
server.port=1111
#設置hostname
eureka.instance.hostname=localhost
#防止注冊中心自我注冊
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
#注冊地址
eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:1111/eureka/
然后在src/main/java/com/waterlufei/EurekaServerApplication中加入@EnableEurekaServer,作為注冊中心的服務端啟動
然后我們啟動項目,訪問localhost:1111
這樣我們的注冊中心就啟動起來了
二、服務的注冊與發現
跟剛剛一樣我們創建一個名叫Service-A的spring boot項目,在pom.xml加入:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Dalston.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
在配置文件src/main/resources/application.properties中加入
spring.application.name=service-A
server.port=2222
eureka.instance.hostname=localhost
eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:1111/eureka/
在主函數src/main/java/com/waterlufei/EurekaServerApplication
上面注解@EnableDiscoveryClient,作為注冊中心的客戶端啟動並能發現其它服務,自己也能被別的服務發現
tomcat已經集成到dependency中了,啟動項目,訪問localhost:1111,發現服務A已經注冊到注冊中心了
如果有紅色警告不用管它,這是提示eureka開啟了安全模式,保護注冊的實例,就是說如果服務A掛了,還是會在注冊中心顯示的
eureka默認開啟安全模式可以關閉,在注冊中心服務EurekaServer的配置文件中加入
eureka.server.enable-self-preservation=false關閉安全模式
現在我們訪問localhost:2222
發現沒有主頁面,我們在resources文件夾下新建public文件夾,然后在public下面新建index.html,寫入內容,重啟服務A
訪問localhost:2222
所以我們開發的時候,前端的頁面可以放在resources/public文件夾下面
開源中國源碼地址:https://git.oschina.net/wustxiabin/spring-cloud
github源碼地址: https://github.com/waterlufei/spring-cloud