Java阶段五Day04

Java阶段五Day04

文章目录

  • Java阶段五Day04
    • 订单交易案例
      • 调整项目案例环境
        • 克隆项目
        • 验证maven环境
        • 数据库导入本地mysql
        • 核心业务
      • 实现csmall-for-jsd-all纵向拆分
        • csmall-for-jsd-order系统
      • 删除module(删除maven项目)
      • idea记录maven忽略
      • pull远程解决冲突
      • git对比功能
      • 分支使用(同步代码)
    • 微服务
      • 项目拆分最终细节调整
      • 微服务概括
    • 微服务框架
      • Spring Cloud
      • Spring Cloud alibaba / Spring Cloud Netflix
      • 本阶段学习的组件总结
    • Nacos
      • Nacos介绍
      • Nacos功能
      • 环境准备

订单交易案例

调整项目案例环境

克隆项目

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0gfDVi8p-1689158324585)(assets/image-20230711140827401.png)]

验证maven环境

  • 观察pom内容,改掉maven中java11部分

    • csmall-for-jsd-commons maven编译变量值 java11

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bayWMQU4-1689158324586)(assets/image-20230711141124647.png)]

    • csmall-for-jsd-all

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4ckQ7GqK-1689158324586)(assets/image-20230711141316473.png)]

  • 运行maven compile检查是否装配成功

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Xq7MRqus-1689158324587)(assets/image-20230711141955733.png)]

数据库导入本地mysql

项目根目录 doc 下有个csmall_demo.sql

了解表格(不是真是业务的详细表格,抽取简化字段的表格)

cart_tbl:每一行都表示一个用户的购物车商品

idcommodity_codepricecountuser_id
购物车主键商品编码(商品id)单价购物车商品数量用户id

order_tbl:每行数据,都代表一个用户的订单

iduser_idcommodity_codecountmoney
订单id用户id商品编码(商品id)购买数量总计

stock_tbl

idcommodity_codecount
商品id商品编码库存数

核心业务

案例中涉及内容包括购物车,包括订单,包括库存,完整下单流程

  1. 用户浏览商品
  2. 看中商品添加购物车
  3. 去结算,引入订单信息页面
  4. 提交订单,验证库存,购物车商品删除

实现csmall-for-jsd-all纵向拆分

按照业务拆分,分为4个业务 businessordercartstock,但是拆分之后无法执行核心整体流程

csmall-for-jsd-order系统

  • 创建项目

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pf5Jhuut-1689158692417)(assets/image-20230711165407767.png)]

  • 创建子项目

order-adapter: 启动的web应用(springboot web应用)

order-serviceadapter里业务实现ServiceImpl 对外暴露的接口,在这个项目包中的接口类,允许外界远程调用(dubbo用到的)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N8DpAqDH-1689158692417)(assets/image-20230711172035752.png)]

  • 粘贴留选代码——csmall-for-jsd-order-service

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4T7t8Wcr-1689158692418)(assets/image-20230711172248294.png)]

  • 补充对应依赖——csmall-for-jsd-order-service

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VjJCrff9-1689158692418)(assets/image-20230711172356025.png)]

<dependencies><dependency><groupId>cn.tedu.csmall.demo</groupId><artifactId>csmall-for-jsd-commons</artifactId></dependency>
</dependencies>
  • 粘贴代码——csmall-for-jsd-order-adapter

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rSDaBWP7-1689158692419)(assets/image-20230711172721906.png)]

  • 调整依赖csmall-for-jsd-order-adapter
    • spring-boot-starter-web
    • mysql-connector-java
    • mybatis-spring-boot-starter
    • csmall-for-jsd-order-service
  • 删除代码,只保留订单业务功能和通用配置
    • 代码Knife4j保留,mybatis扫描配置保留
    • controller 只保留 order 相关
    • service 只保留 order 相关
    • mapper只保留 order 相关
    • 启动类修改名字
    • 配置yaml修改端口 20001~20004

之后同样将businesscartstock 拆分

删除module(删除maven项目)

  1. 先删除module

  1. delete删除磁盘文件,文件夹

​ 右键项目 选择delete

  1. 创建项目的module标签要在父工程删除

idea记录maven忽略

删除某个maven项目,在idea中可能会记录在maven的忽略表中

导致重新创建项目的,pom文件就是灰色的

pull远程解决冲突

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1AMRlOmm-1689157130085)(E:/TeduWork/notes-2303/%25E8%25AF%25BE%25E5%25A0%2582%25E7%25AC%2594%25E8%25AE%25B0/Day04/assets/image-20230712142407467.png)]

建议: 点击merge 挨个查看

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Cf9stIxG-1689157130086)(E:/TeduWork/notes-2303/%25E8%25AF%25BE%25E5%25A0%2582%25E7%25AC%2594%25E8%25AE%25B0/Day04/assets/image-20230712142721906.png)]

