【Springcloud篇】学习笔记一(一至三章):微服务介绍、构建环境

零基础微服务架构理论入门介绍

一个基于分布式的服务架构应该含有的架构内容如下:

image-20230904210229835

1.1SpringCloud是什么

image-20230904211235017

1.2基于微服务的系统

image-20230904211035527

1.3服务与之对用的技术

image-20230904211059696

1.4课程目录

image-20230904211147286

第一章_SpringBoot和SpringCloud版本选择

详细可见SpringCloud2020.mmap文件

1.概述

image-20230904211722907

2.SpringBoot版本选择

  • git源码地址:https://github.com/spring-projects/spring-boot/releases/

  • SpringBoot2.0新特性:https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.0-Release-Notes

    通过上面官网发现,Boot官方强烈建议你升级到2.X以上版本

3.SpringCloud版本选择

  • git源码地址:https://github.com/spring-projects/spring-cloud
  • 官网:https://spring.io/projects/spring-cloud
  • Cloud版本命名规则:A-Z(目前2023年9月4日,官网更新至)

4.SpringBoot和SpringCloud之间的版本对应关系

4.1初略的版本对应关系

  • 链接:https://spring.io/projects/spring-cloud#overview

  • 结果:SpringCloud版本至少为G

image-20230904223553504

4.2更详细的版本对应关系

  • 链接:https://start.spring.io/actuator/info

  • 视频查的结果:

image-20230904223309937

今日查的结果:

image-20230904223340083

5.SpringCloud学习中各种技术版本

image-20230904223759032

  • 根据SpringCloud版本选择SpringBoot版本

image-20230904223949433

6.SpringBoot中2.X版本常用的pom

image-20230904224105719

第二章_关于Cloud组件的升级

其中sentienl为阿里巴巴开发的服务熔断技术

image-20230904230239998

1.参考资料

  • SpringCloud的Hoxton SR1版本文档

https://cloud.spring.io/spring-cloud-static/Hoxton.SR1/reference/htmlsingle/

  • SpringCloud的中文文档

https://www.bookstack.cn/read/spring-cloud-docs/docs-index.md

第三章_新建工程

1.父工程project空间新建

image-20230904233017428

image-20230904231617222

image-20230904231801698

  • maven版本以及工作环境

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

image-20230904232227466

  • 允许注解生效

image-20230904232353225

image-20230904232452192

image-20230904232714052

2.父工程pom文件

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.peng.springcloud</groupId><artifactId>cloud2020</artifactId><version>1.0-SNAPSHOT</version><!-- 使用maven分模块管理,有一个父级项目,父级项目中packaging(打包类型)为pom默认属性为jar,则maven会将项目打成jar包--><packaging>pom</packaging><!--统一管理jar包版本--><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><junit.version>4.12</junit.version><lombok.version>1.2.17</lombok.version><log4j.version>1.16.18</log4j.version><mysql.version>5.1.47</mysql.version><druid.version>1.1.16</druid.version><mybatis.spring.boot.version>1.3.0</mybatis.spring.boot.version></properties><!-- 子模块继承之后,提供作用:锁定版本,即子模块不用谢groupId和version--><dependencyManagement><dependencies><!--spring boot 2.2.2--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>2.2.2.RELEASE</version><type>pom</type><scope>import</scope></dependency><!--spring cloud Hoxton.SR1--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>Hoxton.SR1</version><type>pom</type><scope>import</scope></dependency><!--spring cloud 阿里巴巴--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2.1.0.RELEASE</version><type>pom</type><scope>import</scope></dependency><!--mysql--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql.version}</version><scope>runtime</scope></dependency><!-- druid--><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>${druid.version}</version></dependency><!--mybatis--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>${mybatis.spring.boot.version}</version></dependency><!--junit--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>${junit.version}</version></dependency><!--log4j--><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>${log4j.version}</version></dependency></dependencies></dependencyManagement>
</project>

3.DependencyManagement和Dependencies的区别

image-20230905095010126

  • 演示:

image-20230905095133832

image-20230905095213809

image-20230905095305688

4.支付模块构建

前说:由订单模块启动支付模块

image-20230905102430932

4.1套路

  • 建module
  • 改POM
  • 写YML
  • 主启动
  • 业务类

4.2过程

(1)建module:cloud-provider-payment8001

直接new Module即可

(2)改POM
  • 补充maven爆红解决方法

    image-20230905124653222

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>cloud2020</artifactId><groupId>com.peng.springcloud</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>cloud-provider-payment8001-2</artifactId><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.10</version></dependency><!-- mysql-connector-java --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><!-- jdbc--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency></dependencies></project>
(3)写YML
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>cloud2020</artifactId><groupId>com.peng.springcloud</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>cloud-provider-payment8001-2</artifactId><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.10</version></dependency><!-- mysql-connector-java --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><!-- jdbc--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency></dependencies></project>
(4)主启动

image-20230905102728829

(5)业务类
①建表
CREATE TABLE `payment` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', `serial` varchar(200) DEFAULT '', PRIMARY KEY (`id`)) 
ENGINE=InnoDB 
AUTO_INCREMENT=1 
DEFAULT CHARSET=utf8
②entites实体类
  • payment类

image-20230905124526992

  • 返回的json字符串

image-20230905130012951

③dao层
  • 接口PaymentDao

image-20230905130106019

  • mybaits的映射文件PaymentMapper.xml

