如何搭建Spring Cloud Alibaba微服务架构(简单版)

06-01 1489阅读

如何搭建Spring Cloud Alibaba微服务架构(简单版)

Spring Cloud Alibaba 是一个专门为构建基于Spring Cloud的分布式应用而设计的组件套件,它提供了与阿里巴巴云服务无缝集成的功能。随着微服务架构的普及,企业对于高效、可靠的分布式服务治理需求日益增长。Spring Cloud Alibaba 提供了包括服务注册与发现、配置管理、服务网关、Feign客户端等在内的丰富功能,能够帮助开发者快速构建和管理复杂的微服务系统,本篇介绍如何搭建一个简单的Spring Cloud Alibaba微服务。

一、创建父工程

如何搭建Spring Cloud Alibaba微服务架构(简单版)

如何搭建Spring Cloud Alibaba微服务架构(简单版)

如何搭建Spring Cloud Alibaba微服务架构(简单版)


    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.6.4
    
    
    com.master
    spring-cloud-master
    1.0.0
    
        8
        8
        2021.0.1
        2021.0.1.0
    
    
        
            org.springframework.boot
            spring-boot-starter
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.springframework.cloud
            spring-cloud-dependencies
            ${spring-cloud.version}
            pom
            import
        
        
            com.alibaba.cloud
            spring-cloud-alibaba-dependencies
            ${spring-cloud-alibaba.version}
            pom
            import
        
    
    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    

如何搭建Spring Cloud Alibaba微服务架构(简单版)

如何搭建Spring Cloud Alibaba微服务架构(简单版)

如何搭建Spring Cloud Alibaba微服务架构(简单版)

二、集成Nacos

启动nacos

父工程的pom.xml添加nacos的依赖

		
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-discovery
            ${spring-cloud-alibaba.version}
        
        

刷新maven

如何搭建Spring Cloud Alibaba微服务架构(简单版)

创建application.yml文件

如何搭建Spring Cloud Alibaba微服务架构(简单版)

server:
  port: 9091
  servlet:
    context-path: /api/user
spring:
  application:
    name: spring-user-service
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848

创建启动类如何搭建Spring Cloud Alibaba微服务架构(简单版)

如何搭建Spring Cloud Alibaba微服务架构(简单版)

内容如下:

package com.spring;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication
@EnableDiscoveryClient
public class SpringUserApplication {
	public static void main(String[] args) {
		SpringApplication.run(SpringUserApplication.class, args);
	}
}

打开springboot服务管理

如何搭建Spring Cloud Alibaba微服务架构(简单版)

如何搭建Spring Cloud Alibaba微服务架构(简单版)

启动服务,可以看到已经启动,后面是端口号(在该服务下的application.yml文件里配置)

如何搭建Spring Cloud Alibaba微服务架构(简单版)

打开http://localhost:8848/nacos可以看到服务启动如何搭建Spring Cloud Alibaba微服务架构(简单版)

创建接口

如何搭建Spring Cloud Alibaba微服务架构(简单版)

package com.spring.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 * 用户接口
 */
@RestController
@RequestMapping("/user")
public class UserController {
    @RequestMapping("/test")
    public String test() {
        return "测试接口调用";
    }
}

浏览器访问:

localhost:9091/api/user/user/test如何搭建Spring Cloud Alibaba微服务架构(简单版)

调用成功

三、集成OpenFeign

父工程引入依赖

        
        
            org.springframework.cloud
            spring-cloud-starter-openfeign
        
        
            org.springframework.cloud
            spring-cloud-loadbalancer
            3.1.1
        

如何搭建Spring Cloud Alibaba微服务架构(简单版)

和user服务一样在创建一个服务,我这里为note服务

如何搭建Spring Cloud Alibaba微服务架构(简单版)

并且创建一个通用common服务

application.yml为

server:
  port: 9092
  servlet:
    context-path: /api/note
spring:
  application:
    name: spring-note-service
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848

俩个子服务引入common服务的依赖

如何搭建Spring Cloud Alibaba微服务架构(简单版)

在note和user服务的启动类加注解(括号中的是注解扫描的路径,feign接口要在这个路径下)

@EnableFeignClients("com.spring")

创建fegin接口

如何搭建Spring Cloud Alibaba微服务架构(简单版)

内容如下:value为服务名(在application.yml中配置),path为路径前缀yml文件中配置的,下面的接口对应相应路径的接口

package com.spring.common.feignClient;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@FeignClient(value = "spring-user-service",path = "api/user")
public interface UserFeign
{
	@PostMapping("/user/test")
	String test();
}

然后在note服务测试能否调用user接口

package com.spring.note.controller;
import com.spring.common.feignClient.UserFeign;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 * 笔记接口
 */
@RestController
@RequestMapping("/note")
public class NoteController
{
    @Autowired
    private UserFeign userFeign;
    @RequestMapping("/test")
    public String test() {
        return "note服务测试接口调用";
    }
    @RequestMapping("/feignTest")
    public String feignTest() {
        String feign = userFeign.test();
        return "note服务测试feign接口调用:"+feign ;
    }
}

如何搭建Spring Cloud Alibaba微服务架构(简单版)

浏览器访问:

localhost:9092/api/note/note/feignTest

如何搭建Spring Cloud Alibaba微服务架构(简单版)

这样就成功了

四、集成Gateway

创建一个Gateway服务

如何搭建Spring Cloud Alibaba微服务架构(简单版)

启动类:

package com.spring;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
@EnableFeignClients("com.spring")
@SpringBootApplication
@EnableDiscoveryClient
public class SpringGatewayApplication
{
	public static void main(String[] args) {
		SpringApplication.run(SpringGatewayApplication.class, args);
	}
}

application.yml

server:
  port: 9090
spring:
  application:
    name: spring-gateway-service
  main:
    web-application-type: reactive
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
    gateway:
      routes:
        - id: spring-user-service
          uri: lb://spring-user-service
          predicates:
            - Path=/api/user/**
        - id: spring-note-service
          uri: lb://spring-note-service
          predicates:
            - Path=/api/note/**

pom.xml加入依赖

        
            org.common
            spring-common
            1.0.0
        
        
            org.springframework.cloud
            spring-cloud-starter-gateway
        
        
            org.springframework.boot
            spring-boot-starter-web
            
                
                    *
                    *
                
            
        
    

刷新Maven,启动所有服务,浏览器访问

localhost:9090/api/note/note/feignTest

如何搭建Spring Cloud Alibaba微服务架构(简单版)

这就成功了

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

目录[+]

取消
微信二维码
微信二维码
支付宝二维码