2022-06-25 15:41

基于SpringCloud快速搭建微服务入门级demo(一)

wanmatea

JavaEE

(1737)

(0)

收藏

blog

一、什么是微服务

微服务是分布式架构的一种,分布式架构其实就是要把服务做一个拆分。

在单体架构中,我们把所有的服务都写在一起,随着业务的复杂代码的耦合度就会越来越高,不便于将来的升级维护。

所以往往需要拆分这些服务,微服务在拆分的时候,会根据业务功能模块把一个单体的应用拆分成许多个独立的项目,每个项目完成一部分的业务功能,然后独立开发和部署。这些独立的项目就成为一个微服务。进而构成一个服务集群。

二、什么是SpringCloud

Spring Cloud 是一套基于 Spring Boot 框架的完整的微服务解决方案,是一系列框架的有序集合,它利用 Spring Boot 的开发便利性简化了分布式系统的开发,比如服务发现、服务网关、服务路由、链路追踪等。Spring Cloud 并不重复造轮子,而是将市面上开发得比较好的模块集成进去,进行封装,从而减少了各模块的开发成本。换句话说:Spring Cloud 提供了构建分布式系统所需的“全家桶”。

三、微服务基本组成

生产者:提供服务

消费者:消费服务

服务注册/发现中心:服务注册,发现,监控

四、搭建服务注册/发现中心

下面我们来搭建一个最基础的微服务的服务注册/发现中心。

1、创建父项目

首先,创建一个springboot项目springclouddemo

image.png 

因为父项目不需要写代码,所以把下面的文件都删掉。

image.png 

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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.3</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.wanmait</groupId>
    <artifactId>clouddemo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>clouddemo</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>11</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
 
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
 
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
 
</project>

 

2、创建服务注册发现中心模块

在父工程springclouddemo上右键,新建一个module:springclouddemo-server-eureka

image.png 

image.png 

创建好的模块结构如下:

image.png 

 

(1)修改配置文件

修改springcloud-server-eureka配置文件application.properties为下面的代码:

#启动端口
server.port=8761
#Eureka主机名称
eureka.instance.hostname=localhost
#不将自己注册到Eureka Server
eureka.client.register-with-eureka=false
#不从Eureka Server获取注册信息
eureka.client.fetch-registry=false

(2)添加依赖

在pom文件中添加eureka-server的依赖

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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.3</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.wanmait</groupId>
    <artifactId>cloud-server-eureka</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>cloud-server-eureka</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>11</java.version>
        <spring-cloud.version>2021.0.0</spring-cloud.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
 
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
 
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
 
</project>


(3)在启动类上添加注解

然后在application.properties启动类上加上注解@EnableEurekaServer,来声明是一个基于Eureka的注册发现中心。

@SpringBootApplication
@EnableEurekaServer
public class SpringclouddemoServerEurekApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringclouddemoServerEurekApplication.class, args);
        System.out.println("服务监控访问地址:http://www.localhost:8761");
    }
}

(4)启动springcloud-server-eureka服务

点击绿色尖头启动

image.png 

(5)访问注册中心

启动成功以后,在浏览器中访问 http://localhost:8761 查看服务注册中心是否启动成功。

启动成功界面如下:

image.png 

至此,服务注册/发现中心搭建完成。

下一课我们将学习如何来搭建生产者模块和消费者模块,请继续关注。

0条评论

点击登录参与评论