git对比功能

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-giOM5q9z-1689157130087)(E:/TeduWork/notes-2303/%25E8%25AF%25BE%25E5%25A0%2582%25E7%25AC%2594%25E8%25AE%25B0/Day04/assets/image-20230712143600630.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ydshQrN6-1689157130087)(E:/TeduWork/notes-2303/%25E8%25AF%25BE%25E5%25A0%2582%25E7%25AC%2594%25E8%25AE%25B0/Day04/assets/image-20230712143624543.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cOaxmz0L-1689157130088)(E:/TeduWork/notes-2303/%25E8%25AF%25BE%25E5%25A0%2582%25E7%25AC%2594%25E8%25AE%25B0/Day04/assets/image-20230712143722031.png)]

注意:不一样 不代表 就是有错

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ryVEfYvZ-1689157130088)(E:/TeduWork/notes-2303/%25E8%25AF%25BE%25E5%25A0%2582%25E7%25AC%2594%25E8%25AE%25B0/Day04/assets/image-20230712143931509.png)]

分支使用(同步代码)

思路: 不在master跟代码,建立自己的分支,跟完当天代码,对比master提交的最终版本

微服务

项目拆分最终细节调整

  • 依赖关系是否正确(pom文件)

  • adapter保留拆分功能,service接口包(代码删除)

  • 最终效果
    • 不能运行(需要调用的业务本地没有实现类)

微服务概括

单体架构存在的问题,目前可以进行纵向拆分,但是依然有没解决的问题,远程调用

这种问题就是拆分之后出现的新问题(拆分的结构已经是一个分布式结构)

这种拆分的结果,每个独立运行的项目——微服务

  • 微:小,可以拆分的更细致

  • 服务: 可调用的功能

分布式:一件事(广义的),多个进程 / 节点 / 模块 完成。都叫做分布式

微服务结构,满足灵活扩展的,引出非常多问题,比如远程调用,比如调用失败的熔断,比如分布式事务等.

想要解决,引入微服务架构技术,比如Spring Cloud / Spring Cloud Alibaba

微服务框架

Spring Cloud

SpringCloud是由Spring提供的一套能够快速搭建微服务架构程序,解决分布式微服务架构中各种问题的的框架集.

框架集表示SpringCloud不是一个框架,而是很多框架的集合,并不需要把所有内容都学完

Spring Cloud alibaba / Spring Cloud Netflix

在众多springcloud框架集中的微服务组件里,有2个知名的团队阿里巴巴和奈非,他们完成了一个微服务中需要用到的绝大多数组件的开发

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YEG9E3Ek-1689157130089)(E:/TeduWork/notes-2303/%25E8%25AF%25BE%25E5%25A0%2582%25E7%25AC%2594%25E8%25AE%25B0/Day04/assets/image-20230712163928474.png)]

本阶段学习的组件总结

  • nacos: 注册中心 配置中心
  • dubbo: 远程调用 rpc 框架
  • sentinel: 熔断器,限流器
  • rocketmq: 异步通信队列
  • spring cloud gateway: 微服务网关

所有组件使用,整合到spring cloudspring cloud出现是基于springboot完成的.

使用学习的步骤,大三步

  1. 依赖
  2. 配置yaml
  3. 简单配置: 可能是配置类,可能是注解

注意: 只学习其中1-2个,没有全学完,有可能不能完成一个完整的微服务架构的

Nacos

Nacos介绍

Nacos官网文档地址

缩写就是 (Naming Configuration service),本身nacos就是一个service服务,这个服务的功能包括命名管理,服务注册发现配置管理

Nacos 致力于帮助您发现配置管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。
Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。
和spring cloud原生组件eureka是非常类似的,所以在eureka停更之后,nacos的活跃度非常高,无论从应用还是性能都是首选替代品。

Nacos功能

  • 服务治理
    • 注册功能
    • 发现功能
  • 配置管理

环境准备

  • 安装包(课前资料)

将这个安装包解压到没有中文,没有空格的路径中.

  • 运行nacos-server服务端

如果提示没有JAVA_HOME环境变量,制作一个

进入到nacos家目录中bin文件夹下,打开cmd

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xHI1OHst-1689157130090)(E:/TeduWork/notes-2303/%25E8%25AF%25BE%25E5%25A0%2582%25E7%25AC%2594%25E8%25AE%25B0/Day04/assets/image-20230712170125433.png)]

运行命令,添加一个选项,单机运行

bin> startup.cmd -m standalone
bin> startup.sh -m standalone

cmd运行程序有个坑: 卡主,选中cmd enter回车

如果出现其他问题,一定是jdk版本问题

startup.cmd 拼接,判断最终运行了一个command命令

查看nacos启动所有问题的日志文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oHchQX7z-1689157130091)(E:/TeduWork/notes-2303/%25E8%25AF%25BE%25E5%25A0%2582%25E7%25AC%2594%25E8%25AE%25B0/Day04/assets/image-20230712174111836.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cGMXcNUh-1689157130092)(E:/TeduWork/notes-2303/%25E8%25AF%25BE%25E5%25A0%2582%25E7%25AC%2594%25E8%25AE%25B0/Day04/assets/image-20230712175137980.png)]

  • 可访问的nacos控制台页面

