SpringCloudAlibaba入门学习笔记20240408~20240424

跟学b站“图灵架构师”SpringCloudAlibaba入门教程

系统架构演化进程

单体应用架构>垂直应用架构>分布式架构>SOA架构>微服务架构
1、针对微服务架构:
如何管理众多小服务?(服务治理 注册中心[服务注册 发现 剔除])nacos
众多小服务之间如何通讯?(restfui rpc dubbo feign) ,httpclient(“url”,参数),springBoot restTemplate(“url”,参数), feign
客户端怎么访问小服务?(网关)gateway
小服务一旦出现问题,如何自处理?(容错)sentinel
小服务一旦出现问题,如何排错?(链路追踪)skywalking
2、SpringCloudAlibaba——以微服务为核心的分布式系统构建标准
spring cloud的标准实现
在这里插入图片描述

代码实践——环境搭建

IDEA版本:2021.1
一、新建parent项目
step1
在这里插入图片描述
step2
在这里插入图片描述
在这里插入图片描述
二、新建子服务:以maven方式创建
step1
在这里插入图片描述
step2
在这里插入图片描述
step3:可选parent项目
在这里插入图片描述
finish后得:
在这里插入图片描述
对子项目进行依赖导入:pom.xml文件中导入dependency,该依赖的引用是为了使用RestTemplate进行服务间调用。

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

三、nacos未启用前——子服务之间调用
创建项目启动类——添加项目配置文件——创建接口调用服务
order和stock都以同样方式进行项目简单搭建:
在这里插入图片描述
step1
新建配置文件application.yaml,做简单配置,配置项目端口:

#order的服务端口
server:
  port: 8080
#stock的服务端口
server:
  port: 8011

step2
构建启动类

@SpringBootApplication
public class OrderApplication {
    public static void main(String[] args) {
        SpringApplication.run(OrderApplication.class,args);
    }
    //暂时将RestTemplate的实例对象构建方法配置在启动类
     @Bean
    public RestTemplate restTemplate(RestTemplateBuilder builder){
        RestTemplate restTemplate = builder.build();
        return restTemplate;
     }
}
@SpringBootApplication
public class StockApplication {
    public static void main(String[] args) {
        SpringApplication.run(StockApplication.class,args);
    }
}

step3
编写order服务接口调用stock服务

@RestController
@RequestMapping("/order")
public class OrderController {
    @Autowired
    RestTemplate restTemplate;
    @RequestMapping("/add")
    public String add(){
        String msg = restTemplate.getForObject("http://localhost:8011/stock/reduct", String.class);
        System.out.println("下单成功!");
        return "hello world"+msg;
    }
}
@RestController
@RequestMapping("/stock")
public class StockController {
    @RequestMapping("/reduct")
    public String reduct(){
        System.out.println("扣减库存");
        return "扣减库存服务";
    }
}

在这里插入图片描述
在这里插入图片描述
以上是服务之间调用最简单的实现,针对一调多,多调一的情况,这种单点调用很不方便,而且面对服务迁移、高并发的情况也有弊端,因此引入nacos-服务注册管理工具。
四、做一些配置
step1
nacos启动:
在这里插入图片描述
启动成功标志:
在这里插入图片描述
nacos客户端:
用户名和密码均默认:nacos
在这里插入图片描述
在这里插入图片描述
nacos-client的搭建:
1.添加子项目中application.yaml的配置文件;
2.添加子项目中pom.xml文件的依赖项;
application.yaml内容如下:

server:
  port: 8021
# 应用名称 (nacos会将该名称当做服务名称)
spring:
  application:
    name: stock-service
  cloud:
    nacos:
      server-addr: 127.0.0.1:8848
      discovery:
        username: nacos
        password: nacos

pom.xml内容如下:

        <!--nocos的服务注册发现-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

        <!--引入nacos config配置依赖-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>

step1配置完毕后启动项目,控制台输出register finished,则该服务注册成功。
在这里插入图片描述
step2—nacos客户端查看服务列表,详情可查看监听端口,ip等信息
在这里插入图片描述
在这里插入图片描述

step3—关闭子服务,停止心跳反馈,触发nacos保护机制
在这里插入图片描述
服务之间调用:
一、模拟生产环境上存在多个相同服务,构建不同监听端口的多个服务
在这里插入图片描述
在这里插入图片描述
二、order-service中调用stock-service服务:由之前ip换为服务名称

@RestController
@RequestMapping("/order")
public class OrderController {
    @Autowired
    RestTemplate restTemplate;
    @RequestMapping("/add")
    public String add(){
        String msg = restTemplate.getForObject("http://stock-service/stock/reduct", String.class);
        System.out.println("下单成功!");
        return "hello world"+msg;
    }
}

三、将服务全部启动,可在nacos客户端看到服务集群
在这里插入图片描述
服务详情可查看具体监听端口:

