【谷粒商城】全网最全笔记(1/4)

  • gitee个人代码:https://gitee.com/HanFerm/gulimall

  • 笔记-基础篇-1(P1-P28):https://blog.csdn.net/hancoder/article/details/106922139

  • 笔记-基础篇-2(P28-P100):https://blog.csdn.net/hancoder/article/details/107612619

  • 笔记-高级篇(P340):https://blog.csdn.net/hancoder/article/details/107612746

  • 笔记-vue:https://blog.csdn.net/hancoder/article/details/107007605

  • 笔记-elastic search、上架、检索:https://blog.csdn.net/hancoder/article/details/113922398

  • 笔记-认证服务:https://blog.csdn.net/hancoder/article/details/114242184

  • 笔记-分布式锁与缓存:https://blog.csdn.net/hancoder/article/details/114004280

  • 笔记-集群篇:https://blog.csdn.net/hancoder/article/details/107612802

  • k8s、devOps专栏:https://blog.csdn.net/hancoder/category_11140481.html

  • springcloud笔记:https://blog.csdn.net/hancoder/article/details/109063671

  • 笔记版本说明:2020年提供过笔记文档,但只有P1-P50的内容,2021年整理了P340的内容。请点击标题下面分栏查看系列笔记

  • 声明:

    • 可以白嫖,但请勿转载发布,笔记手打不易
    • 本系列笔记不断迭代优化,csdn:hancoder上是最新版内容,10W字都是在csdn免费开放观看的。
    • 离线md笔记文件获取方式见文末。2021-3版本的md笔记打完压缩包共500k(云图床),包括本项目笔记,还有cloud、docker、mybatis-plus、rabbitMQ等个人相关笔记
  • 本项目其他笔记见专栏:https://blog.csdn.net/hancoder/category_10822407.html

本篇1.5W字,请直接ctrl+F搜索内容

一、项目简介

如何快速开发此项目

最好的方式当然是手敲代码了,但是对于大多数人来说100多小时的视频时长,加上手敲代码,得1个月起步了。

所以我推荐你可以构建自己的项目,但一定要下载别人的项目,选择性 复制里面的文件,因为有挺多东西手敲其实有点费时。

原则是文件是自己创建出来的,不要选择性操作项目,很容易运行不起来

如果你还想更快,直接用别人的vue前段项目吧,但java项目还是得自己搭建

一定要对每个操作的目的了如指掌

另外本项目适合人群:学过ssm是必须的。

项目里有mybatis-plus和springcloud的内容,你可以用本项目来做实践,也可以利用本项目初识cloud,但最好还是对微服务有一定了解。

sql:https://github.com/FermHan/gulimall

打赏码与离线markdown笔记个人邮箱在文尾

二、分布式基础概念

集群是个物理形态,分布式是个工作方式。

远程调用:在分布式系统中,各个服务可能处于不同主机,但是服务之间不可避免的相互调用,我们成为远程调用

springcloud中使用HTTP+JSON的方式完成远程调用

服务注册/发现&注册中心

A服务调用B服务,A服务并不知道B服务当前在哪几台服务器有,那些是正常的,那些服务已经下线。解决这个问题可以引入注册中心。

配置中心用来几种管理微服务的配置信息。

服务熔断&服务降级

在微服务架构中,微服务之间通过网络进行通信,存在相互依赖,当其中一个服务不可用时,有可能会造成雪崩效应。要防止这样的情况,必须要有容错机制来保护服务。

rpc远程调用情景:

订单服务 –> 商品服务 –> 库存服务

库存服务出现故障导致响应慢,导致商品服务需要等待,可能等到10s后库存服务才能响应。库存服务的不可用导致商品服务阻塞,商品服务等的期间,订单服务也处于阻塞。一个服务不可用导致整个服务链都阻塞。如果是高并发,第一个请求调用后阻塞10s得不到结果,第二个请求直接阻塞10s。更多的请求进来导致请求积压,全部阻塞,最终服务器的资源耗尽。导致雪崩

解决方案:

1 服务熔断

指定超时时间,库存服务3s没有响应就超时,如果经常失败,比如10s内100个请求都失败了。开启断路保护机制,下一次请求进来不调用库存服务了,因为上一次100%错误都出现了,我们直接在此中断,商品服务直接返回,返回一些默认数据或者null,而不调用库存服务了,这样就不会导致请求积压

  • 设置服务的超时,当被调用的服务经常失败到达某个阈值,我们可以开启断路保护机制,后来的请求不再去调用这个服务。本地直接返回默认的数据

2 服务降级

  • 在运维期间,当系统处于高峰期,系统资源紧张,我们可以让非核心业务降级运行。降级:某些服务不处理,或者处理简单【抛异常、返回NULL、调用Mock数据、调用Fallback处理逻辑】

API网关

客户端发送请求到服务器路途中,设置一个网关,请求都先到达网关,网关对请求进行统一认证(合法非法)和处理等操作。他是安检。

在微服务架构中,API gateway作为整体架构的重要组件,它抽象了微服务中都需要的公共功能,同时提供了客户端负载均衡,服务自动熔断,灰度发布,统一认证,限流流控,日志统计等丰富的功能,帮助我们解决很多API管理难题。

【谷粒商城】全网最全笔记(1/4)

反映了需要创建的微服务以及相关技术。

