当前位置: 首页 > news >正文

SpringCloud

目录

  • 1、微服务
  • 2、入门案例
  • 3、Nacos注册中心
    • 3.1 基本配置
    • 3.2 服务集群配置
    • 3.3

1、微服务

微服务 ≠ SpringCloud

在这里插入图片描述

更具体点:

在这里插入图片描述

平时普通的项目都是单体架构,不利于大型项目开发。

在这里插入图片描述

大型项目常常是分布式架构

在这里插入图片描述

微服务架构特征:

在这里插入图片描述

单体架构、分布式架构、微服务架构特点:

在这里插入图片描述

微服务技术对比:

在这里插入图片描述

2、入门案例

还是新建一个 SpringBoot 项目cloud-demo,然后再其下面再建 SpringBoot 项目来代指不同功能模块。

父项目pom文件主要组成:

<modules>
	<module>user-service</module>
	<module>order-service</module>
</modules>

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.3.9.RELEASE</version>
    <relativePath/>
</parent>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
    <spring-cloud.version>Hoxton.SR10</spring-cloud.version>
    <mysql.version>5.1.47</mysql.version>
    <mybatis.version>2.1.1</mybatis.version>
</properties>

<dependencyManagement>
    <dependencies>
        <!-- springCloud -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>${spring-cloud.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <!-- mysql驱动 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${mysql.version}</version>
        </dependency>
        <!--mybatis-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>${mybatis.version}</version>
        </dependency>
		<!-- lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
    </dependencies>
</dependencyManagement>

这里举例了两个模块:用户模块和订单模块。

用户模块写了个根据用户id查询用户的功能。
订单模块写了个根据订单id查询到订单功能,并根据订单上的用户id查询到用户。

在订单模块的启动类中,创建RestTemplate并注入Spring容器

@Bean
@LoadBalanced  // 负载均衡注解,比如要访问的用户模块有多个实例,则通过负载均衡可以指定规则,可以是每次随机,也可以是均匀等。
public RestTemplate restTemplate() {
    return new RestTemplate();
}

3、Nacos注册中心

注册中心是用来统一管理各个微服务模块的地址的。 用来管理各个微服务模块之间的访问。

3.1 基本配置

下载安装包:
https://github.com/alibaba/nacos/releases

windows:
解压后进入 bin 目录

进入cmd,执行命令: startup.cmd -m standalone

父工程添加 nacos 的 管理依赖:

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-alibaba-dependencies</artifactId>
    <version>2.2.5.RELEASE</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>

两个子工程都添加 nacos 的客户端依赖:

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

订单模块 application.yml 配置:

server:
  port: 8088
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/cloud_order?useSSL=false
    username: root
    password: 123456
    driver-class-name: com.mysql.jdbc.Driver
  application: # 订单模块服务名称配置
    name: orderservice
  cloud: # nacos 配置
    nacos:
      server-addr: localhost:8848 # nacos服务地址
userservice: # 用户模块的服务名称为userservice,这里意思是仅针对此服务多个实例的负载均衡规则。
  ribbon:
    NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule  # 负载均衡规则
ribbon:
  eager-load:
    enabled: true # 开启饥饿加载:普通加载是在发起请求时才加载配置,会导致第一次请求很慢,开启饥饿加载后会在项目启动后就加载配置,发起请求后的响应就会快一点。
    clients: # 指定饥饿加载的服务名称
      - userservice

用户模块 application.yml 配置:

server:
  port: 8081
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/cloud_user?useSSL=false
    username: root
    password: 123456
    driver-class-name: com.mysql.jdbc.Driver
  application: # 用户模块服务名称配置,用于别的模块调用
    name: userservice
  cloud:
    nacos:
        server-addr: localhost:8848

用户模块新增实例:

在这里插入图片描述

在这里插入图片描述

配置完后,可以在订单模块获取到用户模块信息:

在这里插入图片描述

3.2 服务集群配置

一般情况下 会将一个服务模块 的多个实例部署在多个不同的地方(机房)!在同一个机房的实例称为一个集群。

在这里插入图片描述

修改用户模块的 application.yml 文件,添加如下内容:

spring:
  cloud:
    nacos:
        server-addr: localhost:8848  # nacos 服务端地址
        discovery:
          cluster-name: SH  # 配置集群名称,也是机房位置,例如:SH,上海

然后启动 UserApplication 和 UserApplication 2

将 cluster-name 改为 HZ 再启动 UserApplication 3

在 nacos 服务器网站上 http://192.168.31.41:8848/ 查看:

在这里插入图片描述

服务详情中:

在这里插入图片描述
总结:
在这里插入图片描述
订单模块可通过配置自定义选择用户模块的实例:
在订单模块 application.yml 下也做相似配置:

spring:
  cloud:
    nacos:
      server-addr: localhost:8848  # nacos 服务端地址
      discovery:
        cluster-name: HZ  # 配置集群名称,也是机房位置,例如:HZ,杭州

# 还需配置负载均衡。否则不起效,配置为优先选择同集群下实例
userservice: # 仅针对 userservice服务
  ribbon:
    NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule  # 负载均衡规则,优先选择同集群下的实例,若有多个,随机访问。若同集群下没有则会跨级访问并发出警告。

在这里插入图片描述

3.3

相关文章:

  • MATLAB学习笔记(系统学习)
  • 【Redis】Redis安装步骤和特性以及支持的10种数据类型(Redis专栏启动)
  • Matlab:tftb-0.2时频工具箱安装小记
  • docker 安装 redis 6.0.8 cluster 实战 (3主3从) 安装篇
  • [Windows驱动开发] BlackBone介绍
  • hadoop完全分布式环境搭建详细版
  • 【YOLOv7/YOLOv5系列算法改进NO.47】改进激活函数为GELU
  • 网课题库接口调用方法
  • C语言Socket编程,实现两个程序间的通信
  • 如何让页面跳转更丝滑
  • docker_重装mysql
  • [论文阅读] 颜色迁移-Automated Colour Grading
  • 卡尔曼滤波算法原理
  • 结构重参数化
  • 浏览器高度兼容性
  • 【Typora】Typora 新手入门参数配置记录
  • OS-调度
  • DiffuSEEG:一种基于stable diffusion 的SEEG数据补全方法
  • Nginx配置实例-动静分离
  • 【WPF】附加事件
  • AirTest 自动化
  • 基于主成分分析的支持向量机入侵检测系统
  • 单调队列算法总结
  • 广告行业中那些趣事系列58:当我们面对文本分类任务的时,可以使用哪些优化策略...
  • 载药磷酸钙纳米粒子;载药阿奇霉素纳米粒子;载药酪蛋白纳米粒子
  • Java客户端如何进行操作_java培训
  • SAP ARFCSTATE ARFCSDATA TRFCQOUT
  • 两种形式的import
  • 什么是DCMM认证,企业为什么要做DCMM
  • 《自己动手写CPU》学习记录(1)——第1章
  • 湖南2021本科批(普通类历史类)第一次征集志愿投档分数线
  • 2022年甘肃高考482分能报什么大学 482分能上哪些院校
  • 2022年全国各大高校在山东招生计划及分数
  • 浙江有哪些师范大学,年浙江师范类大学分数线排名一览表
  • 武汉设计工程学院是几本
  • 2022感恩节放假吗 中国有哪些节日会放假
  • 12种新高考3+1+2选科组合分析 怎么选科好
  • 0基础艺考最容易过的专业有哪些 通过率最高的专业是什么
  • 体育高水平怎么报名
  • 浙江2022普通类第二段平行投档分数线是多少