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

news2025/4/12 14:49:01

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

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

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

叙述

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

背景

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

基于分布式的微服务架构

一、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: 8081

spring:
  application:
    name: cloud-payment-service
  datasource:
    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=false
    username: root
    password: tiger

mybatis:
  mapperLocations: classpath:mapper/*.xml
  type-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 {
    @Resource
    private 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 {
    @Resource
    private 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.coloradmin.cn/o/1156401.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

javaEE -13(6000字CSS入门级教程 - 2)

一&#xff1a;Chrome 调试工具 – 查看 CSS 属性 首先打开浏览器&#xff0c;接着有两种方式可以打开 Chrome 调试工具 直接按 F12 键鼠标右键页面 > 检查元素 点开检查即可 标签页含义&#xff1a; elements 查看标签结构console 查看控制台source 查看源码断点调试ne…

resource manager OCB structure(iofunc_ocb_t) 扩展实例

文章目录 前言一、OCB structure(iofunc_ocb_t) 是什么二、OCB structure(iofunc_ocb_t) 扩展实例1.OCB structure(iofunc_ocb_t) 扩展后的使用实例总结参考资料前言 本文主要介绍如何对qnx系统下的resource manager OCB structure(iofunc_ocb_t) 数据结构进行扩展 软件环境:…

C#__委托delegate

委托存储的是函数的引用&#xff08;把某个函数赋值给一个委托类型的变量&#xff0c;这样的话这个变量就可以当成这个函数来进行使用了&#xff09; 委托类型跟整型类型、浮点型类型一样&#xff0c;也是一种类型&#xff0c;是一种存储函数引用的类型 using System.Reflec…

【MATLAB第81期】基于MATLAB的LSTM长短期记忆网络预测模型时间滞后解决思路(更新中)

【MATLAB第81期】基于MATLAB的LSTM长短期记忆网络预测模型时间滞后解决思路&#xff08;更新中&#xff09; 在LSTM预测过程中&#xff0c;极易出现时间滞后&#xff0c;类似于下图&#xff0c;与一个以上的样本点结果错位&#xff0c;产生滞后的效果。 在建模过程中&#xf…

torch.div()不支持round_mode参数

问题怎么定位的呢&#xff0c;把报错信息一股脑甩给chatgpt&#xff0c;问他什么意思&#xff0c;他就反馈说“在标准的Python库中&#xff0c;div() 函数不接受 rounding_mode 参数。”&#xff08;虽然这个问题也不难&#xff0c;但是改偷的懒还是要偷&#xff09; 问题再现…

reactive与ref VCA

简介 Vue3 最大的一个变动应该就是推出了 CompositionAPI&#xff0c;可以说它受ReactHook 启发而来&#xff1b;它我们编写逻辑更灵活&#xff0c;便于提取公共逻辑&#xff0c;代码的复用率得到了提高&#xff0c;也不用再使用 mixin 担心命名冲突的问题。 ref 与 reactive…

虚函数表(图文详解)

虚函数表 1. 单继承和多继承关系的虚函数表1.1 单继承中的虚函数表1.2 多继承中的虚函数表1.3 菱形继承、菱形虚拟继承 2. 继承和多态常见的面试问题2.1 概念查考2.2 问答题 1. 单继承和多继承关系的虚函数表 需要注意的是在单继承和多继承关系中&#xff0c;下面我们去关注的是…

聊聊宿主机管理

2020年&#xff0c;机器上线需要在八个服务间反复横跳&#xff0c;而且全程手动操作。伴随滴滴业务规模上云&#xff0c;弹性云新增大量物理机&#xff0c;上线操作至少有百次&#xff0c;这时暴露了一个问题&#xff1a;如果按这个速度上线机器&#xff0c;需要大量人力投入到…

罢工效应,韩电池业在美建厂面临挑战 | 百能云芯

美国汽车行业的罢工事件仍在持续&#xff0c;对于远在数千公里之外的韩国电池制造商来说&#xff0c;这引发了不小的担忧&#xff0c;他们担心生产成本会因此大幅上升。 据彭博资讯报道&#xff0c;韩国电池制造商LG新能源、SK On和三星SDI&#xff0c;已与美国的三家汽车制造巨…

Apache ActiveMQ 远程代码执行漏洞复现(CNVD-2023-69477)

Apache ActiveMQ 远程代码执行RCE漏洞复现&#xff08;CNVD-2023-69477&#xff09; 上周爆出来的漏洞&#xff0c;正好做一下漏洞复现&#xff0c;记录一下 1.漏洞描述 ​ Apache ActiveMQ 中存在远程代码执行漏洞&#xff0c;具有 Apache ActiveMQ 服务器TCP端口&#xff…

kotlin中集合操作符

集合操作符 1.总数操作符 any —— 判断集合中 是否有满足条件 的元素&#xff1b; all —— 判断集合中的元素 是否都满足条件&#xff1b; none —— 判断集合中是否 都不满足条件&#xff0c;是则返回true&#xff1b; count —— 查询集合中 满足条件 的 元素个数&#x…

案例分析真题-质量属性

案例分析真题-质量属性 2009 年真题 【问题1】 【问题2】 2011 年真题 【问题1】 骚戴理解&#xff1a;首先要知道这样的题目没有可靠性&#xff0c;只有可用性&#xff0c;更没有容错性&#xff0c;这里我&#xff08;3&#xff09;写成了i&#xff0c;而不是f&#xff0c;仔…

git 权限报错处理(亲测可行)

错误信息“Please make sure you have the correct access rights and the repository exists. fatal: clone of gitgithub.com:wechat-miniprogram/awesome-skyline.git into submodule path C:/Tencent/miniprogram-demo/miniprogram/packageSkylineExamples failed Failed t…

Qt 项目实战 | 俄罗斯方块

Qt 项目实战 | 俄罗斯方块 Qt 项目实战 | 俄罗斯方块游戏架构实现游戏逻辑游戏流程实现基本游戏功能设计小方块设计方块组添加游戏场景添加主函数 测试踩坑点1&#xff1a;rotate 失效踩坑点2&#xff1a;items 方法报错踩坑点3&#xff1a;setCodecForTr 失效踩坑点4&#xff…

界面控件DevExpress WPF Gauge组件 - 轻松实现个性化商业仪表盘

DevExpress WPF Gauge&#xff08;仪表&#xff09;控件包含了多种圆形仪表类型、水平和垂直线性仪表、分段和矩阵数字仪表以及状态指示器&#xff0c;同时还具有最终用户交互性的集成支持。 P.S&#xff1a;DevExpress WPF拥有120个控件和库&#xff0c;将帮助您交付满足甚至…

Intel oneAPI笔记--oneAPI简介、SYCL编程简介

oneAPI简介 Intel oneAPI是Intel提供的统一编程模型和软件开发框架。 它旨在简化可充分利用英特尔各种硬件架构&#xff08;包括 CPU、GPU 和 FPGA&#xff09;的应用程序的开发 oneAPI一个重要的特性是开放性&#xff0c;支持多种类型的架构和不同的硬件供应商&#xff0c;是…

RK3588编译MXNet框架

目录 1. 背景 2.编译MXNet准备 3.开发板编译 1. 背景 MXNet&#xff08;也称为Apache MXNet或incubator-mxnet&#xff09;是一个开源的深度学习框架&#xff0c;它最初由华为和亚马逊AWS共同开发&#xff0c;并于2017年成为Apache软件基金会的孵化项目。MXNet旨在提供高效、…

DAY40 343. 整数拆分 + 96. 不同的二叉搜索树

343. 整数拆分 题目要求&#xff1a;给定一个正整数 n&#xff0c;将其拆分为至少两个正整数的和&#xff0c;并使这些整数的乘积最大化。 返回你可以获得的最大乘积。 示例 1: 输入: 2输出: 1解释: 2 1 1, 1 1 1。 示例 2: 输入: 10输出: 36解释: 10 3 3 4, 3 3 …

从 Seq2Seq 到 Attention:彻底改变序列建模

探究Attention机制和意力的起源。 简介 在这篇博文[1]中&#xff0c;将讨论注意力机制的起源&#xff0c;然后介绍第一篇将注意力用于神经机器翻译的论文。由于上下文压缩、短期记忆限制和偏差&#xff0c;具有 2 个 RNN 的 Seq2Seq 模型失败了。该模型的 BLEU 分数随着序列长度…

如何用ChatGPT进行“论文翻译+润色”?

2024年申报国自然项目基金撰写及技巧最新基于Citespace、vosviewer、R语言的文献计量学可视化分析技术及全流程文献可视化SCI论文高效写作方法 GPT引领前沿与应用突破之GPT4科研实践技术与AI绘图 不夸张说&#xff0c;只要调教好咒语&#xff0c;就必然会形成一场论文翻译润色…