一、阶段目标拆解

模块 目标
Nacos 服务注册+配置中心
Gateway 统一入口
OAuth2 统一认证中心
Feign 微服务调用
Nginx 外部流量入口
基础服务 user-service、order-service…
Devops结构 GitLab +Jenkins + Docker

二、Nacos环境准备

通过Nacos的Docker镜像,在Docker容器中部署并使用Nacos。
docker-compose.yml:

version: '3'
services:
  nacos:
    image: nacos/nacos-server:v2.2.3
    environment:
      - MODE=standalone
    ports:
      - "8848:8848"

执行:docker-compose up -d
访问:http://ip:8848/nacos
账号:nacos / nacos

1.接入Nacos

pom.xml

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

application.yml

spring:
  application:
    name: user-service
  cloud:
    nacos:
      discovery:
        server-addr: ip:8848
server:
  port: 8081

启动类

@SpringBootApplication
@EnableDiscoveryClient
public class UserApplication {
    public static void main(String[] args) {
        SpringApplication.run(UserApplication.class,args);
    }
}

二、OpenFeign微服务调用

pom.xml

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

启动类

@EnableFeignClients
@SpringBootApplication
public class OrderApplication {
}

Feign接口

@FeignClient(name = "sys-msg-service")
public interface MsgClient {
    /**
     * feign调用发送邮件
     *
     * @param mailMsg 邮件消息对象
     * @return ApiResponseBody
     */
    @PostMapping("/sendMail")
    ApiResponseBody sendMail(@RequestBody MailMsg mailMsg);
    
    @ApiOperation("发送短信")
    @PostMapping(path = "/sendMsg", consumes = "application/json")
    ApiResponseBody sendMsg(String msg);
}

三、Gateway 网关统一入口

pom.xml

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>

application.yml

spring:
  application:
    name: gateway-service
  cloud:
    nacos:
      discovery:
        server-addr: ip:8848
    gateway:
      routes:
        - id: user
          uri: lb://user-service
          predicates:
            - Path=/user/**
        - id: order
          uri: lb://order-service
          predicates:
            - Path=/order/**
server:
  port: 9000
Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