谷粒商城笔记

网上商城系统简介

微服务+分布式+全栈+集群+部署+自动化运维+可视化CICD
1.分布式基础 全栈开发
后端springboot + mybatis springcloud docker
前端vue.js + ElementUI ES6 Node.js:npm Babel Webpack
实现后台管理系统,提升全栈开发能力。
2.分布式高级 微服务架构
实现一整套商城业务逻辑(商品服务,秒杀,购物车,订单,库存),学习微服务开发的技术栈,提升项目架构能力
基础springboot + springcloud;搭配alibaba Nacos注册中心,配置中心;Sentinel实现流量保护,
网关,远程调用,链路追踪,缓存,session同步方案,全文检索,线程池,压力测试,调优,分布式锁
3.高可用集群 架构师提升
搭建k8s集群 一主两从(kubernetes),使用kubesphere一站式平台,将整个应用部署到k8s集群,
学习DevOPS技术栈,全套可视化CI/CD(持续集成,持续部署流程:开发者在github拉取代码打包成Docker镜像,)
集群技术:mysql集群,redis集群,RabbitMQ的镜像队列

Nacos:注册中心原理

Nacos注册中心分为server与client,server采用Java编写,为client提供注册发现服务与配置服务。而client可以用多语言实现,client与微服务嵌套在一起。服务注册的策略的是每5秒向nacos server发送一次心跳,心跳带上了服务名,服务ip,服务端口等信息。同时 nacos server也会向client 主动发起健康检查,支持tcp/http检查。如果15秒内无心跳且健康检查失败则认为实例不健康,如果30秒内健康检查失败则剔除实例。Server上采用了ConcurrentHashMap保存实例信息,如果服务配置了持久化,会被保存到数据库。配置中心原理:客户端发起长轮训请求,设置超时时间为30
S,服务端将该请求加入到一个叫allSubs的队列中,等待配置发生变更时由任务DataChangeTask 主动去触发;服务端采用事件订阅的方式来监听本地数据变化的事件,一旦收到事件,则触发DataChangeTask的通知,并且遍历allStubs队列中的ClientLongPolling,将变更后的数据写入响应对象,通过HTTP写回给客户端。
Feign远程调用:核心就是通过一系列的封装和处理,将以JAVA注解的方式定义的远程调用API接口,最终转换成HTTP的请求形式,然后将HTTP的请求的响应结果,解码成JAVA Bean,放回给调用者。Feign远程调用的基本流程,大致如下图所示。
在这里插入图片描述
从上图可以看到,Feign通过处理注解,将请求模板化,当实际调用的时候,传入参数,根据参数再应用到请求上,进而转化成真正的 Request 请求。通过Feign以及JAVA的动态代理机制,使得Java 开发人员,可以不用通过HTTP框架去封装HTTP请求报文的方式,完成远程服务的HTTP调用。

GateWay:

在这里插入图片描述

Gateway的客户端回向Spring Cloud Gateway发起请求,请求首先会被HttpWebHandlerAdapter进行提取组装成网关的上下文,然后网关的上下文会传递到DispatcherHandler。DispatcherHandler是所有请求的分发处理器,DispatcherHandler主要负责分发请求对应的处理器,比如将请求分发到对应RoutePredicateHandlerMapping(路由断言处理器映射器)。路由断言处理映射器主要用于路由的查找,以及找到路由后返回对应的FilteringWebHandler。FilteringWebHandler主要负责组装Filter链表并调用Filter执行一系列Filter处理,然后把请求转到后端对应的代理服务处理,处理完毕后,将Response返回到Gateway客户端。

在Filter链中,通过虚线分割Filter的原因是,过滤器可以在转发请求之前处理或者接收到被代理服务的返回结果之后处理。所有的Pre类型的Filter执行完毕之后,才会转发请求到被代理的服务处理。被代理的服务把所有请求完毕之后,才会执行Post类型的过滤器。

  1. 分布式基础

围绕后台管理系统,实现一整套增删改查逻辑,前后分离的方式实现商品系统,远程调用微服务功能

1 安装visualBox虚拟机,安装vagrant快速创建centos虚拟机环境 。虚拟机安装docker,docker安装mysql和redis。
2 配置vscode作为前端管理系统(Node.js的npm包管理工具),IDEA,配置maven,作为后端开发环境。
安装git-ssh,在gitee新建仓库gulimall
3 微服务:商品服务product,存储服务ware,订单服务order,优惠券服务coupon,用户服务member
4 数据库:课件提供了SQL语句,执行后生成表,没有数据,(数据库设计.pdm(表的设计),PowerDesigner打开)
5 根据数据库设计,使用逆向工程,为商品服务创建基本的增删改查代码,简化开发
码云gitee上下载renren-fast(后端),renren-fast-vue(前端)项目
(renren-fast脚手架工程把基本的要用的代码,一些表,权限设计都加上了,只需做少量修改)
1) renren-fast db中的mysql.sql,执行创建后台管理数据库gulimall-admin。修改application-dev.yml中的配置信息,数据库链接信息(地址,名称,用户名及密码)
2) renren-fast-vue,npm install下载依赖后打开
3) 因为renren-fast-vue前端项目默认配置了调用地址为localhost:8080,所以可以成功从我们刚才启动的renren-fast管理系统后端项目中拿到验证码信息。
4) renren-generator(代码生成器)
为每个微服务逆向生成代码, 修改application.yml, generator.properties配置,运行RenrenApplication
生成mybatis的mapper文件,controller, dao, entity, service全部生成&#

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值