小白也会搭建SpringCloud+Eureka为注册中心的微服务项目

  今天就亲手搭建一个项目,使用Eureka为注册中心,因为是微服务项目,所以必须要有一个注册中心,实现服务治理功能,后续就使用nacos为配置中心对服务进行管理了,这里使用idea未开发工具,maven3.6.2,数据库MySQL。

一、新建一个父项目,便于管理

 1. 搭建步骤如下图所示:

idea新建项目1
在这里插入图片描述
在这里插入图片描述
2. 快捷键:CTRL+ALT+S,选择自己安装的maven版本及自己配置的仓库地址
在这里插入图片描述
3. 选择自己安装的jdk1.8版本
在这里插入图片描述
4. 将src目录删除,留下pom.xml文件
在这里插入图片描述
5. 父项目的pom文件,一般放子目录共同使用的maven依赖

<?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">
    <modelVersion>4.0.0</modelVersion>

    <groupId>yooo.yun.com</groupId>
    <artifactId>cloud-demo</artifactId>
    <version>1.0-SNAPSHOT</version>
    <name>cloud-demo</name>
    <packaging>pom</packaging>

    <!--Spring Boot配置 -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.8.RELEASE</version>
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <!--web支持 依赖 -->
        <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>

        <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.10</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>

    <!--    Spring Boot-->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Finchley.SR2</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <resources>
            <!-- 先指定 src/main/resources下所有文件及文件夹为资源文件 -->
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*</include>
                </includes>
                <filtering>true</filtering>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>0.4.14</version>
                <configuration>
                    <imageName>${project.name}</imageName>
                    <dockerDirectory>${project.name}/src/main/docker</dockerDirectory>
                    <dockerHost>${docker.host}</dockerHost>
                    <skipDockerBuild>true</skipDockerBuild>
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

二、新建一个用户User模块

  1. 步骤与创建父项目相同。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  2. 创建一个UserController控制类和UserApplication启动类。
    在这里插入图片描述
    UserController控制类 :
package yooo.yun.com.user;

import org.json.JSONException;
import org.json.JSONObject;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author WangJiao
 * @since 2020/10/14
 */
@RequestMapping(value = "/saas/user")
@RestController("userC")
public class UserController {
  @GetMapping("/{id}")
  public String detail(@PathVariable("id") long id) throws JSONException {
    JSONObject jsonObject = new JSONObject();
    jsonObject.put("id", id);
    jsonObject.put("msg", "user 模块");
    return jsonObject.toString();
  }
}

UserApplication 启动类。

package yooo.yun.com;

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

/**
 * @author WangJiao
 * @since 2020/10/14
 */
@EnableEurekaClient
@SpringBootApplication
public class UserApplication {
  public static void main(String[] args) {
    SpringApplication.run(UserApplication.class, args);
  }
}
  1. user服务的pom文件:
<?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>cloud-demo</artifactId>
        <groupId>yooo.yun.com</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>cloud-user</artifactId>

    <!-- eureka-client-->
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <!--该插件主要用途:构建可执行的JAR -->
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>0.4.14</version>
                <configuration>
                    <imageName>${project.artifactId}</imageName>
                    <dockerDirectory>${basedir}</dockerDirectory>
                    <dockerHost>${docker.host}</dockerHost>
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
  1. user服务的application.yml文件
server:
  port: 5050
  servlet:
    context-path: /user

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8080/eureka

  instance:
    prefer-ip-address: true
    instance-id: ${spring.cloud.client.ip-address}:${server.port}

spring:
  application:
    name: cloud-user
  freemarker:
    enabled: false
  thymeleaf:
    cache: false
  datasource:
    url: jdbc:mysql://localhost:3306/tb_user?characterEncoding=utf8&generateSimpleParameterMetadata=true&connectTimeout=5000&useSSL=false
    username: admin
    password: admin123!

三、新建注册中心Eureka模块

  1. 步骤与新建User模块步骤相同,目录结构如下。
    在这里插入图片描述
  2. 新建一个EurekaApplication 启动类。
package yooo.yun.com;

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

/**
 * @author WangJiao
 * @since 2020/10/14
 */
@EnableEurekaServer
@SpringBootApplication
public class EurekaApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaApplication.class, args);
    }
}
  1. Eureka模块的pom文件。
<?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>cloud-demo</artifactId>
        <groupId>yooo.yun.com</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>cloud-eureka</artifactId>

    <!--  eureka-server-->
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
    </dependencies>
</project>
  1. Eureka模块的pom文件
server:
  port: 8080
# 设置注册中心地址
eureka:
  instance:
    hostname: localhost
    prefer-ip-address: true  
    instance-id: ${spring.cloud.client.ip-address}:${server.port}

  client:
    register-with-eureka: false   # 该应用为注册中心,设置为false,代表不向注册中心注册自己
    fetch-registry: false  # 由于注册中心的职责就是维护服务实例,它并不需要去检索服务,所以设置为false
    service-url:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka

spring:
  application:
    name: eureka

四、启动注册中心与User模块

  1. 必须先启动eureka模块注册中心,再启动其他模块,这样其他服务模块才能注册到注册中心上去。
    在这里插入图片描述
    在这里插入图片描述
  2. 访问http://localhost:8080/ Eureka,启动成功。
    在这里插入图片描述
  3. 启动user模块。
    在这里插入图片描述
  4. 在浏览器或者postman中访问 http://localhost:5050/user/saas/user/123
    在这里插入图片描述

五、新建一个Order模块

  1. 步骤与上诉模块一样,就不重复写了。
  2. 启动order服务。
    在这里插入图片描述

六、User、Order服务注册到注册中心上

  1. 刷新 http://localhost:8080/ 。
    可以看到user,order服务成功注册到注册中心上了。
    在这里插入图片描述
    到这一步,说明你已经Get到了“使用Eureka为注册中心搭建Spring Cloud微服务”。

七、总结

  • 除了使用Eureka为注册中心外,还可以使用Consul、Zookeeper、Etcd等。
  • 搭建Spring Cloud 项目必须使用jdk1.8以上。建议使用jdk1.8,因为Spring Cloud是基于Spring Boot 2.0基础上的,SpringBoot2.0是基于jdk1.8的。
  • 微服务是一种架构风格,既将单体应用划分为小型的服务单元,服务之间使用HTTP的API进行资源访问与操作。

-:到了这里,你已经get到了喔!
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值