微服务架构——笔记(1)

微服务架构——笔记(1)

在这里插入图片描述
文章来源B站视频
尚硅谷SpringCloud框架开发教程(SpringCloudAlibaba微服务分布式架构丨Spring Cloud)教程

own process 独立部署
(1.微服务架构零基础理论)

叙述

马丁福勒 架构模式,倡导将单一应用程序划分为一组小的服务,服务之间相互协调,互相配合。每个服务在其独立的进程中,服务间采用轻量级的通信机制相相互协作(HTTPrestfulapi),应用根据业务上下层。

背景

生活箱包、平板电脑、智能家电、笔记本、手机

基于分布式的微服务架构
本次笔记为 此次项目的记录,便于整理思路,仅供参考,笔者也将会让程序更加完善
内容包括:1.支付模块、2.消费者订单模块、支付微服务入驻Eureka、Eureka集群…

一、SpringCloud

NetFlix 分布式微服务架构的一站式架构,

1.服务注册–配置中心管理、服务调用–服务网关、
2.服务熔断–服务监控、负载均衡–全链路追踪、
3.服务降级–自动化构建部署、
4.服务消息队列–服务定时任务调度操作

上:SpringBoot2.X 版本 和SpringCloud H版本 19 年后必须2.0

下:SpringCould Alibaba

(2.从2.2.x和H版本开始)

二、环境

熟读官方文档,推荐

cloud hoxton.sr1 mysql 5.7

boot 2.2.2 release cloud alibaba 2.1.0 release

java java8 mavan 3.5

(3.关于Cloud各组件的停更)

2.1项目创建

工程名字设置,英文在这里插入图片描述

2.2 环境更改

字符编码更改
在这里插入图片描述
注解激活
在这里插入图片描述
java8设置
在这里插入图片描述
文件过滤在这里插入图片描述

2.3 父pom.xml

Maven使用dependencyManagement元素提供管理依赖版本号的方式,通常在组织或项目的最顶层父pom中看到此元素。
能让所有子项目引用一个依赖而不用列出版本号,Maven会沿着父子层向上找到有dependencyManagement元素项目,使用这个版本号,先用父类再用子类。
聚合统一更改,一处更改不需要处处声明
version、scope都取自父类

2.4 application.yml

server:port: 8081spring:application:name: cloud-payment-servicedatasource:type: com.alibaba.druid.pool.DruidDataSource  #当前数据源操作类型driver-class-name: org.gjt.mm.mysql.Driver                 #mysql驱动包url: jdbc:mysql://localhost:3306/db2023?useUnicode=true&&characterEncoding=utf-8&useSSL=falseusername: rootpassword: tigermybatis:mapperLocations: classpath:mapper/*.xmltype-aliases-package: com.liangstar.springcloud.entities   #所有Entity别名类所在包

2.5 spring启动类

package com.liangstar.springcloud;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class PaymentMain8001 {public static void main(String[] args) {SpringApplication.run(PaymentMain8001.class,args);}
}

三、微服务架构编码构建

(4.微服务架构编码构建) 建module、改pom、写yml、主启动、业务类
在这里插入图片描述

以上在二、环境模块进行了:
1、项目的配置遵循(配置>环境>编码)、 版本、工程名字、utf-8、注解代替html文件、java8、环境
2、Rest微服务工程构建
3、技术架构:vue – | json | – controller - service - dao - mysql
CommonResult{200,success}

以下对程序业务类进行说明:
1.建表SQL、2.entities、3.dao、4.service、5.controller

3.1 数据库构建

create table 'payment'(
`id`bigint(20) not null auto_increment comment `id`,
`serial` varchar(200) default ``,
primary key(`id`)
)engint=innoDb auto_increment=1 default charset=utf8

3.2 创建entity

@Data   :注解在类上;提供类所有属性的 getting 和 setting 方法,此外还提供了equals、canEqual、hashCode、toString 方法
@Setter:注解在属性上;为属性提供 setting 方法
@Getter:注解在属性上;为属性提供 getting 方法
@Log4j :注解在类上;为类提供一个 属性名为log 的 log4j 日志对象
@NoArgsConstructor:注解在类上;为类提供一个无参的构造方法
@AllArgsConstructor:注解在类上;为类提供一个全参的构造方法

序列化分布式部署用的到

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Payment implements Serializable {private Long id;private String serial;
}

封装、泛型

public class CommonResult<T>{private Integer code;private String message;private T 	    data;public CommonResult(Integer code,String message){this.(code,message,null);}
}

3.3 创建dao

读操作写操作 接口

@Mapper
public interface PaymentDao {public int create(Payment payment);public Payment getPaymentId(@Param("id") Long id);}

在这里插入图片描述在这里插入图片描述

3.4 创建mapper