在这里插入图片描述
四、查看服务调用情况:order-service以轮询的方式调用stock-service集群
在这里插入图片描述
在这里插入图片描述
nacos管理界面:
一、订阅者列表:
在这里插入图片描述
在这里插入图片描述
二、服务详情-保护阈值
可以通过application.yaml配置文件中设置为永久实例
在这里插入图片描述
在这里插入图片描述
注册中心配置项解析
采用配置文件application.yaml进行配置:

server:
  port: 8021
# 应用名称 (nacos会将该名称当做服务名称)
# service: stock-service(也可以此配置)
spring:
  application:
    name: stock-service
  cloud:
    nacos:
      server-addr: 127.0.0.1:8848
      discovery:
        username: nacos
        password: nacos
        # namespace: public  # 相同特征的服务进行归类分组管理
        ephemeral: false  # 默认=true(临时实例)  当服务宕机 超过心跳 就会将实例剔除掉
        #永久实例   哪怕宕机了也不会删除实例  当服务宕机 永远不会剔除掉
        #group: 默认DEFAULT_GROUP,相同特征的服务进行归类分组管理
        #weight:  通常要结合 安装 权重的负载均衡策略, 权重越高分配的流量就越大
        #metadata: version=1  可以结合元数据做扩展
        #cluster-name: XUSHU
        #service: 默认取{spring.application.name}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/569857.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

智能驾驶+网络安全

在智能驾驶场景下&#xff0c;安全问题一直是一个持续热点。 针对车机模块不被黑客利用Linux的漏洞攻击&#xff0c;可以采取以下几种方式来提高安全性&#xff1a; 安全设计和防护&#xff1a;在设计车机模块时&#xff0c;需要考虑安全性&#xff0c;并采取相应的安全防护措施…

【Yolov系列】Yolov5学习(一):大致框架

一、Yolov5网络结构 Yolov5特点&#xff1a; 合适于移动端部署&#xff0c;模型小&#xff0c;速度快 Yolov5骨干结构&#xff1a;CSPDarknet53网络Yolov5主要有Yolov5s、Yolov5m、Yolov5l、Yolov5x四个版本。这几个模型的结构基本一样&#xff0c;不同的是depth_multiple模型…

C++ | Leetcode C++题解之第42题接雨水

题目&#xff1a; 题解&#xff1a; class Solution { public:int trap(vector<int>& height) {int n height.size();if (n 0) {return 0;}vector<int> leftMax(n);leftMax[0] height[0];for (int i 1; i < n; i) {leftMax[i] max(leftMax[i - 1], he…

SpringMVC 源码剖析

SpringMVC 源码剖析 0 从源码角度分析SpringMVC执行流程 // 前端控制器&#xff0c;SpringMVC最核心的类 public class DispatcherServlet extends FrameworkServlet {// 前端控制器最核心的方法&#xff0c;这个方法是负责处理请求的&#xff0c;一次请求&#xff0c;调用一次…

数据类型总结

1 引言 在计算机的世界里&#xff0c;数据类型是被人类定义出来的&#xff0c;方便人去更好地理解、辨别数据。计算机只能识别二进制数&#xff0c;不可能要求写代码时&#xff0c;只是输入一些0/1的东西。通过定义数据类型&#xff0c;可以让人和计算机更好地“沟通”&#x…

图像处理|关于二维傅里叶变换的学习笔记(实用版)

因为图像至少是2D的&#xff0c;所以在数字图像处理中使用的都是2D-傅里叶变换。 1.什么是傅里叶变换(DFT)&#xff1f;傅里叶变换是将图像从空间域转换到频域&#xff0c;其逆变换是将图像从频域转到空间域。 物理意义是&#xff1a; 2.频谱图怎么看&#xff1f;傅里叶频谱图…

亚马逊、ozon、美客多等平台的测评技术核心:提升跨境电商业绩的关键要素

现今&#xff0c;越来越多的跨境卖家开始深入了解测评自养号这一领域&#xff0c;他们希望通过优化运营来降低成本并增加利润。在整个测评工作中&#xff0c;测评技术是非常关键的一环。只有不断学习、保持冷静&#xff0c;我们才能不断提升测评能力&#xff0c;从而获得更多机…

Bentley二次开发教程22-文件及模型管理-材质、图层

材质 材质主要用于对元素进行材质贴图&#xff0c;以表现实际的材料样式。材质表中包含材质表&#xff0c;材质面板以及材质。而其属性记录了反射等多种属性以表达实际材质效果。 创建材质 当我们需要创建自定义的材质时&#xff0c;对应的&#xff0c;需要依次创建材质表&…

JavaScript:js实现在线五子棋人机(人人)对弈