前后分离开发。前端项目分为admin-vue(工作人员使用的后台管理系统)、shop-vue(面向公众访问的web网站)、app(公众)、小程序(公众)

  • 商品服务:商品的增删改查、商品的上下架、商品详情
  • 支付服务
  • 优惠服务
  • 用户服务:用户的个人中心、收货地址
  • 仓储服务:商品的库存
  • 秒杀服务:定时任务与redis
  • 订单服务:订单增删改查、验价、幂等性token
  • 检索服务:商品的检索ES
  • 中央认证服务:登录、注册、单点登录、社交登录
  • 购物车服务:redis
  • 后台管理系统:添加优惠信息等

三、linux环境搭建

visualBox进行安装需要cpu开启虚拟化,在开机启动的时候设置主板,CPU configuration,然后点击Intel Vitualization Technology。重启电脑

普通安装linux虚拟机太麻烦,可以利用vagrant可以帮助我们快速地创建一个虚拟机。主要装了vitualbox,vagrant可以帮助我们快速创建出一个虚拟机。他有一个镜像仓库。

去https://www.vagrantup.com/ 下载vagrant安装,安装后重启系统。cmd中输入vagrant有版本代表成功了。

输入,即可初始化一个centos7系统。(注意这个命令在哪个目录下执行的,他的Vagrantfile就生成在哪里)

启动虚拟机环境。

启动后出现default folder:/cygdrive/c/User/… =>/vagrant。然后ctrl+c退出

前面的页面中有ssh账号信息。 就会连上虚拟机。可以使用exit退出

下次使用也可以直接vagrant up直接启动,但要确保当前目录在C:/用户/ 文件夹下,他下面有一个,不过我们也可以配置环境变量。

启动后再次连上即可

不过他使用的网络方式是网络地址转换NAT(端口转发),如果其他主机要访问虚拟机,必须由windows端口如3333断发给虚拟机端口如3306。这样每在linux里安一个软件都要进行端口映射,不方便,(也可以在virualBox里挨个设置)。我们想要给虚拟机一个固定的ip地址,windows和虚拟机可以互相ping通。

visualBox的网络模式可以参考:https://mp.weixin.qq.com/s_biz=MzI5MDg4ODEzOA==&mid=2247488277&idx=1&sn=012c33bec2984a61850b30b1bb270812&scene=21#wechat_redirect

  • 方式1是在虚拟机中配置静态ip。

  • 方式2:更改Vagrantfile更改虚拟机ip,修改其中的,这个ip需要在windows的ipconfig中查到vitualbox的虚拟网卡ip,然后更改下最后一个数字就行(不能是1,1是我们的主机)。配置完后vagrant reload重启虚拟机。在虚拟机中就可以查看到地址了。互相ping也能ping通。

  • 关掉防火墙,VirualBox中第一个网卡设置NAT,第二个网卡设置仅主机

  • 如果ping不了baidu

    • cd /etc/sysconfig/network-scripts

    • ls 一般有ifcfg-eth0 1

    • ip addr 看哪个网格是192.168.56网段,然后vim他

    • vim ifcfg-eth1 加入

    • service network restart

默认只允许ssh登录方式,为了后来操作方便,文件上传等,我们可以配置允许账号密码登录

配置源

虚拟机安装docker

https://docs.docker.com/engine/install/centos/

https://cr.console.aliyun.com/cn-qingdao/instances/mirrors

根据页面命令执行完命令

安装mysql-docker

用docker安装上mysql,去docker仓库里搜索mysql

注:请不要再告诉我mysql的配置文件是my.conf 哈市my.cnf的问题了,我觉得这个问题是跟mysql版本和linux版本有关系,你自己看下你系统里的配置文件样式就可以了

如何通过其他工具链接ssh

修改/etc/ssh/sshd_config

修改 PasswordAuthentication yes

systemctl restart sshd.service 或 service sshd restart

连接192.168.56.10:22端口成功,用户名root,密码vagrant

也可以通过vagrant ssh-config查看ip和端口,此时是127.0.0.1:2222

Redis

如果直接挂载的话docker会以为挂载的是一个目录,所以我们先创建一个文件然后再挂载,在虚拟机中。

默认是不持久化的。在配置文件中输入appendonly yes,就可以aof持久化了。修改完docker restart redis,docker -it redis redis-cli

设置redis容器在docker启动的时候启动

安装nginx docker

安装nginx为P124的内容

测试

四、IDEA开发环境

maven

在settings中配置阿里云镜像,配置jdk1.8。这个基本都配置过,不贴了

IDEA安装插件lombok,mybatisX。IDEA设置里配置好maven

vsCode设置

下载vsCode用于前端管理系统。在vsCode里安装插件。

  • Auto Close Tag
  • Auto Rename Tag
  • Chinese
  • ESlint
  • HTML CSS Support
  • HTML Snippets
  • JavaScript ES6
  • Live Server
  • open in brower
  • Vetur

五、git代码相关

安装git

下载git客户端,右键桌面Git GUI/bash Here。去bash,

码云

本课程老师选用的是gitee,你选择提交到github也可以

现有项目

项目刚出来的时候老师没把代码放出来,但现在好像把完整版的代码放出来了,所以你可以运行老师给的项目试一下。

但是老师的项目nacos等信息可能没有,还需要你自己搭建。一个好的方式是编译nacos的源码项目到IDEA中。而这种解决方案网上开源的同学们都是这么做的。

除此之外,基本老师给的项目里都全了,你要做的就是改改里面的配置信息等。

我的gitee只作为参考,主要注重记笔记了,或者隔了好久有的地方有差异了

  • https://gitee.com/HanFerm/gulimall

但是把项目运行起来可不是简单的事,有很多东西需要自己配置

从0搭建

在码

来源:hancoder

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年5月21日
下一篇 2020年5月21日

相关推荐