resource 下装配置文件,写映射mapper.xml
写落地实现类
在这里插入图片描述
数据库插入成功返回1,大于0则成功,所以create类型为int,
命名不规范,做一个字段映射baseresultMap
PaymentMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.liangstar.springcloud.dao.PaymentDao"><insert id="create" parameterType="Payment" useGeneratedKeys="true" keyProperty="id">insert into payment(serial) value (#{serial});</insert><resultMap id="BaseResultMap" type="com.liangstar.springcloud.entities.Payment"><id column="id" property="id" jdbcType="BIGINT"/><id column="serial" property="serial" jdbcType="VARCHAR"/></resultMap><select id="getPaymentId" parameterType="Long" resultMap="BaseResultMap">select * from payment where id = #{id};</select>
</mapper>

3.5 创建service

在这里插入图片描述

3.5.1 实现接口PaymentService
public interface PaymentService {public int create(Payment payment);public Payment getPaymentId(@Param("id") Long id);
}
3.5.2 实现类PaymentServiceImpl

在这里插入图片描述
@AutoWirte是spring的
@Resource是java的也可以实现依赖注入

@Service
public class PaymentServiceImpl implements PaymentService {@Resourceprivate PaymentDao paymentDao;public int create(Payment payment){return paymentDao.create(payment);}public Payment getPaymentId(Long id)1{return paymentDao.getPaymentId(id);}
}

3.5 创建controller

调用类、转发类
注解重写

@RestController
@Slf4j
public class PaymentController {@Resourceprivate PaymentService paymentService;@PostMapping(value = "/payment/create")public CommonResult create(Payment payment){int result = paymentService.create(payment);log.info("********插入结果"+result);if(result > 0){return new CommonResult(200,"插入数据库成功",result);}else{return new CommonResult(444,"插入数据库失败",null);}}@GetMapping(value = "/payment/get/{id}")public CommonResult getPaymentById(@PathVariable("id") Long id){Payment payment = paymentService.getPaymentId(id);log.info("********查询结果"+payment);if(payment != null){return new CommonResult(200,"查询成功",payment);}else{return new CommonResult(444,"没有对应记录,查询Id"+id,null);}}
}

四、运行测试

在这里插入图片描述
在这里插入图片描述

五、热部署devtools

代码更改自动重启
在这里插入图片描述

4.1 add devtools 添加工具

粘贴至子pom.xml中

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency>

4.2 add plugin to pom.xml 添加插件

粘贴至父pom.xml中

<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>

4.3 Enabling automatic build 自动构建

开启自动编译权限
在这里插入图片描述

4.4 update the value of 开启热注册

热键 :ctrl + shift + alt + /

在这里插入图片描述
在这里插入图片描述

4.5 重启

随着代码的更改,开发者可以不重启项目就可更改部署代码。
注:开发阶段需要热部署,生产阶段则不需要!

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

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

相关文章

图片批量归类:告别混乱,实现高效文件管理

在日常生活中&#xff0c;我们经常需要处理大量的图片文件。这些图片可能来自于不同的设备、不同的目录&#xff0c;甚至不同的存储介质。随着时间的推移&#xff0c;这些图片文件会越来越多&#xff0c;管理起来也会越来越困难。如何高效地整理这些图片文件&#xff0c;告别混…

Bytedance揭秘OpenAI大模型: GPT-3到GPT-4进化路径

文章目录 探秘GPT-3到GPT-4进化之路1、SFT&#xff1a;早期GPT进化的推动者2、RLHF和SFT&#xff1a;编码能力提升的功臣3、代码加入预训练&#xff0c;对推理帮助最大4、“跷跷板”现象 论文地址项目链接Reference GPT-Fathom: Benchmarking Large Language Models to Deciphe…

大数据毕业设计选题推荐-智慧小区大数据平台-Hadoop-Spark-Hive

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

差生文具多之(一)eBPF

前言 在问题排查过程中, 通常包含: 整体观测, 数据采集, 数据分析这几个阶段. 对于简单问题的排查, 可以跳过前两个步骤, 无需额外收集数据, 直接通过分析日志中的关键信息就可以定位根因; 而对于复杂问题的排查, 为了对应用的行为有更完整的了解, 可以通过以下形式收集更多的…

【MATLAB】基于灰狼优化算法优化BP神经网络 (GWO-BP)的数据回归预测

文章目录 效果一览文章概述订阅专栏只能获取一份代码部分源码参考资料效果一览 文章概述 【MATLAB】基于灰狼优化算法优化BP神经网络 (GWO-BP)的数据回归预测 在MATLAB中,基于灰狼优化算法优化BP神经网络(GWO-BP)进行数据回归预测的步骤如下: 数据准备:首先,将用于回归预…

深度学习_9_图片分类数据集

散装代码&#xff1a; import matplotlib.pyplot as plt import torch import torchvision from torch.utils import data from torchvision import transforms from d2l import torch as d2ld2l.use_svg_display()# 通过ToTensor实例将图像数据从PIL类型变换成32位浮点数格式…

城市内涝怎么预警?万宾科技内涝积水监测仪

