10分钟从0到1构建一个最基本的Spring Cloud工程项目

目录

1. 环境准备

2. 创建父项目 (Project Setup)

3. 创建服务提供者 (Service Provider Module)

4. 创建服务消费者 (Service Consumer Module)

5. 调试和运行

6. 监控和管理(可选)

这里举例介绍设置Spring Boot Admin监控服务

7. 构建和部署

8. 高级特性(可选)

结尾


        从0到1搭建一个使用Nacos作为服务注册中心的Spring Cloud工程项目是一个复杂的过程,但我将尽可能地详细说明每一步。以下是详细步骤:

1. 环境准备

        首先,你需要确保安装了以下环境:

- Java Development Kit (JDK):推荐使用版本1.8或以上。
- Maven:用于项目依赖管理和构建,保证版本为3.5以上。
- IntelliJ IDEA 或其他IDE:用于编写代码和项目管理。
- Nacos Server:Nacos release页面下载对应版本,并按照官方文档启动Nacos。

2. 创建父项目 (Project Setup)

        创建一个新的Maven项目,这将作为父项目,用来管理多个子模块和共享依赖。

- 在IDE中新建一个Maven项目,选择`Create from archetype`,然后选择`maven-archetype-quickstart`或者`maven-archetype-webapp`,取决于你的需求。
- 为父项目定义POM文件`pom.xml`,添加Spring Cloud Alibaba BOM和其他公共依赖。

<project>
    ...
    <groupId>com.example</groupId>
    <artifactId>spring-cloud-nacos-project</artifactId>
    <version>1.0.0</version>
    <packaging>pom</packaging>

    <properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>Hoxton.SR9</spring-cloud.version>
        <spring-cloud-alibaba.version>2.2.5.RELEASE</spring-cloud-alibaba.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring-cloud-alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <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>
    
    <modules>
        <!-- 子模块将会加入这里 -->
    </modules>
    ...
</project>

3. 创建服务提供者 (Service Provider Module)

        创建一个Spring Boot应用作为服务提供者子模块。

- 在父项目中添加一个新的Maven模块,命名为`service-provider`。
- 在`service-provider`的`pom.xml`中添加Nacos Discovery依赖。

<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
    <!-- 其他依赖 -->
</dependencies>

- 在服务提供者模块的`application.yml`配置文件中添加Nacos服务注册中心的配置。

spring:
  application:
    name: service-provider
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848

- ps:附上服务提供者模块完整的`application.yml`配置文件

server:
  port: 8082

spring:
  application:
    name: service-provider
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
  boot:
    admin:
      client:
        url: "http://localhost:8083" # Spring Boot Admin Server的地址

management:
  endpoints:
    web:
      exposure:
        include: "*" # 暴露所有的Actuator endpoints

- 在`service-provider`模块中创建主启动类和REST控制器。

@SpringBootApplication
@EnableDiscoveryClient
public class ServiceProviderApplication {

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

@RestController
@RequestMapping("/api")
public class HelloController {

    @GetMapping("/hello")
    public String hello() {
        return "Hello from Service Provider";
    }
}

        确保你的服务提供者模块已经包含Spring Boot的基础依赖,然后启动你的应用,它将会注册到Nacos。

4. 创建服务消费者 (Service Consumer Module)

        创建一个Spring Boot应用作为服务消费者子模块。

- 同样,在父项目中添加一个新的Maven模块,命名为`service-consumer`。
- 在`service-consumer`的`pom.xml`中添加Nacos Discovery依赖。

<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
    <!-- 其他依赖 -->
</dependencies>

- 在服务消费者模块的`application.yml`配置文件中添加Nacos服务注册中心的配置。

spring:
  application:
    name: service-consumer
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848

- ps:附上服务消费者模块完整的`application.yml`配置文件

server:
  port: 8081

spring:
  application:
    name: service-consumer
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
  boot:
    admin:
      client:
        url: "http://localhost:8083" # Spring Boot Admin Server的地址

management:
  endpoints:
    web:
      exposure:
        include: "*" # 暴露所有的Actuator endpoints

- 在服务消费者模块中创建主启动类和使用`RestTemplate`来调用服务提供者的示例。

@SpringBootApplication
@EnableDiscoveryClient
public class ServiceConsumerApplication {
    
    @Bean
    @LoadBalanced
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }

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

@RestController
@RequestMapping("/api")
public class HelloConsumerController {

    private final RestTemplate restTemplate;

    public HelloConsumerController(RestTemplate restTemplate) {
        this.restTemplate = restTemplate;
    }

    @GetMapping("/consume")
    public String consume() {
        // 使用服务提供者的服务id来调用服务
        String serviceId = "service-provider";
        return restTemplate.getForObject("http://" + serviceId + "/api/hello", String.class);
    }
}

5. 调试和运行

        一旦设置好服务提供者和消费者,你可以启动Nacos Server,然后分别启动这两个Spring Boot应用。

- 启动Nacos Server。
- 启动服务提供者:运行`ServiceProviderApplication`的`main`方法。
- 启动服务消费者:运行`ServiceConsumerApplication`的`main`方法。

        访问服务消费者的`/api/consume`接口,它应该通过Nacos服务注册中心调用服务提供者的`/api/hello`接口,并返回相应的“Hello from Service Provider”。

6. 监控和管理(可选)

        一旦服务在运行,你可能想要添加监控和管理工具来提升可见性和可操作性。

- Spring Boot Admin: 可作为管理和监控Spring Boot应用程序的工具。
- Spring Cloud Sleuth + Zipkin: 用于跟踪微服务架构中请求的延迟。

这里举例介绍设置Spring Boot Admin监控服务

1. 创建一个新的Spring Boot项目作为Spring Boot Admin Server。
2. 在pom.xml中添加依赖:

