springcloud微服務
微服務:拆分、單一、獨立、組件化。將一個複雜的龐大的項目拆分成一個一個的小項目獨立的運行,通過接口的方式組裝成一個大項目。
springcloud是基於springboot的一套實現微服務的框架。
提供了微服務開發所需要的配置管理,服務管理,斷路器,智能路由,微代理,控制總線,全局鎖,策略競選,分佈式會話和集羣狀態管理等組件。
springcloud的五大組件:
服務的註冊發現 Netflix Eureka
配置中心 spring cloud config
負載均衡 Netflix Ribbon
斷路器 Netflix Hystrix
路由 (網關) Netflix Zuul
今日學習總結
springcloud的集羣搭建
三個註冊中心的搭建集羣:
搭建maven項目
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.7.RELEASE</version>
<relativePath />
</parent>
<properties>
<!--main方法類 -->
<start-class>com.cc.yonyou.ServicEureka1</start-class>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Dalston.SR4</spring-cloud.version>
<swagger.version>2.2.2</swagger.version>
</properties>
<dependencies>
<!--eureka server -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
<!--表示爲web工程 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--暴露各種指標 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-netflix</artifactId>
<version>1.4.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!--打包跳過測試插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
</project>
項目的啓動類:
@EnableEurekaServer
@SpringBootApplication
public class ServicEureka1
{
public static void main( String[] args )
{
SpringApplication.run(ServicEureka1.class, args);
}
}
注意: 在啓動類 @EnableEurekaServer 這個註解註冊中心服務
接下來還需要在全局配置中心配置(這是重點):
# 配置端口號
server.port=12001
# 是否向註冊中心註冊自己
eureka.client.register-with-eureka=false
# 是否需要檢索服務
eureka.client.fetch-registry=false
# 項目的名稱
spring.application.name=eureka-server
# 訪問的ip別名
eureka.instance.hostname=master
# 將自己註冊到backup、king這個Eureka上面去 同時這也是註冊中心的請求地址
eureka.client.serviceUrl.defaultZone=http://backup:12002/eureka/,http://king:12003/eureka/
# 顯示ip地址
eureka.instance.preferIpAddress=true
# eureka服務清理間隔(單位是毫秒)
eureka.server.eviction-interval-timer-in-ms=4000
# 關閉eureka自我保護
#eureka.server.enable.self.preservation=false
同理在創建兩個同樣的項目
只需要修改全局配置文件即可
這個時候重點來了: 如果這三個項目都是在windows系統下:則需要修改hosts文件:eureka.client.serviceUrl.defaultZone=http://backup:12002/eureka/,http://king:12003/eureka/
在hosts文件種添加:
127.0.0.1 backup
127.0.0.1 king
如果放在服務器上,同樣需要修改hosts文件
vi /etc/hosts
修改問對應的服務器的 ip號即可
此時:springcloud註冊中心的集羣纔算搭建完成:
接下來就是向註冊中心中 註冊服務: