谷粒商城基础班

2023-11-01

4、分布式组件-SpringCloud Alibaba简介

注册中心
配置中心
网关
在这里插入图片描述
结合SpringCloud Alibaba我们最终的技术搭配方案
SpringCloud Alibaba - Nacos:注册中心(服务发现/注册)
SpringCloud Alibaba - Nacos:配置中心(动态配置管理)
SpringCloud - Ribbon:负载均衡
SpringCloud - Feign:生声明式HTTP客户端(调用远程服务)
SpringCloud Alibab - Sentinel:服务容错(限流、降级、熔断)
SpringCloud - Gateway:API网关(webflux编程模式)
SpringCloud - Sleuth:调用链监控
SpringCloud Alibab - Seata:原 Fescar:即分布式事务解决方案

在common的pom.xml中加入

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

springBoot和springloud和springCloudAlibab版本号要对应上

4.1、Nacos注册中心

在common模块下pom里引入nacos注册中心依赖

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

下载nacos地址,可以选择版本

https://github.com/alibaba/nacos/releases

解压nacos
在这里插入图片描述
启动nacos
双击bin中的startup.cmd文件
访问http://localhost:8848/nacos
使用默认的nacos/nacos进行登陆
在需要注册nacos的模块yml下配置nacos和服务名称

spring:
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
  application:
    name: gulimall-product

在需要注册nacos的模块GulimallProductApplication启动类上加上注解

@EnableDiscoveryClient

nacos客户端上发现注册的服务
在这里插入图片描述

4.2、远程调用Feign

A调用B
在A和B的pom下引入依赖,在创建Springboot时可以选择feign

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

在被调用的服务B的controller中写一个RequestMapping(“/member/list”)方法

@RequestMapping("/member/list")
    public R membercoupons() {
        CouponEntity couponEntity = new CouponEntity();
        couponEntity.setCouponName("满100减10");
        return R.ok().put("coupons", Arrays.asList(couponEntity));
    }

A调用方创建一个feign的包,创建一个feignService接口,加入@FeignClient(“gulimall-coupon”)注解
gulimall-coupon:被调用服务name名称,如下

/**
 * 解释:
 * 当调用CouponFeignService下membercoupons这个方法时,
 * 会去注册中心找gulimall-coupon这个服务的/coupon/coupon/member/list这个方法
 */
@FeignClient("gulimall-coupon")
public interface CouponFeignService {

    @RequestMapping("/coupon/coupon/member/list")
    public R membercoupons();
}

A调用方的启动类中接入注解
作用:启动时扫描feign包

@EnableFeignClients("com.atguigu.gulimall.member.feign")

A调用方需要调用时调用接口下这个方法即可

couponFeignService.membercoupons();

因为版本问题如果不好使,需要在A调用方加入一下依赖

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

4.3、nacos配置中心

1、在common通用服务下引入依赖,所有引入common的服务都可以使用nacos服务注册

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

2、在需要加入nacos配置中心的模块下创建bootstrap.properties文件

spring.application.name=gulimall-coupon   // 服务名称
spring.cloud.nacos.config.server-addr=127.0.0.1:8848	// nacso服务启动

3、在controller中加入nacos配置中心不用重启刷新注解

// 配置中心刷新注解
@RefreshScope

4、在nacos配置中心配置
在这里插入图片描述
在这里插入图片描述
5、访问测试

 	@Value("${aaa.user.name}")
    private String name;
    @Value("${aaa.user.age}")
    private Integer age;

    @RequestMapping("/test")
    public R test(){
        return R.ok().put("name",name).put("age",age);
    }

6、如果配置不成功需要在springboot加入以下依赖
解释:在SpringBoot 2.4.x的版本之后,对于bootstrap.properties/bootstrap.yaml配置文件(我们合起来成为Bootstrap配置文件)的支持,需要导入如下的依赖

<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
            <version>3.1.0</version>
</dependency>

7、nacos命名空间
服务隔离
在这里插入图片描述
需要在bootstrap.properties下指定配置管理
在这里插入图片描述

