SpringCloud入门教学|第一篇:服务的注册和发现(Eureka)

  • 创建项目
  • 创建我们的服务注册中心
  • 创建一个服务提供者eureka client

spring cloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等等。它运行环境简单,可以在开发人员的电脑上跑。
SpringCloud中文教程文档

创建项目

  • 本项目采用Intellij进行创建,以一个maven主工程附带2个model 分别为 Eureka Server 和 Eureka client

  • 创建项目步骤
    创建我们需要的项目内容,创建了基本的maven的SpringBoot后,我们在主工程下创建2个model:右键工程->创建model->选择spring initialir如下所示
    SpringCloud入门教学|第一篇:服务的注册和发现(Eureka)_第1张图片

  • 这里我们使用的语言为Kotlin ,(这里我一个用了Kotlin另一个采用java)
    SpringCloud入门教学|第一篇:服务的注册和发现(Eureka)_第2张图片
  • 此处我们声明我们需要的Eureka的支持
    SpringCloud入门教学|第一篇:服务的注册和发现(Eureka)_第3张图片
  • 创建如下
    SpringCloud入门教学|第一篇:服务的注册和发现(Eureka)_第4张图片

  • 现在我们来进行设置我们的pom.xml 首先我们在我们的父pom中定义我们的子模块


    <modules>
        <module>eureka_clientmodule>
        <module>eureka_servermodule>
    modules>
  • 接下来我们在子模块中指定我们的父POM

    <parent>
        <groupId>com.examplegroupId>
        <artifactId>springcloudartifactId>
        <version>0.0.1-SNAPSHOTversion>
        <relativePath>../pom.xmlrelativePath>
    parent>

采用这种maven进行管理,公用的jar可以放在父pom中。

  • 注意:因为采用的java 9的版本因此需要增加如下的jar,避免出现未发现javabind的问题。
        <dependency>
            <groupId>javax.xml.bindgroupId>
            <artifactId>jaxb-apiartifactId>
            <version>2.3.0version>
        dependency>
        <dependency>
            <groupId>com.sun.xml.bindgroupId>
            <artifactId>jaxb-implartifactId>
            <version>2.3.0version>
        dependency>
        <dependency>
            <groupId>org.glassfish.jaxbgroupId>
            <artifactId>jaxb-runtimeartifactId>
            <version>2.3.0version>
        dependency>
        <dependency>
            <groupId>javax.activationgroupId>
            <artifactId>activationartifactId>
            <version>1.1.1version>
        dependency>

创建我们的服务注册中心

@SpringBootApplication
@EnableEurekaServer
class EurekaServerApplication

fun main(args: Array<String>) {
    SpringApplication.run(EurekaServerApplication::class.java, *args)
}

@EnableEurekaServer 这个注解表示 此项目作为服务的注册中心。 在默认情况下erureka server也是一个eureka client 。必须必指定一个server。 接下来我们看如何配置我们的application.properties

server.port=8761
# 通过eureka.client.registerWithEureka:false和fetchRegistry:false来表明自己是一个eureka server.
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
eureka.instance.hostname=localhost
eureka.client.service-url.defaultZone= http://${eureka.instance.hostname}:${server.port}/eureka/ 

当我们运行我们的server model后,我们可以通过浏览器访问:http://localhost:8761
SpringCloud入门教学|第一篇:服务的注册和发现(Eureka)_第5张图片

但是这里我已经注册了一个提供者

创建一个服务提供者(eureka client)

@RestController
@EnableEurekaClient
@SpringBootApplication
public class EurekaClientApplication {

    @Value("${server.port}")
    String port;
    @RequestMapping("/hello")
    public String home(@RequestParam String name) {
        return "hi "+name+",I am from port:" +port;
    }

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

@EnableEurekaClient表明自己是一个EurekaClient,同时我们需要在application.porperties进行配置

server.port=8762

eureka.client.service-url.defaultZone: http://localhost:8761/eureka/
# 重点需要注意spring.application.name,这个是在以后服务与服务之间相互调用是根据这个name
spring.application.name=service-hi 

注意: spring.application.name 上的注解很重要,这个名字是调用时候需要知道的。

接下来我们可以通过http://localhost:8762/hello?name=houshuai 进行访问。

源码下载:
https://github.com/houshuai0816/SpringCloudDemo

你可能感兴趣的:(后端--开发,SpringCloud入门教程)