一、序
关于微服务的话就不多说了,spring-cloud也已经接触多时,开个专栏做一下总结,具体思路差不多是这样。
按照微服务搭建框架顺序进行整理、总结。并会在文尾增量展示微服务高可用架构。
二、开篇
2.1、服务注册及发现-Eureka
eureka应该是最早的,应用更广泛的服务发现框架了;eureka是由Netflix开发的框架,主要用于服务的注册发现,本身是REST接口调用。
2.2、创建高可用注册中心
在这里show下父pom统一管理的配置
2.2.1、父pom
<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>Greenwich.SR3</spring-cloud.version>
</properties>
<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>
这里就展示父pom部分关键内容。spring-cloud用的是当前版本Greewich.SR3。
2.2.2、子pom
配置对于eureka服务端来说,来一个spring-cloud-starter-netflix-eureka-server的依赖即可。
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>
2.2.3、Eureka集群配置
application.yml
spring:
application:
name: eureka-server-cluster
profiles:
active: eureka-serve-01
application-eureka-server1.yml
server:
port: 8034
spring:
profiles: eureka-serve-01
eureka:
instance:
hostname: eureka-serve-01
instance-id: eureka-serve-01
prefer-ip-address: true
client:
service-url:
defaultZone: http://eureka-serve-02:8035/eureka/,http://eureka-serve-03:8036/eureka/
application-eureka-server2.yml
server:
port: 8035
spring:
profiles: eureka-serve-02
eureka:
instance:
hostname: eureka-serve-02
instance-id: eureka-serve-02
prefer-ip-address: true
client:
service-url:
defaultZone: http://eureka-serve-02:8034/eureka/,http://eureka-serve-03:8036/eureka/
application-eureka-server3.yml
server:
port: 8036
spring:
profiles: eureka-serve-03
eureka:
instance:
hostname: eureka-serve-03
instance-id: eureka-serve-03
prefer-ip-address: true
client:
service-url:
defaultZone: http://eureka-serve-02:8034/eureka/,http://eureka-serve-03:8035/eureka/
我是使用idea启动三个eureka进程从而构建一个虚拟集群。从而可以保证eureka的高可用。这里需要注意的点有如下几处:
- 集群各server.port、eureka.instance.hostname、eureka.instance.instance-id需要唯一
- eureka.client.service-url.defaultZone默认的注册域需要每个eureka服务端分别注册其他两服务,从而实现相互注册。以保证高可用
接下来,当然少不了spring-boot项目启动类starter
package com.king.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run( EurekaServerApplication.class, args);
}
}
# C:\Windows\System32\drivers\etc\host修改如下内容
127.0.0.1 eureka-serve-01 eureka-serve-02 eureka-serve-03
接下来,修改application.yml中spirng.profiles.active的值,分别启动eureka-serve-01、2、3即可。
在这之后,一但有某一个服务注册在其中一个例如eureka-server-01服务端上,那么该服务也会在其他两个服务02、03上进行注册。从而避免了注册中心的单点故障。