赞
踩
通篇总共涉及三个项目 , 其中第一个项目 , eureka-server这个项目相当于之前我们做dubbo+zookeeper的项目的dubbo-admin和zookeeper , 这个项目就是相当于我们之前下载zookeeper的那个服务在命令行中跑的 , 他就是提供注册中心的一个服务
第二个项目就是我们的提供者 , 提供者需要将项目注册到注册中心 , 我们这里的提供者就是springcloud-provider-dept-8001这个项目
首先我们先来配置一个Eureka的服务端
配置相对来说很简单 , 让我们看看是怎么简单的
首先我们需要导入一个叫eureka的相关依赖 , 这里我只导入,了一个包 , 大家还可以将热部署的包导入
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>springcloud</artifactId>
<groupId>com.starcpdk</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>springcloud-eureka-7001</artifactId>
<!--导包-->
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
<version>1.4.6.RELEASE</version>
</dependency>
</dependencies>
</project>
下面我们来写配置文件
server:
port: 7001
# Eureka 配置
eureka:
instance:
hostname: localhost # 服务端的实例名称
client:
register-with-eureka: false # 表示是否向eureka注册中心注册自己
fetch-registry: false # 表示如果为false 则表示自己为注册中心
service-url: # 监控页面~
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
最后我们只要在启动类上增加一个注解@EnableEurekaServer
就可以了
package com.starcpdk.springcloud;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
// 启动之后访问 http://localhost:7001/
@SpringBootApplication
@EnableEurekaServer // EnableEurekaServer表示是一个服务端的启动类 , 可以接受别人注册进来
public class EurekaServer_7001 {
public static void main(String[] args) {
SpringApplication.run(EurekaServer_7001.class , args);
}
}
接着我们来访问一下eureka的界面 , 在浏览器中访问项目就可以了, 我这个项目配置的端口是7001 , 因此我们只要访问http://localhost:7001/
就可以了
首先我们 需要现在项目中增加以下依赖
<!--Eureka-->
<!--导包-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
<version>1.4.6.RELEASE</version>
</dependency>
<!--actuator完善监控信息-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
然后我们需要在项目中的yaml配置文件中增加如下的配置
# Eureka 的配置 , 服务注册到哪里
eureka:
client:
service-url:
defaultZone: http://localhost:7001/eureka/
instance:
instance-id: springcloud-provider-dept8001 # 修改eureka上面的默认描述信息!
# info配置
info:
app.name: yyf-springcloud
company.name: blog.starcpdk.com
最后我们需要在启动类中增加如下注解@EnableEurekaClient
package com.starcpdk.springcloud;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
// 启动类
@SpringBootApplication
@EnableEurekaClient // 自动在服务启动后自动注册到Eureka中
public class DeptProvider_8001 {
public static void main(String[] args) {
SpringApplication.run(DeptProvider_8001.class , args);
}
}
然后我们需要先把提供注册中心的服务eureka-server的项目EurekaServer_7001
启动 , 用这个项目提供eureka的注册中心
接着我们启动提供者的这个项目DeptProvider_8001
这样我们访问注册中心也就是访问localhost:7001的话就会看到提供这注册到了注册中心
下面我们来在controller中增加一个方法 , 这个方法用来获取被注册的服务的信息
// 注册进来的微服务 , 获取一些消息
@GetMapping("/dept/discovery")
public Object discovery(){
// 获取为服务列表的清单
List<String> services = client.getServices();
System.out.println("discovery=>services:" + services);
// 得到一个具体的为服务信息
List<ServiceInstance> instances = client.getInstances("SPRINGCLOUD-PROVIDER-DEPT");
for (ServiceInstance instance : instances) {
System.out.println(instance.getHost());
}
return this.client;
}
光有上面的还不行 , 我们需要在启动类上增加一个注解@EnableDiscoveryClient // 服务发现
package com.starcpdk.springcloud;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
// 启动类
@SpringBootApplication
@EnableEurekaClient // 自动在服务启动后自动注册到Eureka中
@EnableDiscoveryClient // 服务发现
public class DeptProvider_8001 {
public static void main(String[] args) {
SpringApplication.run(DeptProvider_8001.class , args);
}
}
我们将提供Eureka注册的服务项目建三个 springcloud-eureka-7001
springcloud-eureka-7002
springcloud-eureka-7003
server:
port: 7002
# Eureka 配置
eureka:
instance:
hostname: eureka7002.com # 服务端的实例名称
client:
register-with-eureka: false # 表示是否向eureka注册中心注册自己
fetch-registry: false # 表示如果为false 则表示自己为注册中心
service-url: # 监控页面~
defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7003.com:7003/eureka/
在每个项目中 的yaml配置文件下面添加defaultZone属性的值
在7002中添加7001和7003 , 在7001中添加7002和7003 , 以此类推 , 添加另外两个项目
在服务提供者也就是需要注册到注册中心的那个项目的配置文件修改如下
server:
port: 8001
# mybatis配置
mybatis:
type-aliases-package: com.starcpdk.springcloud.pojo
config-location: classpath:mybatis/mybatis-config.xml
mapper-locations: classpath:mybatis/mapper/*.xml
# spring 的配置
spring:
application:
name: com.starcpdk.springcloud-provider-dept
datasource:
type: com.alibaba.druid.pool.DruidDataSource # 数据源
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/db01?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC
username: root
password: root
# Eureka 的配置 , 服务注册到哪里
eureka:
client:
service-url:
defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
instance:
instance-id: com.starcpdk.springcloud-provider-dept8001 # 修改eureka上面的默认描述信息!
# info配置
info:
app.name: yyf-com.starcpdk.springcloud
company.name: blog.starcpdk.com
我们需要将配置文件中的defaultZone这个属性 , 把提供注册者的三个项目的项目地址全部写到里面
C:强一致性
A:可用性
P:分区容错性
zookeeper 网络故障后会整个注册服务瘫痪 , Eureka可以很好的应对网络故障导致的部分节点失去联系的情况
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。