谷粒商城
文章平均质量分 92
阿昌喜欢吃黄桃
这个作者很懒,什么都没留下…
展开
-
Day442&443&444&445&446&447&448.K8s -谷粒商城
K8s分布式编排管理集群的系统一、K8s快速入门1、简介kubernetes简称k8s。是用于自动部署,扩展和管理容器化应用程序的开源系统。中文官网:https://kubernetes.io/Zh/中文社区:https://www.kubernetes.org.cn/官方文档:https://kubernetes.io/zh/docs/home/社区文档:https://docs.kubernetes.org.cn/部署方式的进化:传统部署时代:早期,各个组织机构在物理服务原创 2021-11-06 18:33:43 · 2689 阅读 · 10 评论 -
Day441.Sleuth链路追踪+Zipkin分析 -谷粒商城
Sleuth链路追踪+Zipkin分析一、为什么要用微服务架构是一个分布式架构,它按业务划分服务单元,一个分布式系统往往有很多个服务单元。由于服务单元数量众多,业务的复杂程度不同,如果出现了错误和异常 , 很难去定位。主要体现在, 一个请求可能需要调用很多个服务,而内部服务的调用复杂性,决定了问题难以定位。所以微服务架构中,必须实现分布式链路追踪,去跟进一个请求到底有哪些服务参与,参与的顺序又是怎样的,从而达到每个请求的步骤清晰可见,出了问题,很快定位。链路追踪组件有 Google 的 Dapper,原创 2021-11-05 21:58:59 · 565 阅读 · 0 评论 -
Day440.Sentinel -谷粒商城
Sentinel一、Hystrix 与 Sentinel 的区别1、隔离策略Hystrix 使用线程池隔离,假设现在有 100 个人要访问 hello 请求,Hystrix 默认会为 hello 请求做一个线程池,假设这个线程池只有 50 的容量,那每有 1 个请求进来,线程池都会为其分配一个线程,这样整个线程池的最大容量就是 50 个请求,如果再有多的请求,Hystrix 就会直接退回这样做的缺点就是,如果再有一个 haha 请求,再有一个 enen 请求,这 3 请求,我们都想保护,这样原创 2021-11-04 22:47:35 · 653 阅读 · 0 评论 -
Day437&438&439.秒杀服务 -谷粒商城
秒杀服务一、定时任务-QuartzCron表达式执行定时任务需要给一个时间计划,这个时间计划可以用 Cron 表达式来编写官方文档 Cron 表达式是一个字符串,是用空格分割的六到七个属性。语法:秒 分 时 日 月 周 年(可忽略年,Spring 不支持年)定时任务只能精确到秒Seconds:0-59,举例:0 就是整秒执行,1 就是在第1秒的时候执行Day of week:值可以写 1-7,也可以写 SUN-SAT,1 就是周日,7 就是周六①特殊字符,:枚举(cron="7,9原创 2021-11-01 22:49:19 · 1127 阅读 · 0 评论 -
Day435&436.支付系统 -谷粒商城
支付系统一、基本概念1、加密①对称加密什么是对称加密所谓对称加密,就是发送方要给接收方在网络上发送一段明文,但是不能直接发。发送方需要加密,对称加密指的就是加密和解密用的是同一把密钥。假设发送方准备了一串明文,123456,想要传出去,他先用 密钥A 把123456加密成一个密文,然后把这个密文通过网络传输给接收方,即使有人在中间截取到这个密文,由于他不知道加密用的是什么算法,什么密钥,他就办法解密得到明文,而接收方收到这个密文之后,他知道发送方用的是哪个密钥,所以接收方使用跟发送原创 2021-10-31 00:56:08 · 1661 阅读 · 1 评论 -
Day434.订单&库存服务分布式事务的最终解决 -谷粒商城
分布式事务的最终解决通过MQ的延时消息来解决订单/库存服务直接调用的事务问题一、如何解决下单系统这个高并发里边的分布式事务呢?首先,我们肯定不会用 2PC 模式、 TCC-事务补偿性方案,我们也不考虑最终我们选择可靠消息+最终一致性这种方式为了保证高并发,订单这一块还是自己回滚,因为性能不佳,我们弃用seata的方案1、库存服务自己怎么回滚?第一种通过MQ消息队列,我们在提交订单那里,当捕捉到异常要回滚的时候,给库存服务发一个消息,让库存服务自己把库存解锁这样不需要让库存事务回滚,原创 2021-10-29 23:48:36 · 2995 阅读 · 1 评论 -
Day433.Seata使用 -谷粒商城
Seata使用一、术语首先在Seata里边有这么几个概念1、TC 事务协调者中间人,来感知全局RM小事务状态我们现在假设是下单业务,下单业务要调用我们三个远程服务。那通过TC 就要协调这三个远程服务到底是都要提交还是都要回滚。这个 TC 类似于我们二阶提交协议的那个 Transaction Manager(总事务管理器),2、TM 事务管理器我们业务中最大的那个事务它是Business 这一块的,负责控制我们的总事务相当于我们要做 Business 方法的时候,它要调用三个远程原创 2021-10-28 23:04:34 · 1092 阅读 · 1 评论 -
Day432.BASE理论&分布式事务常见解决方案 -谷粒商城
BASE 理论一、BASE 简介BASE 其实就是对 CAP 的延伸。我们在保证 AP 的情况下,我们永远无法做到强一致,就是我们这个业务状态做不了强一致,但是我们可以让它弱一致,也就是我们说的最终一致,强一致弱一致是对立概念强一致,就是我们以前用的这种本地系统。我们就一个数据库,一台机器,我们一个代码在这操作好多数据。那操作完了要么都成功,要么都失败。这是一个强一致状态。但我们在分布式以后呢,我们想要保证强一致可能很难。但是我们可以保证最终一致,这就是我们说的 BASE,BASE 解释起来就原创 2021-10-27 21:24:04 · 519 阅读 · 1 评论 -
Day431.Raft算法实现分布式系统一致性 -谷粒商城
Raft 算法实现分布式系统一致性下面的内容是描述演示动画,详细地址为:http://thesecretlivesofdata.com/raft/一、简介我们来看一下 Raft 算法,它帮我们来理解我们这个分布式系统 Consunsus,这个就是一致性。首先我们来说它说什么是我们分布式系统的一致性。我们以一个例子来作为示范那假设我们现在有一个单节点的系统,假设就一个节点我们一台机器,我们现在就一台机器举一个例子,我们现在就是这个节点,这个机器想要保存一个数据,那我们就给它保存一个数据,比原创 2021-10-26 23:45:24 · 363 阅读 · 0 评论 -
Day431.本地事务&分布式事务&CAP理论 -谷粒商城
本地事务一、本地事务一个或一组SQL语句组成一个执行单元,这个执行单元要么全部执行,要么全部不执行二、ACID 特性原子性:一个事务的整体操作不可拆分,要么都成功,要么都失败一致性:一个事务执行会使数据从一个一致状态切换到另一个一致状态以转账为例,转账之前 A 有 1000,B 有 1000, 如果 A 给 B 转 200,成功了,那么 A 就是 800,B 就是 1200,业务前后它们的总量都是 2000,不可能出现转完账之后,A 扣了 200,B 没加 200隔离性:事务之间原创 2021-10-26 23:06:49 · 489 阅读 · 0 评论 -
Day429&430&431.订单服务 -谷粒商城
订单服务一、环境搭建因为我们做的是动静分离,将静态资源上传到nginx上配置本地域名:C:\Windows\System32\drivers\etc\hosts配置服务网关:achangmall-gateway/src/main/resources/application.yml - id: order_route uri: lb://achangmall-order predicates: - Hos原创 2021-10-24 20:52:23 · 910 阅读 · 0 评论 -
Day428.RabbitMq消息队列--2 -谷粒商城
RabbitMq消息队列–2 -谷粒商城一、RabbitMQ消息确认机制1、可靠抵达在分布式系统中,比如现在有很多微服务,微服务连接上消息队列服务器,其它微服务可能还要监听这些消息,但是可能会因为服务器抖动、宕机,MQ 的宕机、资源耗尽,以及无论是发消息的生产者、还是收消息的消费者,它们的卡顿、宕机等各种问题,都会导致消息的丢失,比如发送者发消息的时候,给弄丢了 ,看起来消息是发出去了,MQ网络抖动没接到, 或者MQ接到了,但是它消费消息的时候,因为网络抖动又没拿到,等等各种问题所以在分布式系原创 2021-10-23 23:22:50 · 998 阅读 · 0 评论 -
Day427.RabbitMQ消息队列--1 -谷粒商城
RabbitMQ消息队列–1一、MQ队列介绍1、MQ全称 Message Queue,被称为消息队列2、回顾队列队列,一种类似于 List 的数据结构,专门来存储数据的队列如果要往队列中存数据的话可以从队头中存,1先进,存到队列中就是这样:3 -> 2 -> 1,从队尾取的时候,1先出,结果就是这样:1 -> 2 -> 3,这是很典型的先进先出队列如果存的方式与上面一样:3 -> 2 -> 1,而取的时候从队头取,3先出,结果就变成了这样:3 -原创 2021-10-22 22:45:47 · 964 阅读 · 1 评论 -
Day425&426.购物车服务 -谷粒商城
购物车服务一、环境搭建springboot初始化新增本地域名cart.achangmall.com修改对应pom配置,与此次服务间版本对应引入公共依赖修改springboot版本修改springcloud版本将提供的静态资源导入nginx服务,做到动静分离修改页面对应的资源地址,修改只选nginx的静态地址,如:主启动类com.achang.achangmall.cart.AchangmallCartApplication@SpringBoo原创 2021-10-20 22:37:26 · 1946 阅读 · 2 评论 -
Day424.SpringSession&SSO单点登录 -谷粒商城
SpringSession通过SpringSession来解决分布式之间服务Session共享问题一、SpringBoot 整合 SpringSessionhttps://docs.spring.io/spring-session/docs/2.5.0/reference/html5/#samples引入依赖 <!-- 整合 spring session 实现 session 共享--><dependency> <groupId>org.sprin原创 2021-10-19 22:50:22 · 632 阅读 · 0 评论 -
Day423.Oauth2&分布式Session -谷粒商城
一、Oauth21、介绍OAuth: :OAuth(开放授权)是一个开放标准,允许用户授权第三方网站访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方网站或分享他们数据的所有内容。OAuth2.0 :对于用户相关的 OpenAPI(例如获取用户信息,动态同步,照片,日志,分享等),为了保护用户数据的安全和隐私,第三方网站访问用户数据前都需要显式的向用户征求授权。授权流程图示:2、接入步骤以微博为例 官方地址引导用户到微博的认证地址ht原创 2021-10-18 22:26:11 · 902 阅读 · 1 评论 -
Day421&422.认证服务 -谷粒商城
认证服务一、初始化创建认证模块统一springboot版本2.2.1.RELEASE,并引入Common服务依赖,因为不操作数据库,所以排除mybaitsplus依赖<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2原创 2021-10-16 22:59:42 · 713 阅读 · 0 评论 -
Day420.商品详细_异步编排优化代码 -谷粒商城
商品详细一、环境准备C:\Windows\System32\drivers\etc\hosts添加本地域名解析添加nginx配置/mydata/nginx/confdocker restart nginx #重启nginx修改gateway网关 - id: nginx_route uri: lb://achangmall-product predicates: - Host=achangmall原创 2021-10-15 22:53:39 · 958 阅读 · 0 评论 -
Day419.CompletableFuture 异步编排 -谷粒商城
CompletableFuture 异步编排阿昌总结今天学习到的CompletableFuture当我们在异步任务编程的时候,可能会有场景如下:可能你会想到用之前我们学到的Callable的方式去获取结果后,再执行;但是这样子不能保证是异步与异步之间的结果;C不能感知到AB的结果后再异步执行;所以,这里我们就引出了 CompletableFuture一、前言什么是CompletableFuture呢?CompletableFuture 和 FutureTask 同属于 Future 接口原创 2021-10-14 23:05:49 · 718 阅读 · 0 评论 -
Day414&415&416&417&418.检索服务 -谷粒商城
检索服务0、准备环境achangmall-search引入依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><dependency> <groupId>org.springf原创 2021-10-08 22:32:11 · 3402 阅读 · 1 评论 -
Day413.SpringCache -谷粒商城
SpringCache每次都那样写缓存太麻烦了,spring从3.1开始定义了Cache、CacheManager接口来统一不同的缓存技术。并支持使用JCache(JSR-107)注解简化我们的开发Cache接口的实现包括RedisCache、EhCacheCache、ConcurrentMapCache等每次调用需要缓存功能的方法时,spring会检查检查指定参数的指定的目标方法是否已经被调用过;如果有就直接从缓存中获取方法调用后的结果,如果没有就调用方法并缓存结果后返回给用户。下次调用直接从缓存中获原创 2021-10-07 22:30:10 · 510 阅读 · 0 评论 -
Day412.分布式锁redisson与缓存 -谷粒商城
分布式锁redisson与缓存读模式缓存使用流程缓存本地缓存:和微服务同一个进程。缺点:分布式时本都缓存不能共享分布式缓存:缓存中间件一、本地缓存category、brand、product安装docker-redishttps://blog.csdn.net/qq_43284469/article/details/120397138product导入依赖<dependency> <groupId>org.springframewo原创 2021-10-06 20:10:26 · 1091 阅读 · 0 评论 -
Day410&411.商品系统首页 -谷粒商城
二、商城系统首页不使用前后端分离开发了,管理后台用vue nginx发给网关集群,网关再路由到微服务静态资源放到nginx中依赖导入thymeleaf依赖、热部署依赖devtools使页面实时生效achangmall-product/pom.xml<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools&l原创 2021-10-04 23:17:55 · 1050 阅读 · 0 评论 -
Day409.商品上架 -谷粒商城
一、商品上架1、项目架构图2、product-es准备ES在内存中,所以在检索中优于mysql。ES也支持集群,数据分片存储。需求:上架的商品才可以在网站展示。上架的商品需要可以被检索。(上架的商品就加入到es去被检索)分析sku在es中如何存储 商品mapping分析: 商品上架在es中是存sku还是spu?1)检索的时候输入名字,是需要按照sku的title进行全文检索2)检素使用商品规格,规格是spu的公共属性,每个spu是一样的3)按照分类id进去的都是直接列原创 2021-10-03 21:44:01 · 1313 阅读 · 0 评论 -
Day400&401&402&403&404&405&406.商品服务 -谷粒商城
商品服务一、品牌管理1、效果优化与快速显示开关将逆向工程product得到的resources\src\views\modules\product文件拷贝到achangmall/renren-fast-vue/src/views/modules/product目录下,也就是下面的两个文件brand.vue : 显示的表单brand-add-or-update.vue:添加和更改功能但是显示的页面没有新增和删除功能,这是因为权限控制的原因<el-button v-if="is原创 2021-09-24 22:45:52 · 3030 阅读 · 7 评论 -
Day398&399.三级分类 -谷粒商城
三级分类0、表结构1、sql脚本根据老师提供的sql2、查找所有分类以及子分类在achangmall-product的com.achang.achangmall.product.controller.CategoryController添加如下方法/** * 查出所有分类以及子分类,以树形结构组装 */@RequestMapping("/list/tree")public R list(){ List<CategoryEntity> tree原创 2021-09-22 23:13:14 · 2449 阅读 · 3 评论 -
Day397.SpringCloud Alibaba -谷粒商城
SpringCloud Alibaba一、项目依赖0、组件https://github.com/alibaba/spring-cloud-alibaba/blob/master/README-zh.md1、项目技术选择结合 SpringCloud Alibaba 这里使用的技术搭配方案:SpringCloud Alibaba - Nacos :注册中心(服务发现/ 注册)SpringCloud Alibaba - Nacos :配置中心(动态配置管理)SpringCloud - Ribb原创 2021-09-21 20:25:44 · 1354 阅读 · 1 评论 -
Day396.环境搭建 -谷粒商城
一、环境搭建这里可使用VMWare,也可以使用VirtualBox,以下以VirtualBox为例子:1、安装 linux 虚拟机下载&安装 VirtualBox , 要开启CPU 虚拟化https://www.virtualbox.org/ — 官方下载&安装 Vagranthttps://app.vagrantup.com/boxes/search Vagrant 官方镜像仓库https://www.vagrantup.com/downloads.html Va原创 2021-09-20 23:51:12 · 2129 阅读 · 3 评论 -
Day396.项目简介&分布式基础概念 -谷粒商城
一、项目简介1 、项目背景1 )、电商模式市面上有 5 种常见的电商模式 B2B、B2C、C2B、C2C、O2O;B2B 模式B2B (Business to Business), 是指商家与商家建立的商业关系。 如:阿里巴巴B2C 模式B2C (Business to Consumer), 就是我们经常看到的供应商直接把商品卖给用户,即“商对客”模式,也就是通常说的商业零售,直接面向消费者销售产品和服务。如:苏宁易购、京东、天猫、小米商城C2B 模式C2B (Customer原创 2021-09-20 23:41:23 · 1231 阅读 · 0 评论