SpringCloud-eureka集群demo

eureka的工作方式、原理:

•会保存各个注册进来的微服务的基本信息:微服务名、ip、端口等
•eureka还会监控各个微服务的运行情况,做一个基本的监控,每隔30秒向已经注册的微服务发送一次心跳检测,微服务收到之后会给注册中心一个响应,如果注册中心连续三次(90秒)没有收到一个微服务的响应,会自动将微服务剔除(服务剔除),就是删除注册中心对应微服务的信息(微服务名、ip、端口等)。

如果是一台注册中心,万一注册中心挂了,整个微服务都会无法正常提供服务,怎么解决这个问题?

通过集群的方式解决
在这里插入图片描述

eureka集群创建步骤:

①先创建三台eureka,创建方式参照之前创建方式进行创建

在这里插入图片描述

分别添加依赖

<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
		</dependency>
		<!-- 引入eureka -->
		<dependency>
		    <groupId>org.springframework.cloud</groupId>
		    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
		    <version>2.1.0.RELEASE</version>
		</dependency>
		
	</dependencies>

分别添加配置文件

在这里插入图片描述
server:
port: 9001
eureka:
instance:
hostname: localhost
client:
register-with-eureka: false
fetch-registry: false
service-url:
defaultZone: http://localhost:9001/eureka/

⑤分别给三个创建启动类,要注意的是要添加eureka server开启的注解

在这里插入图片描述

package com.woniuxy.eureka;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@SpringBootApplication
@EnableEurekaServer			//开启注册中心的功能
public class EurekaApplication {
	public static void main(String[] args) {
		SpringApplication.run(EurekaApplication.class, args);
	}
}

但是做完以上步骤之后,三台eureka之间没有任何关系,并不会自动成为一个集群,需要分别在9001 9002 9003的配置文件中配置其他eureka的url,修改defaultZone 形成集群

例如9001:
在这里插入图片描述
9002和9003照9001改

⑥分别启动9001 9002 9003,然后在分别通过浏览访问他们的管理页面,查看情况,发现并没有集群上!!!

巨坑:如果所有的eureka需要在同一台服务器上运行,那么每个eureka的hostname不能一样

在这里插入图片描述

解决方案:打开系统hosts文件,配置以下信息

在这里插入图片描述
在这里插入图片描述

再次启动测试:

在这里插入图片描述

业务微服务应该怎么注册进三个eureka?

修改业务微服务的application.yml,指定注册到三个eureka中,以product模块为例:
在这里插入图片描述

server:
  port: 8002
spring:
  application:
    name: springcloud63-product
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/car
    username: root
    password: 123456
mybatis:
  config-location: classpath:mybatis-config.xml
  
eureka:
  client:
    service-url:
      defaultZone: http://eurekaserver9001.com:9001/eureka/,http://eurekaserver9002.com:9002/eureka/,http://eurekaserver9003.com:9003/eureka/
  instance:
    instance-id: springcloud63-product-8002
    prefer-ip-address: true
info: 
  app.name: this is my product module
  developer.name: zr
  date: 2020.3.25
  language: Java
  ip: 192.168.154.130
  port: 8002 

启动product模块测试,看他是否注册到三个eureka中,出现以下情况,表示注册成功!

在这里插入图片描述

再将user模块的配置文件也做一样的修改

在这里插入图片描述

在以上的基础上(一台eureka也可以,不是非得要集群的方式)通过微服务名进行模块间的通讯步骤:

①修改userhandler的源代码,将之前ip:port方式改为微服务名
在这里插入图片描述

②修改restTemplate的配置文件,添加以下注解

在这里插入图片描述

③启动user模块,请求user的url看能否获取到商品数据

在这里插入图片描述

业务模块通过集群方式解决高可用问题

集群开发步骤,以product模块为例
①创建两个商品模块,端口要不一样

②将之前product的所有类、配置、pom依赖都拷贝一份到新的product模块中

③修改新product模块的application.yml文件
在这里插入图片描述

④启动新的product模块,然后访问任意一个注册中心的管理页面查看情况,如果出现以下情况表示集群搭建成功

在这里插入图片描述

OVER!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值