spring.cloud.nacos.config.namespace=1b6e5cae-3994-4cba-af8d-fc372bf22a2a

服务下分组隔离
在这里插入图片描述
需要在bootstrap.properties下指定配置管理

spring.cloud.nacos.config.group=dev

总结:
1、nacos可以一个命名空间供所有的服务使用
2、nacos可以一个命名空间对应一个服务
3、nacos可以一个命名空间对应一个服务下多个分组,实现单个服务下环境隔离

4.4、Gateway网关

简介:网关作为流量的入口,常用功能包括路由转发、权限效验、限流控制等,而springCloud gateway作为springCloud官方推出的第二代网关框架,取代了Zuul网关。

4.4.1、创建Gateway网关服务
新建module
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
4.4.2、在pom文件里引入common服务
4.4.3、更改springboot和springcloud版本
4.4.4、开启服务注册发现,在启动类上加注解

@EnableDiscoveryClient

4.4.5、gateway网关不需要数据库,但是引入了common,需要在启动类注解上排除数据库相关配置
4.4.6、服务配置中心
创建bootstrap.properties文件,配置数据

spring.application.name=gulimall-gateway // 服务名称
spring.cloud.nacos.config.server-addr=127.0.0.1:8848 // nacos端口
spring.cloud.nacos.config.namespace=0a798bc0-9267-4676-bed1-4a6ef00911f2 // nacos的dataId

nacos客户端
在这里插入图片描述

5、前端知识

在这里插入图片描述

5.1、ES6

ECMAScript6.0(以下简称ES6,ECMAScript是一种由Ecma国际通过ECMA-262标准化的脚本),
是JavaScript语言的下一代标准,2015年6月正式发布,从ES6开始的版本号采用年号,如ES2015,就是ES6。ES2016就是ES7。
ECMAScript是规范,JS的规范的具体实现。

5.1.1、let和var和const

var在{}之外也起作用

 	{
        var a = 20;
 	}

      console.log(a); //20

let在{}之外不起作用

	  {
        let b = 22;
      }

      console.log(b); // 报错

var多次声明同一变量不会报错,let多次声明会报错,只能声明一次。

	var a = 10;
    var a = 20;
    let b = 15;
    let b = 25; // 报错

var 会变量提升(打印和定义可以顺序反)。let 不存在变量提升(顺序不能反)

	console.log(a);// undefined 未定义
    console.log(b);// Cannot access 'b' before initialization
    var a = 10;
    let b = 20;

const(常量)声明之后不允许改变

		const a = 10;
        a = 20;
        console.log(a); //报错 Assignment to constant variable.

5.1.2、结构表达式

1、数组结构

	// 数组结构 
    let arr = [1,2,3];
    let a = arr[0];
    let b = arr[1];
    let c = arr[2];

    let [q,w,e] = arr;

    console.log(q,w,e); // 1 2 3

2、对象结构

// 对象结构
    const person = {
        name:"jack",
        age:21,
        language:["java","js","css"]
    }

    const {name:abc,age,language} = person;
    console.log(abc,age,language); // jack 21 ['java', 'js', 'css']

3、字符串扩展

	// 字符串扩展
    let str = "hello.vue";

    // 是否以hello开头
    console.log(str.startsWith("hello")); //true
    // 是否以vue结尾
    console.log(str.endsWith("vue")); //true
    /// 是否包含e
    console.log(str.includes("e")); //true

3.1、对象

4、模块化
模块化就是把代码进行拆分,方便重复利用。类似于java中的导包,而JS换了个概念,是导模块。

模块功能主要有两个命令构成 export 和import

export用于规定模块的对外接口
import用于导入其他模块提供的功能

user.js
var name = "jack"
var age = 21
function add(a,b){
    return a + b;
}

让别人调用。类似java里的getset
export {name,age,add}

分割线-----------------------------

hello.js
 export const util = {
     sum(a, b) {
         return a + b;
     }
 }

如果是default在导包调用的时候可以随意的起名字

export default {
    sum(a, b) {
        return a + b;
    }
}
 export {util}
