SpringCloud实战2 - 将微服务注册到Eureka Server 上

 

   注册到单节点Eureka Server

   将编写如何将微服务注册到Eureka Server上
   先创建一个子模块项目,用来放api接口,然后再创建一个子模块,充当提供者。

   

   在提供者项目的pom文件中添加依赖
   

<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka-server</artifactId>
        </dependency>

  在提供者项目配置文件中添加以下配置

   

server:
  port: 8000
spring:
  application:
    name: provider
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/
  instance:
    prefer-ip-address: true

server.port 指定项目端口号

spring.application.name 用于指定注册到Eureka Server 上的应用名称。

eureka.client.service-url.defaultZone=http://localhost:8761/eureka/ ,表示Erueka Server 注册中心的地址。

euraka.instance.prefer-ip-address=true 表示将自己的ip注册到Eureka Server,若不配置或者配置false,则表示微服务所有操作系统的hostname到Eureka Server。

在启动类上添加注解 @EnableEurekaServer

@SpringBootApplication
@EnableEurekaServer
public class YmkProviderApplication {

    public static void main(String[] args) {
        SpringApplication.run(YmkProviderApplication.class, args);
    }
}

 在api子模块里添加一个接口

  

  

在提供者子模块里添加一个控制器,并实现api的接口。

@RestController
public class TestController implements TestService{

    @Autowired
    private TestService testService;
    @RequestMapping(value = "/hello", method = RequestMethod.GET)
    public String hello(String name) {
        return "Hello "+name;
    }
}

 现在启动注册中心项目跟提供者项目,再次访问: http://localhost:8761/

可以看到,我们提供者成功的注册到了Eureka Server中了。

高可用Eureka Server注册中心

   Eureka Server可以通过运行多个实例并相互注册的方式实现高可用部署,Eureka Server实例彼此同步信息,从而确保所有节点数据一致。节点之间互相注册是Eureka Server的默认行为。

   因为我们是在一台电脑上,所以先修改一下hosts文件,各个操作系统如何修改,还请自行百度。找到hosts后添加 127.0.0.1 peer1 peer2

   修改原先Eureka Server项目的 application.yml 文件修改如下

spring:
  application:
    name: eureka-server
---
spring:
  profiles: peer1                                 # 指定profile=peer1
server:
  port: 8761
eureka:
  instance:
    hostname: peer1                               # 指定当profile=peer1时,主机名是peer1
  client:
    serviceUrl:
      defaultZone: http://peer2:8762/eureka/      # 将自己注册到peer2这个Eureka上面去

---
spring:
  profiles: peer2                                 # 指定profile=peer2
server:
  port: 8762
eureka:
  instance:
    hostname: peer2                               # 指定当profile=peer2时,主机名是peer2
  client:
    serviceUrl:
      defaultZone: http://peer1:8761/eureka/      # 将自己注册到peer1这个Eureka上面去

   通过以上分析,不难理解,我们定义了peer1和peer2两个Profile,当应用以peer1这个Profile启动时,配置改Eureka Serber的主机名是peer1,并将其注册到 http://peer2:8762/eureka/ 上面,反之亦然。

  现在我们将项目打包成jar来运行,不再使用idea运行项目。

 再idea中直接点击package即可,即可打成jar包

现在通过命令启动

java -jar /xxx/xx/xxxxx.jar --spring.profiles.active=xxx

通过spring.profiles.active指定启动哪个profile

比我我的两个Eureka Server分别是

java -jar /Users/yangmingkai/IdeaProjects/ymk/yang-spring-boot-cloud-parent/ymk-eureka-server/target/ymk-eureka-server-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer1

java -jar /Users/yangmingkai/IdeaProjects/ymk/yang-spring-boot-cloud-parent/ymk-eureka-server/target/ymk-eureka-server-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer2

现在访问 http://localhost:8761/

现在访问 http://localhost:8762/

   我们发现两个已经互相注册了。

  上面application.yml配置可以简化一些如下:

   

spring:
  application:
    name: eureka-server
eureka:
  client:
    serviceUrl:
      defaultZone: http://peer2:8762/eureka/,http://peer1:8761/eureka/
---
spring:
  profiles: peer1
server:
  port: 8761
eureka:
  instance:
    hostname: peer1
---
spring:
  profiles: peer2
server:
  port: 8762
eureka:
  instance:
    hostname: peer2

  至此高可用Euraka Server 搭建完成!

  应用注册到Eureka Server集群上

   只需要在提供者application.yml配置中修改 eureka: client: serviceUrl: defaultZone 配置多个Eureka Server 地址即可,逗号分隔开来

server:
  port: 8000
spring:
  application:
    name: provider
eureka:
  client:
    serviceUrl:
      defaultZone: http://peer1:8761/eureka/,http://peer2:8761/eureka/
  instance:
    prefer-ip-address: true

  当然即使只配置某一个节点,也能正常注册到Eureka Server集群,因为前面说过Eureka Server之间会同步数据。

  现在启动提供者项目

  再去Eureka Server中看,就可以看到peer1跟peer2中都注册了这个服务。

  

 

 

源码地址 :  https://download.csdn.net/download/u013083284/10748089

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值