在线五子棋人机对弈 全部使用前端技术,使用HTML,CSS以及JS进行实现. 棋盘在后端就是一个15*15的二维数组 页面设计 页面设计的比较粗糙 主要使用js自带的canvas画布进行绘画 HTML代码如下: <div class"outer"><canvas id"canvas" height&qu…

男生一般穿什么裤子好看?五大爆款男装精选测评!

男生裤子要怎么选才能找到适合自己的裤子呢&#xff1f;这肯定是大家选裤子时经常出现的一个疑问了&#xff0c;现在的市面上虽然款式风格非常多&#xff0c;但是由于品牌鱼龙混杂的原因&#xff0c;不同的裤子质量也参差不齐。为了帮助各位男同胞能选到适合自己的裤子&#xf…

centos7使用源码安装方式redis

安装编译源码的工具gcc yum install -y gcc下载源码 源码下载地址 https://download.redis.io/releases/ 注意事项 不建议安装最新版本redis&#xff0c;所以我这里选择6.2.6版本 下载 wget https://download.redis.io/releases/redis-6.2.6.tar.gz解压 tar -zxvf redis-…

工业相机和镜头参数和选型

工业相机和镜头参数和选型 文章目录 工业相机和镜头参数和选型前言一、相机参数解释和选型1.相机参数1.1快门-shutter1.2曝光-exposure1.3增益-gain1.4 感光芯片类型&#xff08;CCD/CMOS&#xff09;1.5 感光芯片&#xff08;靶面&#xff09;尺寸1.6 分辨率1.7 像元尺寸1.8 帧…

【点量云流】国内首家适配国产信创的实时云渲染解决方案,助力国产化信创新体验!

一、背景 随着信息技术的广泛应用&#xff0c;信息安全与自主可控成为国家发展的重要保障。近年来&#xff0c;国产化信创的发展&#xff0c;为推动信息技术产业自主创新&#xff0c;实现关键技术和产品的自主可控&#xff0c;对于保障国家信息安全、促进产业发展有着重要意义。…

程序员英语之Spring篇

spring.io/quickstart 本期课程讲解Spring官网的快速上手页面 官网地址 https://spring.io/quickstart Spring Quickstart Guide Spring 快速开始指南 Guide 指南 What you’ll build 接下来你将要构建的是什么&#xff1f; build 构建 You will build a classic “H…

Laravel 6 - 第十二章 控制器

​ 文章目录 Laravel 6 - 第一章 简介 Laravel 6 - 第二章 项目搭建 Laravel 6 - 第三章 文件夹结构 Laravel 6 - 第四章 生命周期 Laravel 6 - 第五章 控制反转和依赖注入 Laravel 6 - 第六章 服务容器 Laravel 6 - 第七章 服务提供者 Laravel 6 - 第八章 门面 Laravel 6 - …

计算机网络4——网络层1

文章目录 一、网络层1、概念2、网络层的两个层面1&#xff09;介绍2&#xff09;问题3&#xff09;解决 二、网际协议IP1、介绍2、虚拟互联网络1&#xff09;介绍2&#xff09;案例 3、IP地址1&#xff09;IP 地址及其表示方法2&#xff09;分类的IP地址3&#xff09;无分类编址…

FineVis助力智慧水务:水务可视化智能决策与管理

一、智慧水务是什么 智慧水务是利用数采仪、无线网络、水质水压表等在线监测设备实时感知城市供排水系统的运行状态&#xff0c;以及采用可视化方式整合水务管理部门与供排水设施&#xff0c;形成“城市水务物联网”的创新管理模式。通过这一系统&#xff0c;海量水务信息可以…

慧明咨询:成绩公式,发现未知,助力进步

在当今社会,数以万计的学子面临着激烈的教育竞争。2000万的中考生、1000万的高考生、300万的考研生以及500万的国考备考者,都在为了通过这“独木桥”而战。 面对有限的优质学区、师资力量的不足、以及巨大的心理压力,学生及其家长们焦虑不已。为此,深圳市慧明咨询顾问有限公司…

CentOS-7安装clickhouse并允许其他主机登录

一、通用设置 1、配置主机名 hostnamectl set-hostname --static 主机名2、修改hosts文件 vim /etc/hosts 输入&#xff1a; 192.168.15.129 master 192.168.15.133 node1 192.168.15.134 node2 192.168.15.136 node33、 保持服务器之间时间同步 yum install -y ntpdate &…

【性能测试】ChaosTesting(混沌测试)ChaosBlade(混沌实验工具)(五)-jvm混沌实验

6. chaosblade-jvm实验场景 6.1 挂载 java agent blade prepare jvm 6.1.1 介绍 挂载 java agent&#xff0c;执行 java 实验场景必要步骤 6.1.2 参数 -j, --javaHome string&#xff1a; 指定 JAVA_HOME 路径&#xff0c;用于指定 java bin 和 tools.jar&#xff0c;如果…