分割线----------------------------

// `export`不仅可以导出对象,一切JS变量都可以导出。比如:基本类型变量、函数、数组、对象。

main.js
import abc from "./hello.js"
import {name,add} from "./user.js"

abc.sum(1,2);
console.log(name);
add(1,3);

5、目录调用
./ : 表示引用当前同级目录下的文件

5.2、VUE

执行:npm init -y,让npm管理

npm init -y

执行npm install vue@2.6.10 ,执行版本
npm install vue,是直接执行最新版vue

npm install vue@2.6.10
vscond安装: Vue 2 Snippets:语法提示

vue指令

v-on:click :单击事件
v-model :赋值
{{name}} :插值表达式
{{hello()}} :方法的返回值
<div id="app">
        <input type="text" v-model="num">
        v-model实现双向绑定
        <button v-on:click="num++">点赞</button>
        v-on:click绑定事件,实现自增
        <button v-on:click="cancel">取消</button>
        回到自定义的方法
        
        <h1> {{name}} ,非常帅,有{{num}}个人为他点赞{{hello()}}</h1>
    </div>

    <!-- 导入依赖 -->
    <script src="./node_modules/vue/dist/vue.js"></script>

    <script>
        //1、vue声明式渲染
        let vm = new Vue({ //生成vue对象
            el: "#app",//绑定元素 div id="app"
            data: {  //封装数据
                name: "李四",  // 也可以使用{} //表单中可以取出
                num: 1
            },
            methods:{  //封装方法
                cancel(){
                    this.num -- ;
                },
                hello(){
                    return "1"
                }
            }
        });
        // 还可以在html控制台vm.name

        //2、双向绑定,模型变化,视图变化。反之亦然。
        //3、事件处理

        //v-xx:指令

        //1、创建vue实例,关联页面的模板,将自己的数据(data)渲染到关联的模板,响应式的
        //2、指令来简化对dom的一些操作。
        //3、声明方法来做更复杂的操作。methods里面可以封装方法。

    </script>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

谷粒商城基础班 的相关文章