   <dependencies>
       <dependency>
           <groupId>de.codecentric</groupId>
           <artifactId>spring-boot-admin-starter-server</artifactId>
           <version>2.3.1</version>
       </dependency>
   </dependencies>

3. Spring Boot Admin Server模块完整的`application.yml`配置文件

server:
  port: 8083

spring:
  application:
    name: spring-boot-admin
  security:
    user:
      name: admin
      password: admin # 这里设置了一个简单的用户名和密码,实际使用中应该通过更安全的方式配置

management:
  endpoints:
    web:
      exposure:
        include: "*" # 暴露所有的Actuator endpoints

4. 在Application类上添加@EnableAdminServer注解。

   @SpringBootApplication
   @EnableAdminServer
   public class AdminServerApplication {

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

5. 确保服务提供者和消费者都有Spring Boot Admin Client的依赖,并且配置了Admin Server的地址。

服务提供者和消费者的`pom.xml`都必须添加Spring Boot Admin Client的依赖

   <dependency>
       <groupId>de.codecentric</groupId>
       <artifactId>spring-boot-admin-starter-client</artifactId>
       <version>2.3.1</version>
   </dependency>

服务提供者和消费者的`application.yml `都必须配置Spring Boot Admin Client的地址

   spring:
     boot:
       admin:
         client:
           url: "http://localhost:admin-server-port"

6. 启动Admin Server和其他服务,打开Admin Server的Web UI,你应该能看到你的服务被监控和管理。

7. 构建和部署

在项目构建和部署方面,你也需要考虑以下几点:

- 版本控制:确保所有代码都存储在版本控制系统中,如Git,以便于代码的管理和协作。

- Maven 或 Gradle构建:使用mvn clean installgradle build来构建你的服务。

- Docker:将服务打包为Docker镜像。

# Dockerfile 示例
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD target/service-provider-1.0.0.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

- CI/CD Pipeline:使用Jenkins、GitLab CI、GitHub Actions等工具来自动化你的构建、测试和部署过程。

- 云部署:如果你使用的是云服务,如AWS、Azure或GCP,你可以使用它们的服务来部署和管理你的应用。例如,在Kubernetes集群上使用Helm charts来部署你的微服务。

8. 高级特性(可选)

- 服务安全:实现OAuth2或JWT认证来保护你的API。
- 配置中心:利用Nacos或Spring Cloud Config管理服务配置,可以实现配置的热加载和集中管理。
- API网关:部署Spring Cloud Gateway或Zuul作为微服务架构的入口点,提供路由、负载均衡和安全等功能。
- 服务熔断与降级:使用Resilience4j或Hystrix实现熔断器模式,以避免服务故障的级联影响。
- 分布式链路追踪:集成Zipkin或Jaeger来追踪微服务之间的调用链路。
- 消息队列集成:通过RabbitMQ、Kafka等消息中间件来异步处理和传递消息。

结尾

        每个步骤都需要详细的规划和执行,而实际开发过程中还可能会遇到更多的问题和需求变更。在实际应用中,可能需要根据项目的具体需求来调整这些步骤。此外,随着业务的发展,可能还需要考虑服务的分库分表、多数据源、数据缓存、性能优化等方面。

        最后,随着Spring Cloud的版本更新,相关的依赖和配置可能会有所变动,因此建议在开始一个新项目时,查阅最新的官方文档,确保使用最新推荐的实践。

  • 53
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
从0到1搭建Spring Cloud项目可以按照以下步骤进行: 1. 首先,了解Spring Cloud是什么。Spring Cloud是一个开源的微服务框架,可以帮助开发人员快速构建和部署云原生应用程序。它提供了一套丰富的组件,包括服务注册与发现、负载均衡、断路器、配置管理等,可以帮助开发人员轻松构建可伸缩、弹性和可靠的分布式系统。 2. 接下来,创建一个新的Spring Cloud项目。可以使用Spring Initializr(https://start.spring.io/)来初始化一个新的Spring Boot项目。在这个项目中,可以选择集成所需的Spring Cloud组件,例如Spring Cloud Zuul、Spring Cloud Eureka、Spring Cloud Config等等。根据项目的需求,选择合适的组件进行集成。 3. 在项目中创建服务提供者和服务调用者。可以根据实际需求创建多个微服务,每个微服务负责处理特定的业务逻辑。例如,可以创建一个名为cloud-payment的服务提供者工程,和一个名为cloud-order的服务调用者工程。服务提供者负责提供具体的服务,服务调用者则通过调用提供者的API来消费服务。 4. 集成其他相关组件。根据项目需求,可以进一步集成其他Spring Cloud组件,如Spring Cloud Zipkin用于分布式跟踪,以及网关的熔断和负载均衡等。 总结起来,从0到1搭建Spring Cloud项目的步骤可以概括为:了解Spring Cloud -> 创建Spring Cloud项目 -> 创建服务提供者和服务调用者 -> 集成其他相关组件。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span> #### 引用[.reference_title] - *1* [springcloud项目Demo](https://download.csdn.net/download/m0_69665204/87381048)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* *4* [SpringCloud 入门实战(二)-SpringCloud项目从0到1搭建](https://blog.csdn.net/weixin_47061482/article/details/125673913)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [【微服务笔记23】使用Spring Cloud微服务组件从0到1搭建一个微服务工程](https://blog.csdn.net/qq_39826207/article/details/130393617)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ead_Y

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值