SpringCloud系列目录:
- 一、SpringCloud简介
- 二、Eureka服务注册与发现
- 三、Eureka注册与发现之Eureka Comsumer
- 四、Eureka、Server Provider集群配置
- 五、Ribbon和OpenFeign
续上片文章,在此之前我们已经将完成了单机版的Eureka Server、client的搭建。这种方式的确是可以使用,但是有风险。万一其中的一台服务gua掉,那我们的整个应用岂不是都会出现问题?所以一般的应用都会以集群的形式部署服务!,现在的服务部署方式基本上都是容器化,所以在这方面运维效率要高很多~
前面Eureka Server只有一个7001,那接下来要继续创建一个7002,这样即便其中的一台Server掉线,那也不会影响我Comsumer的访问
一、搭建Eureka server集群
这创建的方式和创建7001服务是相同的,只不过其中有些微小的差异需要注意,后面我会提到。下面是7001和7002的结构。
1、配置依赖
引入的依赖要注意7002还是使用的Erueka-sever的依赖
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<!-- 引入自定义的api通用包-->
<dependency>
<groupId>com.gaowz</groupId>
<artifactId>cloud-api-commons</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!-- boot web actuator -->
<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>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-devtools -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
</dependencies>
2、修改application.yml配置文件
server:
port: 7002
eureka:
instance:
hostname: eureka7002.com #eureka服务端的实例名字
client:
register-with-eureka: false #表识不向注册中心注册自己 物业公司不需要向自己交物业费
fetch-registry: false #表示自己就是注册中心,职责是维护服务实例,并不需要去检索服务
service-url:
defaultZone: http://eureka7001.com:7001/eureka/ #设置与eureka server交互的地址查询服务和注册服务都需要依赖这个地址
单机版的配置和集群版的配置就在于defaultZone这个标签,这里我们设置交互的查询地址为7001,这样两个Eureka-server就可以相互注册相互发现,从而起到集群的作用
3、测试
这里启动5个服务做测试
1)先看7001
这里可以看到,对应的服务都已经进来了。
2)7002服务
在7001和7002的DS Replicas中可以发现两个服务相互注册,相互守望,从而形成一个集群
二、搭建client集群
Client集群这里还是使用上述的案例,结构图如下所示:
8002的搭建与8001的搭建相同,业务代码可以直接拿过来用,这里就不在贴图(如果不是很明确的地方也可以直接把把代码拉下来),需要调整的地方只有application.yml配置文件,因为是集群版,所以要分别向7001和7002注册
#微服务建议一定要写服务端口号和微服务名称
server:
#端口号
port: 8002
spring:
application:
#微服务名称 此处的名称即为注册发现中心的名称
name: cloud-payment-service
#数据库配置
datasource:
type: com.alibaba.druid.pool.DruidDataSource
#mysql5.x的没有cj
driver-class-name: com.mysql.jdbc.Driver
#记得先创建数据库
url: jdbc:mysql://localhost:3306/springcloud_dev?useUnicode=true&characterEncoding=utf-8&useSSL=false
username: root
password: 123456
#与mybatis整合的配置信息
#mybatis配置
mybatis:
mapper-locations: classpath:mapper/*.xml
type-aliases-package: com.gao.domain #所有Entity别名类所在包
eureka:
client:
register-with-eureka: true
fetch-registry: true
service-url:
#单机版配置
#defaultZone: http://localhost:7001/eureka
#集群版
defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka
instance:
instance-id: payment8002
prefer-ip-address: true #访问路径可以显示IP地址
同样8001我们也需要做如下修改,启动之后我们通过80服务来访问8001和8002,如果配置没有问题的话,会发现8001和8002两个服务轮询访问,因为Eureka中默认的负载均衡方式就是轮询,这里Eureka中常用到的负载均衡暂时不需要关注,后面我们会提到。
到这里集群版的Eureka server以及client就已经搭建完成了,前面博文中提到过的OpenFein以及负载均衡常用的算法在后续的文中都会提到