SpringCloud

单体架构

将业务的所有功能集中在一个项目中开发,打成一个jar包部署运行

优点

  • 架构简单
  • 部署成本低(打成jar包直接运行)

缺点

  • 团队协作成本高(几百号人用一套代码,很容易产生冲突)
  • 系统发布效率低(代码量越多,打包时间越长)
  • 系统可用性差(共用一个Tomcat, 一个接口的高并发会影响其他接口的访问速度)

微服务架构

 

 

 

Nacos注册中心

原理

 

服务多级存储模型

注:优先访问同一集群下的实例,实例权重越大被访问到的概率就越大(权重数值一般是0-1)

  实例分为临时实例和非临时实例

  • 临时实例通过主动上报心跳来告知服务器其当前状态,若心跳停止,则服务器会删除该临时实例;
  • 非临时实例则是服务器主动询问其当前状态,即使发现异常也不会删除该非临时实例;

 

  

安装Nacos

version: '3'
services:
  nacos:
    image: nacos/nacos-server:v2.0.4
    container_name: nacos
    ports:
      - 8848:8848
      - 9848:9848
      - 9849:9849
    environment:
      TZ: Asia/Shanghai
      MODE: standalone
      SPRING_DATASOURCE_PLATFORM: mysql
      MYSQL_SERVICE_HOST: 数据库ip
      MYSQL_SERVICE_PORT: 3306
      MYSQL_SERVICE_USER: 用户名
      MYSQL_SERVICE_PASSWORD: 密码
      MYSQL_SERVICE_DB_NAME: nacos
      MYSQL_SERVICE_DB_PARAM: characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
    volumes:
      - /data/nacos/logs/:/home/nacos/logs

服务注册

注:一般所有服务都是服务提供者

服务发现

实战中,一般通过Feign实现

通过控制台进行相关操作

http://ip:8848/nacos/#/login

 

Nacos配置中心


<!-- bootstrap 启动器 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>

    
<!-- SpringCloud Alibaba Nacos Config -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

默认读取${spring.application.name}-${spring.profiles.active}.${file-extension}

 

热更新

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Data
@Component
@ConfigurationProperties(prefix = "pattern") //只要前缀名和变量名两者拼接与配置配置文件一致,就能完成属性的自动注入
public class PatternProperties {
    private String dateformat;
}

 

相关文件说明

  • bootstrap.yml:主要用于Nacos服务注册,便于后续从Nacos拉取相关配置文件
  • application.yaml:各微服务之间的一些共享配置,便于统一修改
  • application.dev.yaml:各微服务独立的相关配置

 

Feign

本质:是一个声明式的http客户端,可以实现http请求的发送

注:Feign 本身并不支持 SpringMVC 的注解,OpenFeign支持

 

OpenFeign

 

开启连接池

 

 

SpringCloudGateway

注:底层基于WebFlux,与web依赖会有冲突

解决gateway与spring-boot-starter-web冲突问题

 

 

配置示例

server:
  port: 8080
spring:
  application:
    name: gateway-service
  profiles:
    active: dev
  cloud:
    nacos:
      discovery:
        server-addr: 118.25.83.109
    gateway:
      routes:
        - id: item # 路由规则id,自定义,唯一
          uri: lb://item-service # 路由的目标服务,lb代表负载均衡,会从注册中心拉取服务列表
          predicates: # 路由断言,判断当前请求是否符合当前规则,符合则路由到目标服务
            - Path=/items/**,/search/** # 这里是以请求路径作为判断规则
        - id: cart
          uri: lb://cart-service
          predicates:
            - Path=/carts/**

路由断言工厂

路由过滤器

全局过滤器

本质:自定义过滤器

作用:对所有路由都生效的过滤器

  

过滤器执行顺序

跨域问题

 

 

RuoYI-Cloud

数据库配置

 

 

参考文章

【1】课堂笔记  密码:j.N?-+4[

【2】RuoYI-Cloud 数据库初始化配置

【3】使用RouterFunction为应用程序添加一个新的路由

 

posted @ 2024-01-09 22:02  先娶国王后取经  阅读(2)  评论(0编辑  收藏  举报