随机推荐

  • Talib技术因子详解(七)

    talib安装方式 pip install Ta lib Tushare数据获取请参考 金融量化分析基础环境搭建 数据获取代码请参考 Talib技术因子详解 一 57 CDL2CROWS名称 Two Crows 两只乌鸦 调用方式如下 ou
  • 红帽急了:新年的 RHEL 将会是低成本甚至免费易得的

    整理 八宝粥 出品 CSDN CSDNnews 图源 下载自东方IC 去年 12 月 CentOS 项目官方表示项目支持周期将缩短至 2021 年底 取而代之的是红帽推崇的 CentOS Stream 版本 也就是说这是一个滚动项目 处于
  • C语言,跳出多层循环

    C语言 跳出多层循环 前言 对于多循环的函数 我们怎末跳出循环呢 现在讲两种方法跳出循环 关于return 跳出循环的我们之后再补充 一 循环跳出 接力跳 使用多个break 接力跳出循环 break 跳出所在结构 例 有原先程序 若要跳出
  • Qt编译工程报错:No rule to make target

    第一种情况 Qt编译工程时候 所有用到的源文件包括头文件和库文件的 总路径长度不能超过190个左右字符 一旦超过 就会提示找不到那个文件 这个可能是Qt的makefile的机制问题 解决方法 工程文件夹名字命名尽量比较短 而且工程目录文件夹
  • Linux:CentOS7下配置 iptables

    iptables也叫netfilter 是Linux下自带的一款免费且优秀的基于包过滤的防火墙工具 他的功能十分强大 使用也非常灵活 可以对流入 流出 流经服务器的数据包进行精细的控制 但是iptables在CentOS7的版本上已经被阉割
  • kubernetes(K8s)集群(一)——简介及部署

    kubernetes K8s 集群 一 简介及部署 1 kubernetes简介 1 1 Kubernetes概述 1 2 kubernetes设计架构 1 3 kubernetes设计理念 2 kubernetes部署 2 1 准备工作
  • Python3读取txt文本并利用matplotlib绘制折线图(txt按行读取、字符串分割、matplotlib绘图)

    需要安装matplotlib库 可以用如下命令安装 pip install matplotlib txt文本数据如下所示 示例中的每一行内部用空格分开 100 0 6692215 200 0 57682794 300 0 45037615
  • Windows10安装torch

    w10中使用conda安装并且是3 6的环境输入命令 conda install pytorch cpu c pytorch pip3 install torchvision
  • vue-cli3.0的项目上,配置多个环境

    vue cli3 0的项目上 配置多个环境 一般情况下 我们会需要三个环境 开发环境 测试环境 生产环境 而3 0默认只支持两个环境 即测试环境 生产环境 创建测试环境 1 在根目录下创建一个evn test文件 NODE ENV test
  • 重磅福利

    声明 我已加入 维权骑士 http rightknights com 的版权保护计划 如需转载请先私信申请授权 版权所有 违者必究 知乎上的问题林林总总 每个主题下的问题都也不少 打开知乎 总是容易沉浸在茫茫的问题海洋中 如何找到好的问题和
  • Qt之自定义搜索框

    简述 关于搜索框 大家都经常接触 例如 浏览器搜索 Windows资源管理器搜索等 当然 这些对于Qt实现来说毫无压力 只要思路清晰 分分钟搞定 方案一 调用QLineEdit现有接口 void addAction QAction acti
  • MySQL中按周、月、季、年分组统计

    https blog csdn net xie8409959 article details 82663899 根据日期 按照周 月 季 年对数据进行分组统计 一 前言 带着问题去学习 我觉得是一种非常有效的学习方法 不知下面的几个问题是否
  • flutter的Container(2.0以上版本)

    前言 在flutter中Container是常用的一个标签 这里整理下他里面支持的属性和使用方法 注意我的是 2 0以上的版本 所以方法前没有new 目录 具体支持的参数和案例 一 Alignment 相当于css的text align 属
  • 2021年5月19日 Centos8 安装yapi 全过程 亲自实践有效

    环境要求 centos8 nodejs 7 6 mongodb 2 6 安装nodejs 有一个前期 确保你的yum是可以用的 yum module list nodejs sudo yum module install nodejs no
  • C#如何定义位(Bit)

    StructLayout LayoutKind Explicit Size 16 CharSet CharSet Ansi public class Flag FieldOffset 0 public ushort ReserveBits
  • KEIL中的 USE_STDPERIPH_DRIVER 宏定义

    在项目中使用stm32标准外设库 STM32F10x Standard Peripherals Library 的时候 我们会在项目的选项中预定义两个宏定义 USE STDPERIPH DRIVER STM32F10X MD 如下图 这两个
  • 前端常见跨域解决方案

    什么是跨域 跨域是指一个域下的文档或脚本去请求另一个域下的资源文档 根据浏览器同源策略 同源是指 协议 域名 端口都相同 有一个不同都会产生跨域行为 跨域解决方案 JSONP 通常为了减轻web服务器的负载 我们把js css img等静态
  • 【趣味JavaScript】我的天! 居然工作了5年的前端开发都不知道eval函数其中居然暗藏玄机!

    个人主页 极客小俊 作者简介 web开发者 设计师 技术分享博主 希望大家多多支持一下 我们一起进步 如果文章对你有帮助的话 欢迎评论 点赞 收藏 加关注 eval 函数介绍 首先你要知道在JS中eval 函数是用来干嘛的 它主要的功能就是
  • node_modules/XXX/index.js:XXX;XX

    这个语法是 ECMAScript 2021的语法 还挺新的 对node版本要求会比较高 这里这个 icon this options icon level 意思就是 如果this options icon level 拿得到值 就等于它 否
  • 谷粒商城基础班

    4 分布式组件 SpringCloud Alibaba简介 注册中心 配置中心 网关 结合SpringCloud Alibaba我们最终的技术搭配方案 SpringCloud Alibaba Nacos 注册中心 服务发现 注册 Sprin