微服务架构——笔记(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: 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 重启

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值