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功能
- 环境准备
订单交易案例
调整项目案例环境
克隆项目
验证maven环境
-
观察
pom
内容,改掉maven中java11部分csmall-for-jsd-commons
maven编译变量值 java11
csmall-for-jsd-all
-
运行
maven compile
检查是否装配成功
数据库导入本地mysql
项目根目录 doc 下有个csmall_demo.sql
了解表格(不是真是业务的详细表格,抽取简化字段的表格)
cart_tbl:每一行都表示一个用户的购物车商品
id | commodity_code | price | count | user_id |
---|---|---|---|---|
购物车主键 | 商品编码(商品id) | 单价 | 购物车商品数量 | 用户id |
order_tbl:每行数据,都代表一个用户的订单
id | user_id | commodity_code | count | money |
---|---|---|---|---|
订单id | 用户id | 商品编码(商品id) | 购买数量 | 总计 |
stock_tbl:
id | commodity_code | count |
---|---|---|
商品id | 商品编码 | 库存数 |
核心业务
案例中涉及内容包括购物车,包括订单,包括库存,完整下单流程
- 用户浏览商品
- 看中商品添加购物车
- 去结算,引入订单信息页面
- 提交订单,验证库存,购物车商品删除
实现csmall-for-jsd-all纵向拆分
按照业务拆分,分为4个业务 business
,order
, cart
, stock
,但是拆分之后无法执行核心整体流程
csmall-for-jsd-order系统
- 创建项目
- 创建子项目
order-adapter
: 启动的web应用(springboot web应用)
order-service
:adapter
里业务实现ServiceImpl
对外暴露的接口,在这个项目包中的接口类,允许外界远程调用(dubbo用到的)
- 粘贴留选代码——
csmall-for-jsd-order-service
- 补充对应依赖——
csmall-for-jsd-order-service
<dependencies><dependency><groupId>cn.tedu.csmall.demo</groupId><artifactId>csmall-for-jsd-commons</artifactId></dependency>
</dependencies>
- 粘贴代码——
csmall-for-jsd-order-adapter
- 调整依赖
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
- 代码
之后同样将business
,cart
,stock
拆分
删除module(删除maven项目)
- 先删除
module
delete
删除磁盘文件,文件夹
右键项目 选择delete
- 创建项目的
module
标签要在父工程删除
idea记录maven忽略
删除某个maven
项目,在idea中可能会记录在maven
的忽略表中
导致重新创建项目的,pom
文件就是灰色的
pull远程解决冲突
建议: 点击merge
挨个查看
git对比功能
注意:不一样 不代表 就是有错
分支使用(同步代码)
思路: 不在master
跟代码,建立自己的分支,跟完当天代码,对比master
提交的最终版本
微服务
项目拆分最终细节调整
- 依赖关系是否正确(
pom
文件)
adapter
保留拆分功能,service
接口包(代码删除)
- 最终效果
- 不能运行(需要调用的业务本地没有实现类)
微服务概括
单体架构存在的问题,目前可以进行纵向拆分,但是依然有没解决的问题,远程调用
这种问题就是拆分之后出现的新问题(拆分的结构已经是一个分布式结构)
这种拆分的结果,每个独立运行的项目——微服务
-
微:小,可以拆分的更细致
-
服务: 可调用的功能
分布式:一件事(广义的),多个进程 / 节点 / 模块 完成。都叫做分布式
微服务结构,满足灵活扩展的,引出非常多问题,比如远程调用,比如调用失败的熔断,比如分布式事务等.
想要解决,引入微服务架构技术,比如Spring Cloud
/ Spring Cloud Alibaba
微服务框架
Spring Cloud
SpringCloud
是由Spring
提供的一套能够快速搭建微服务架构程序,解决分布式微服务架构中各种问题的的框架集.
框架集表示SpringCloud
不是一个框架,而是很多框架的集合,并不需要把所有内容都学完
Spring Cloud alibaba / Spring Cloud Netflix
在众多springcloud框架集中的微服务组件里,有2个知名的团队阿里巴巴和奈非,他们完成了一个微服务中需要用到的绝大多数组件的开发
本阶段学习的组件总结
nacos
: 注册中心 配置中心dubbo
: 远程调用 rpc 框架sentinel
: 熔断器,限流器rocketmq
: 异步通信队列spring cloud gateway
: 微服务网关
所有组件使用,整合到spring cloud
,spring cloud
出现是基于springboot
完成的.
使用学习的步骤,大三步
- 依赖
- 配置yaml
- 简单配置: 可能是配置类,可能是注解
注意: 只学习其中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
运行命令,添加一个选项,单机运行
bin> startup.cmd -m standalone
bin> startup.sh -m standalone
cmd运行程序有个坑: 卡主,选中cmd enter
回车
如果出现其他问题,一定是jdk版本问题
startup.cmd
拼接,判断最终运行了一个command
命令
查看nacos启动所有问题的日志文件
- 可访问的nacos控制台页面
访问localhost:8848/nacos
地址
通过登录用户名 密码(默认用户名和密码都是 nacos)