在城市运行过程中&#xff0c;城市内涝问题频繁出现&#xff0c;影响城市管理水平的提升&#xff0c;也会进一步减缓城市基础设施建设。尤其近几年来&#xff0c;城市内涝灾害频繁出现&#xff0c;在沿海地区内涝所带来的安全隐患成为城市应急管理部门的心头大患。城市内涝的背…

Java 正则表达式分组匹配

前几篇文章都是简单判断是否满足匹配规则&#xff0c;当需要提取匹配结果时就用到分组匹配。 分组匹配 可以判断是否满足正则表达式&#xff0c;然后提取出子串。 有些时候电话号码是以 123-4567-8899 这样显示的&#xff0c;我们要判断某个字符串是这种形式的并分别提起三段…

从NetSuite Payment Link杂谈财务自动化、数字化转型

最近在进行信息化的理论学习&#xff0c;让我有机会跳开软件功能&#xff0c;用更加宏大的视野&#xff0c;来审视我们在哪里&#xff0c;我们要到哪去。 在过去20多年&#xff0c;我们的财务软件经历了电算化、网络化、目前处于自动化、智能化阶段。从NetSuite这几年的功能发…

【vue2高德地图api】04-poi搜索

系列文章目录 文章目录 系列文章目录前言一、高德地图文档入口二、使用步骤1.创建文件以及路由2.编写页面代码3.样式4变量以及方法5.编写查询方法 总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 本篇要实现的功能&#xff0c;看下图 提示&#x…

【从零开始学习Redis | 第五篇】基于布隆过滤器解决Redis的穿透问题

前言&#xff1a; 在如今的开发中&#xff0c;使用缓存中间件Redis已经成为一项很广泛的技术&#xff0c;Redis的高性能大大优化了我们的服务器性能&#xff0c;缓解了在高并发的情况下服务器的压力。它基于缓存的形式&#xff0c;在内存中保存数据&#xff0c;减少对磁盘的IO操…

制造行业数字化运维破局之道

项目背景 某大型汽车制造集团&#xff0c;致力于通过数字化、智能化运营手段为用户提升提供高品质的汽车产品和服务。IT部门不仅为内外部持续提供服务&#xff0c;同时为业务运营与核心系统运行提供重要支撑。数字化运维作为数字化转型的核心基础&#xff0c;不但要保障数据安…

网络编程 - HTTP协议

目录 HTTP协议格式 一&#xff0c;请求格式 1.1 URL的基本格式 1.2 方法(method) 1.3 请求头header 二&#xff0c;响应格式 2.1 状态码 HTTP协议格式 HTTP协议与之前讲的TCP/IP协议不同&#xff0c;HTTP协议要分为两个部分——请求和响应&#xff0c;也就是一种"一…

尚硅谷Docker基础篇和Dockerfile超详细整合笔记

Docker基础篇DockerFile Docker&#xff1a;您要如何确保应用能够在这些环境中运行和通过质量检测&#xff1f;并且在部署过程中不出现令人头疼的版本、配置问题&#xff0c;也无需重新编写代码和进行故障修复&#xff1f;而这个就是使用容器。Docker解决了运行环境和配置问题…

linux 创建git项目并提交到gitee(保姆式教程)

01、git安装与初始化设置 mhzzjmhzzj-virtual-machine:~/work/skynetStudy$ apt install mhzzjmhzzj-virtual-machine:~/work/skynetStudy$ git config --global user.name "用户名" mhzzjmhzzj-virtual-machine:~/work/skynetStudy$ git config --global user.ema…

Java 8 新特性 Stream 的使用场景(不定期更新)

方便在写代码的过程中直接使用&#xff0c;好记性不如好文章&#xff0c;直接 CV 改了直接用。提高 办&#xff08;摸&#xff09;公&#xff08;鱼&#xff09;效&#xff08;时&#xff09;率&#xff08;间&#xff09;&#xff0c; 不然就直接问 GPT 也不是说不行。 只符合…

操作系统学习与思考

x86体系架构 x86是因特尔8086代芯片的CPU总线位数以及寄存器种类的规范&#xff0c;大部分操作系统都是以该规范作为基准来生产的 计算机组成 CPU&#xff0c;可以根据程序计数器进行取指令操作&#xff0c;并根据指令执行运算&#xff08;加、减、乘、除&#xff09;。运算所…

【hcie-cloud】【1】华为云Stack解决方案介绍、华为文档获取方式 【上】

文章目录 华为文档获取方式前言云计算发展背景国家政策、社会发展驱动数字经济开启新时代深化数字化转型提升效率&#xff0c;国家数字主权云进入落地阶段从Cloud-Based到Cloud-Native&#xff0c;两种模式长期并存适合政企智能升级的云华为云Stack&#xff0c;政企智能升级首选…

MySQL InnoDB数据存储结构

1. 数据库的存储结构&#xff1a;页 索引结构给我们提供了高效的索引方式&#xff0c;不过索引信息以及数据记录都是保存在文件上的&#xff0c;确切说是存储在页结构中。另一方面&#xff0c;索引是在存储引擎中实现的&#xff0c;MySQL服务器上的存储引擎负责对表中数据的读…