image-20230905130151722

④service层

image-20230905131911162

⑤controller层

image-20230907130358305

4.3.开启热部署

(1)引入jar包-子工程
<dependency>  		<groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional>
</dependency>
(2)添加插件-父工程
<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><fork>true</fork><addResources>true</addResources></configuration></plugin></plugins>
</build>
(3)设置

image-20230907125814477

(4)开启

快捷键:ctrl+shift+alt+/,选中第一个registry

image-20230907130031628

(5)重启

5.消费模块构建

建module,改pom,改yml,主启动,业务类

5.1使用restTemplate实现服务间的调用

(1)创建restTemplate对象并注入到容器中

image-20230907221837803

(2)Controller层

image-20230907221630884

(3)注意要添加支付模块的创建订单的@RequestBody注解

@RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的);

因为订单模块返回给支付模块的数据,即payment数据为json格式数据

image-20230907223049958

(4)补充:关闭占用80端口的进程方法

image-20230907195655758

5.2工程重构(提取公共类)

  • 新建工程、改pom、提取公共类、maven命令(clean、install)、订单80和支付8081分别改造
(1)新建并改pom

image-20230907224220335

(2)打包并子工程引入

image-20230907225303268

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python 基础知识点(蓝桥杯python科目个人复习计划32)

今日复习内容&#xff1a;基础算法中的位运算 1.简介 位运算就是对二进制进行操作的运算方式&#xff0c;分为与运算&#xff0c;或运算&#xff0c;异或运算&#xff0c;取反&#xff0c;左移和右移。 &#xff08;1&#xff09;与运算 xyx&y000010100111 (2)或运算 …

用Python和 Cryptography库给你的文件加密解密

用Python和 Cryptography库给你的文件加密解密 用Python和 Cryptography库给你的文件加把安全锁。 先介绍与加密解密有关的几个基本概念。 加密&#xff08;Encryption&#xff09;&#xff1a;加密是将明文转换为密文的过程&#xff0c;使得未经授权的人无法读懂。 解密&a…

Sharding-JDBC之ComplexKeysShardingAlgorithm(复合分片算法)

目录 一、简介二、maven依赖三、数据库3.1、创建数据库3.2、创建表 四、配置&#xff08;二选一&#xff09;4.1、properties配置4.2、yml配置 五、复合分片算法六、实现6.1、实体层6.2、持久层6.3、服务层6.4、测试类6.4.2、根据时间范围查询订单 一、简介 实际工作中&#xf…

Flutter组件 StatefulWidget、StatelessWidget 可继承写法

前言 学过Java的同学&#xff0c;应该都知道面向对象语言的三大特征&#xff0c;封装、继承、多态&#xff1b; Dart也是面向对象的语言&#xff0c;但是在Flutter中的很多组件都被下划线 _ 标记为私有&#xff0c;导致无法继承&#xff0c;本文将介绍一种非私有的创建组件写…

Oracle 面试题 | 08.精选Oracle高频面试题

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

正则表达式可视化工具regex-vis

什么是正则表达式 &#xff1f; 正则表达式是对字符串操作的一种逻辑公式&#xff0c;就是用事先定义好的一些特定字符、及这些特定字符的组合&#xff0c;组成一个“规则字符串”&#xff0c;这个“规则字符串”用来表达对字符串的一种过滤逻辑。【百度百科】 正则表达式用简短…

idea中找到所有的TODO

idea中找到所有的TODO &#xff08;1&#xff09;快捷键 Alt6 &#xff08;2&#xff09;View -> Tool Windows -> TODO

RabbitMQ之三种队列之间的区别及如何选型

目录 不同队列之间的区别 Classic经典队列 Quorum仲裁队列 Stream流式队列 如何使用不同类型的队列​ Quorum队列 Stream队列 不同队列之间的区别 Classic经典队列 这是RabbitMQ最为经典的队列类型。在单机环境中&#xff0c;拥有比较高的消息可靠性。 经典队列可以选…

搜索引擎评价指标及指标间的关系

目录 二分类模型的评价指标准确率(Accuracy,ACC)精确率(Precision,P)——预测为正的样本召回率(Recall,R)——正样本注意事项 P和R的关系——成反比F值F1值F值和F1值的关系 ROC&#xff08;Receiver Operating Characteristic&#xff09;——衡量分类器性能的工具AUC&#xff…

Redis(十)SpringBoot集成Redis

文章目录 连接单机mvnYMLController.javaRedisConfig.java 连接集群YML问题复现 RedisTemplate方式 连接单机 mvn <!--Redis--> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</art…

量化交易学习4(投资组合基本认识)

1 如何衡量投资组合的收益率 1.1 投资组合收益率的计算方法 1.2 投资组合的绝对收益率和相对收益率 2 如何衡量投资组合的风险 2.1 风险的定义 风险是指在未来可能发生的不确定性事件所带来的潜在损失。 在投资领域中&#xff0c;风险通常指投资所面临的不确定性和潜在的损失…

《向量数据库指南》——Milvus Cloud半数使用问题是配置问题

“Milvus Cloud 配置用户名密码进行校验,需要怎么开启呢?” “这个服务通过 k8s 已经起来的,我在不想关闭他的情况下应该怎么修改配置文件呢?” “ etcd 如果独立部署的话,这块儿的配置有推荐的参考值吗?” Milvus Cloud 作为一个分布式向量数据库,除了自身有较多的…