访问localhost:8848/nacos地址

通过登录用户名 密码(默认用户名和密码都是 nacos)

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

Windows操纵kafka

这里写目录标题 启动kafk创建一个测试主题查看所有主题查看first详细信息修改分区数(分区数只能增加 不能减少)删除主题生产者生产数据消费命令 启动kafk 安装目录下 .\bin\windows\kafka-server-start.bat .\config\server.properties创建一个测试主题 安装目录下 .\bin\wi…

详解LeafLet中如何展示GeoServer发布的图层组

目录 前言 一、关于图层组 1、使用图层图组的好处 2、创建图层组 二、在Leaflet中展示图层组 1、新建Html模板框架 2、绑定地图map和底图设置 3、绑定图层组 总结 前言 在之前的博文中&#xff0c;曾经重点介绍如何使用LeafLet叠加Geoserver wms图层到已有底图的方法 ,…

【Spring | 资源处理】

Resource Resource 接口介绍核心方法常见接口优缺点 内置Resource实现UrlResourceClassPathResourceFileSystemResourcePathResourceServletContextResourceInputStreamResourceByteArrayResource Resource 接口 不幸的是&#xff0c;Java的标准Java.net.URL类和各种URL前缀的标…

Go实现socks5服务器

SOCKS5 是一个代理协议&#xff0c;它在使用TCP/IP协议通讯的前端机器和服务器机器之间扮演一个中介角色&#xff0c;使得内部网中的前端机器变得能够访问Internet网中的服务器&#xff0c;或者使通讯更加安全。SOCKS5 服务器通过将前端发来的请求转发给真正的目标服务器&#…

Web3 智能合约通过数组方式存储更多学生数据

之前的文章 Web3 在Truffle项目中编写出自己的第一个solidity智能合约带大家写了一个相对捡漏的智能合约 这样 每次 我们set 后 都会将原来的数据覆盖掉了 那么 有些人可能会想 那我们弄个数组 将新的数据全部加到数组里不就行了吗&#xff1f; 这个想法其实就很不错 我们可以…

智能汽车的主动悬架工作原理详述

摘要&#xff1a; 本文将详细介绍主动悬架功能原理设计。 主动悬架是车辆上的一种汽车悬架。它使用车载系统来控制车轮相对于底盘或车身的垂直运动&#xff0c;而不是由大弹簧提供的被动悬架&#xff0c;后者的运动完全由路面决定。主动悬架分为两类&#xff1a;真正的主动悬架…

OpenCV 入门教程:轮廓特征和轮廓匹配

OpenCV 入门教程&#xff1a;轮廓特征和轮廓匹配 导语一、轮廓特征二、轮廓匹配三、示例应用3.1 目标识别3.2 形状分析 总结 导语 轮廓特征和轮廓匹配是图像处理中用于描述和比较轮廓的技术。通过提取轮廓的形状、面积、周长等特征&#xff0c;并进行比较和匹配&#xff0c;我…

Android 系统的分区介绍

由于Android系统采用Linux架构&#xff0c;所以Android的系统分区可以类比同样采用Linux架构的操作系统&#xff08;如Windows&#xff09;。 Android系统分区分类 现在一般常见的Android分区方式共有三种&#xff0c;在不同的Android系统版本上会采用不同的分区方式。 1、传…

应用级监控方案Spring Boot Admin

1.简介 Spring Boot Admin为项目常用的监控方式&#xff0c;可以动态的监控服务是否运行和运行的参数&#xff0c;如类的调用情况、流量等。其中分为server与client&#xff1a; server&#xff1a; 提供展示UI与监控服务。client&#xff1a;加入server&#xff0c;被监控的…

遥感云大数据在灾害、水体与湿地领域案例实践及GPT【洪涝灾害、洪水敏感性和风险模拟、河道轮廓监测、地下水变化、红树林遥感制图】

近年来遥感技术得到了突飞猛进的发展&#xff0c;航天、航空、临近空间等多遥感平台不断增加&#xff0c;数据的空间、时间、光谱分辨率不断提高&#xff0c;数据量猛增&#xff0c;遥感数据已经越来越具有大数据特征。遥感大数据的出现为相关研究提供了前所未有的机遇&#xf…

换零钱II:Python代码解Java题目

银行现存零钱面值种类动态变化但数量无限&#xff0c;类方法change()完成指定金额的最少零钱个数兑换。 (本笔记适合学透python基本数据结构&#xff0c;熟悉class的基构造&#xff0c;对类内全局变量有一定认的 coder 翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1…

从CPU缓存结构到原子操作

文章目录 一、CPU缓存结构1.1 CPU的多级缓存1.2 Cache Line 二、写回策略三、缓存一致性问题及解决方案3.1 缓存一致性问题3.2 解决方案3.2.1 总线嗅探3.2.2 事务的串行化3.2.3 MESI 四、原子操作4.1 什么是原子操作4.2 c 标准库的原子类型4.2.1 atomic<T\>4.2.2 is_lock…