1.初識springcloud
微服務是一種架構方式,最終肯定需要技術架構去實作。
微服務的實現方式很多,但是最火的莫過於Spring Cloud了
Spring最擅長的就是集成,把世界上最好的框架拿過來,集成到自己的項目中。
SpringCloud也是一樣,它將現在非常流行的一些技術整合到一起,實現了諸如:配置管理,服務發現,智能路由,負載平衡,熔斷器,控制總線,集群狀態等等功能。其主要涉及的元件包括:
Eureka:註冊中心
Ribbon:負載平衡
Feign:服務呼叫
Hystix:熔斷器
今天主要認識springcloud的註冊中心Eureka
這裡舉個生活中的實例:
在叫車出現以前,人們出門叫車只能叫計程車。有些私家車想做出租卻沒有資格,稱為黑車。而很多人想要約車,但是無奈計程車太少,不方便。私家車很多卻不敢攔,而且滿街的車,誰知道哪個才是願意載人的。一個想要,一個願意給,就是缺少引子,缺乏管理。
此時滴滴這樣的叫車平台出現了,所有想載客的私家車全部到滴滴註冊,記錄你的車型(服務類型),身份資訊(聯絡方式)。這樣提供服務的私家車,在滴滴那裡都能找到,一目了然。
此時要叫車的人,只需要打開APP,輸入你的目的地,選擇車型(服務類型),滴滴自動安排一個符合需求的車到你面前,為你服務.
回到springcloud的Eureka上來,Eureka就好比是滴滴,負責管理、記錄服務提供者的信息。服務呼叫者不需要自己找服務,而是把自己的需求告訴Eureka,然後Eureka會把符合你需求的服務告訴你。同時,服務提供者與Eureka之間透過「心跳」
機制進行監控,當某個服務提供者出現問題,Eureka自然會把它從服務清單中剔除。
這實現了服務的自動註冊、發現、狀態監控。
Eureka:就是服務註冊中心(可以是叢集),對外暴露自己的地址
提供者:啟動後向Eureka註冊自己資訊(地址,提供什麼服務)
消費者:向Eureka訂閱服務,Eureka會將對應服務的所有提供者地址清單發送給消費者,並且定期更新
心跳(續約) :提供者定期透過http方式向Eureka刷新自己的狀態
實務:
#Eureka註冊中心結構圖:
##完善pom.xml檔,新增依賴以下是pom檔主要部分<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.3.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <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>Finchley.RELEASE</spring-cloud.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</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> </plugins> </build>
@SpringBootApplication @EnableEurekaServer // 声明这个应用是一个EurekaServer public class SpringcloudEurekaServerApplication { public static void main(String[] args) { SpringApplication.run(SpringcloudEurekaServerApplication.class, args); } }
server: port: 8081 # 端口 spring: application: name: eureka-server # 应用名称,会在Eureka中显示 eureka: client: register-with-eureka: false # 是否注册自己的信息到EurekaServer,默认是true fetch-registry: false # 是否拉取其它服务的信息,默认是true service-url: # EurekaServer的地址,现在是自己的地址,如果是集群,需要加上其它Server的地址。 defaultZone: http://127.0.0.1:${server.port}/eureka
以上是深入解析springCloud的Eureka實踐的詳細內容。更多資訊請關注PHP中文網其他相關文章!