- 博客(247)
- 资源 (24)
- 收藏
- 关注

原创 从零到壹搭建一个商城架构--在kubesphere中创建用户角色以及简单实用DevOps
微服务,服务自治。DevOps:Development和Operations的组合DevOps:看作开发(软件工程)、技术运营和质量保障(QA)三者的交集突出重视软件开发人员和运维人员的沟通合作,通过自动化流程来使得软件构建、测试、发布更加快捷、频繁和可靠DevOps希望做到的是软件产品交付过程中IT工具链的打通,使得各个团队减少时间损耗,更加高效协同工作,专家们总结出了下面这个DevOps能力图,良好的闭环可以大大增加整体的产出1)、持续集成(Continuous Integration)...
2022-08-19 09:04:09
351

原创 从零到壹搭建一个商城架构--KubeSphere
KubeSphere是一款面向云原生设计的开源项目,在目前主流容器调度平台kubernets之上构建的分布式多租户容器管理平台,提供简单易用的操作界面以及向导式操作方式,在降低用户使用容器调度平台学习成本的同事,极大降低开发、测试、运维的日常工作的复杂度。...
2022-08-19 08:57:15
872

原创 从零到壹搭建一个商城架构--入门操作
现在Service我们使用NodePort的方式暴露,这样范根每个节点的端口,都可以访问一个Pod,吐过节点宕机,就会出现问题。墙的原因,文件已经放在我们的code目录,自行上传文件中无法访问的镜像,自行去docker hub找。控制器可以为你创建和管理多个Pod,管理副本和节点,并在集群范围内提供自修复能力。例如:如果一个节点失败,控制器可以在不同的节点上调度一样的替身来自动替换Pod。控制器通常使用你提供的Pod模板来创建它所负责的Pod。防止Pod失联(服务发现)、定义一组Pod的访问策略。...
2022-08-19 08:48:47
757
2

原创 从零到壹搭建一个商城架构--k8s细节
如果想了解其他内容,请点击这里查看目录1、kubectlkubectl文档https://kubernetes.io/zh/docs/reference/kubectl/overview/参考命令https://kubernetes.io/zh/docs/reference/generated/kubectl/lubectl-commands2、yaml语法yml模板输出一段tomcat部署yamlkubectl create deployment tomcat6 --image=tom
2022-04-20 08:54:24
877

原创 从零到壹搭建一个商城架构--k8s集群安装
1、kubeadmkubeadm是官方 推出的一个用于快速部署kubernetes集群的工具这个工具能通过两条指令完成一个kubernetes集群的部署:#创建一个Mster节点kubeadm init#将一个Node节点加入到当前集群中kubeadm join <Master节点的IP和端口>2、前置要求一台或多台机器操作系统Centos7x-86_x64硬件配置:2GB或更多RAM,2个CPU或更多CPU,硬盘30GB或更多集群中所有机器之间网络互通可以访问外网,需要
2022-04-14 08:51:11
1178

原创 从零到壹搭建一个商城架构--k8s快速入门
1)、简介kubernetas简称k8s,是用于自动部署,扩展和管理容器化应用程序的开源系统中文官网:https://kubernetas.io/zh/中文社区:https://www.kubernetas.org.cn/官方文档:https://kubernetas.io/zh/docs/home/社区文档:http://docs/kubernetas.org.cn/部署方式的进化https://kubernetas.io/zh/docs/concepts/overview/
2022-04-14 08:46:56
895

原创 从零到壹搭建一个商城架构--Sleuth+Zipkin服务链路追踪
如果想了解其他内容,请点击这里查看目录1、为什么用微服务架构是一个分布式架构,它按业务划分单元,一个分布式系统往往有很多个服务单元。由于服务单元数量众多,业务的复杂性,如果出现了错误和异常,很难去定位。主要体现在,一个请求可能需要调用很多个服务,而内部服务的调用复杂性决定了问题难以定位。所以微服务架构中,必须实现分布式链路追踪,去跟进一个请求到底哪些服务参与,参与的顺序又是怎样,从而达到每个请求的步骤清晰可见,出了问题,很快定位。链路追踪组件有Google的Dapper,Twitter的Zipkin,
2022-01-12 10:48:23
1007

原创 从零到壹搭建一个商城架构--定时任务
如果想了解其他内容,请点击这里查看目录1、定时任务1.1、cron表达式语法:秒 分 时 日 月 周 年(Spring不支持)http://www.quartz-scheduler.org/documentation/quartz-2.3.0/tutorials/crontrigger.html特殊字符:, :枚举;(cron=“7,9,23 * * * * ?”):任意时刻的7,9,23,秒启动‘-’ :范围;(cron=“7-20 * * * * ?”):任意时刻的7-20
2022-01-12 10:43:02
221

原创 从零到壹搭建一个商城架构--秒杀
如果想了解其他内容,请点击这里查看目录1、秒杀业务秒杀具有瞬间高并发的特点,针对这一特点,必须要做限流+异步+缓存(页面静态化)+独立部署。限流方式:前端限流:一些高并发的网站直接在前端页面开始限流,例如:小米的验证设计nginx限流:直接负载部分请求到错误的静态页面:令牌算法 漏斗算法网关限流:限流的过滤器代码中使用分布式信号量rabbitmq限流(能者多劳:chanel.basicQos(1)),保证发挥所有服务器的性能2、秒杀架构图3、秒杀流程(1)4、秒杀流程(2)
2022-01-12 10:40:52
1066

原创 从零到壹搭建一个商城架构--支付
1、支付宝支付1.1、进入“蚂蚁金服开放平台”https://openhome.alipay.com/platform/home.htm1.2、下载支付宝官方demo,进行配置和测试文档地址https://openhome.alipay.com/platform/home.htm 支付宝&蚂蚁金服开发者平台https://opendocs.open.alipay.com/catalog 开发者文档https://opendocs.alipay.com/open/270/105899
2022-01-12 10:33:42
2798

原创 从零到壹搭建一个商城架构--RabbitMQ延时队列(实现定时任务)
场景:比如未支付订单,超时一定时间后,系统自动取消订单并释放占有物品。常用解决方案:spring的schedule定时任务轮询数据库缺点:小号系统内存、增加数据库压力、存在较大的时间差解决:rabbitmq的消息TTL和死信Exchange结合延时队列场景定时任务的时效性问题1、消息的TTL(Time To Live)消息的TTL就是消息的存活时间。RabbitMQ可以对队列和消息分别设置TTL.对队列设置就是队列没有消费者连着的保留时间,也可以对每一个单独的消息做单独的设
2021-11-16 10:29:44
1443

原创 从零到壹搭建一个商城架构--分布式事务
1、分布式事务图示事务保证:订单服务异常,库存锁定不运行,全部回滚,撤销操作库存服务事务自治,锁定失败全部回滚,订单感受到,继续回滚库存服务锁定成功了,但是网络原因返回数据途中问题?库存服务锁定成功了,库存服务下面的逻辑发生故障,订单回滚了,怎么处理?利用消息队列实现最终一致库存服务锁定成功后发给消息队列消息(当前库存工作单),过段时间自动解锁,解锁时先查询订单的支付状态。解锁成功修改库存工作单详情项状态为已解锁2、本地事务与分布式事务1、本地事务1.1、事务的基本特性数据库事务
2021-11-16 10:24:44
2170

原创 从零到壹搭建一个商城架构--订单服务
1、订单中心电商系统涉及到3流,分别是信息流,资金流,物流。而订单系统作为中枢将三者有机的集合起来。订单模块是电商系统的枢纽,在订单这个环节上需求获取多个模块的数据和信息,同时对这些信息进行加工处理后流向下一个环节,这一系列就构成了订单的信息流通。1.1、订单构成1.2、用户信息用户信息包括用户账号、用户等级、用户的收货地址、收货人、收货人电话等组成,用户账号需要绑定手机号码,但是用户绑定的手机号码不一定是收货信息上的电话。用户可以添加多个收货信息,用户等级信息可以用来和促销系统进行匹配,获取商
2021-11-04 16:11:56
1193

原创 从零到壹搭建一个商城架构--消息队列
1、消息队列的使用场景异步解耦消峰2、概述[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7vkWyNW2-1629678682855)(.\img\1592838935936.png)]大多应用中,可通过消息服务中间件来提升系统替补通信、扩展解耦能力消息服务中心两个重要概念消息代理(message broker)和目的地(destination)当消息发送者发送消息以后,将消息代理接管,消息代理保证消息传递到指定目的地。消
2021-08-23 09:50:30
325

原创 从零到壹搭建一个商城架构--购物车需求
1、购物车需求需求描述用户可以在登录状态下将商品添加到购物车【登录购物车/在线购物车】放入数据库mongodb放入redis(采用)用户可以在未登录状态下将商品添加到购物车【有课购物车/离线购物车/临时购物车】放入localstoragecookie放入redis(采用)用户可以使用购物车一起结算用户可以给购物车添加商品用户可以查询自己的购物车用户可以在购物车中修改购买商品的数量用户可以在购物车中删除商品选中不选中商品在购物车中展示商品优惠提示购物车商品价格变
2021-08-23 08:22:54
413

原创 从零到壹搭建一个商城架构-Docker中安装RabbitMQ
从docker hub中查找rabbitmq访问:docker hub安装rabbitmqdocker run -d --name rabbitmq -p 15672:15672 -p 5672:5672 -p 25672:25672 -p 61613:61613 -p 1883:1883 -v /mydata/rabbitmq/data:/var/lib/rabbitmq rabbitmq:management说明:-d 后台运行容器;–name 指定容器名;-p 指定服务运行的端口(56
2021-01-20 13:09:18
156

原创 从零到壹搭建一个商城架构--配置n~g~i~n~x
1、配置nginx正向代理与反向代理正向代理:如科学上网,隐藏客户端信息反向代理:屏蔽内网服务器信息,负载均衡访问2、nginx配置文件3、配置我们的nginx在/mydata/nginx/config/nginx.conf文件中新增一个上游服务器upstream hslmall,服务地址就是我们虚拟机的网卡地址,我们可以在windows下查看虚拟机网卡地址,然后把这个虚拟机的IP设置到我们nginx上因为我们网关运行在本地,所以我们设置的端口是88接着新建一个c
2020-12-21 09:55:00
245

原创 从零到壹搭建一个商城架构--分布式session
Session共享问题-session原理先来看一个图Session共享问题-分布式下session共享问Session共享问题解决-session复制优点web-server(Tomcat)原生支持,只需要修改配置文件缺点session同步需要数据传输,占用大量网络带宽,降低了服务器群的业务处理能力任意一台web-server保存的数据都是所有web-server的session总和,受到内存限制无法水平扩展更多的web-server大型分布式集群情况下,由于所有web-s
2020-11-23 17:53:41
244
2

原创 从零到壹搭建一个商城架构--社交登陆
QQ、微博、github等网站的用户量非常大,别的网站为了简化网站的登陆与注册逻辑,引入社交登陆功能:步骤:1)、用户点击QQ按钮2)、引导跳转到QQ授权页3)、用户主动点击授权,跳回之前网页...
2020-10-29 15:26:38
258

原创 从零到壹搭建一个商城架构--MD5&MD5盐值加密
MD5Message Digest algorithm 5,信息摘要算法压缩性:任意长度的数据,算出的MD5值长度都是固定的。容易计算:从原数据计算出MD5值很容易。抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。强抗碰撞:想找到两个不同的数据,使它们具有相同的MD5值,是非常困难的。不可逆加盐:通过生成随机数与MD5生成字符串进行组合数据库同时存储MD5值与salt值。验证正确性时使用salt进行MD5即可...
2020-10-15 09:18:58
270

原创 从零到壹搭建一个商城架构--配置发送短信功能
首先我们去阿里云,开通短信功能在我们项目的第三方服务中进行短信功能的配置@Data@Component@ConfigurationProperties(prefix = "spring.cloud.alicloud.sms")public class SmsComponent { private String host; private String path; private String appCode; private String skin; .
2020-10-15 09:06:06
447
1

原创 从零到壹搭建一个商城架构--使用异步编排查询商品详情数据
@Override public SkuItemVo item(Long skuId) { SkuItemVo skuItemVo=new SkuItemVo(); CompletableFuture<SkuInfoEntity> infoFuture = CompletableFuture.supplyAsync(() -> { // 1. 获取sku的基本信息 pms_sku_info Sku.
2020-09-24 08:49:13
393
2

原创 从零到壹搭建一个商城架构--检索条件分析
全文检索:skuTitle-》keyword排序:saleCount(销量)、hotScore(热度分)、skuPrice(价格)过滤:hasStock、skuPrice区间、brandId、catalog3Id、attrs聚合:attrs完整查询参数keyword=小米&sort=saleCount_desc/asc&hasStock=0/1&skuPrice=400_1900&brandId=1&catalog3Id=1&attrs=1_.
2020-09-24 08:29:09
301

原创 从零到壹搭建一个商城架构--商品服务中加入线程池配置
在yml文件中自定义线程池参数hslmall: thread: core-size: 20 max-size: 200 keep-alive-time: 10增加线程池属性配置文件,并增加映射关系@ConfigurationProperties(prefix = "hslmall.thread")@Component@Datapublic class ThreadPoolConfigurationProperties { private Intege.
2020-09-15 08:30:00
291

原创 从零到壹搭建一个商城架构--CompletableFuture 异步编排
使用的业务场景:查询商品详情页的逻辑比较复杂,有些数据还需要远程调用,必然需要花费更多的时间。获取sku的基本信息 0.5S获取sku的图片信息 0.5S获取sku的促销信息 1S获取spu的 所有销售属性 1S获取规格参数数组及组下的规格参数 1.5Sspu详情 1S假如有商品详情页的每个查询,需要如上标注的时间才能完成,那么用户需要5.5S后才能看到商品详情页的内容,很显然是不能接受的。如果有很多线程同时完成这6步操作,也许只需要1.5S即可完成响应创..
2020-09-15 08:27:31
454

原创 从零到壹搭建一个商城架构--为什么使用线程池
降低资源的消耗通过重复利用已经创建好的线程降低线程的创建和销毁带来的损耗提高响应速度因为线程池中的线程数没有超过线程池的最大上限时,有的线程处于等待分配任务状态,当任务来时无需创建新的线程就能执行提高线程的客观理性线程池会根据当前系统特点对线程池内的线程进行优化处理,减少创建和销毁线程带来的系统开销。无限的创建和销毁不仅消耗系统资源,还降低系统的稳定性,使用线程池进行统一分配...
2020-09-15 08:25:32
299

原创 从零到壹搭建一个商城架构--线程池
1、使用JDK已经创建好的//固定线程池,固定大小,core=max,都不可回收ExecutorService service = Executors.newFiexedThreadPool(5);//单个线程池,单线程的线程池,后台从队列里获取任务,逐个执行ExecutorService service = Executors.newSingleThreadPool();//有缓存的线程池,core是0,所有都可回收ExecutorService service = Executors.new
2020-09-02 08:55:13
336

原创 从零到壹搭建一个商城架构--初始化线程的4种方式
1)、继承Thread2)、实现Runnable接口3)、实现Callable接口+FutureTask(可以拿到返回结果,可以处理异常)4)、线程池方式1和方式2:主进程无法获取线程的运算结果。不适合当前场景方式3:主线程可以获取线程的运算结果,但是不利于控制服务器中的线程资源。可以导致服务器资源耗尽。方式4:通过如下两种方式初始化线程池Executors.newFiexedThreadPool(3);//或者new ThreadPoolExecutor(corePoolSize,max
2020-09-02 08:40:30
326

原创 从零到壹搭建一个商城架构--Spring Cache
1、简介Spring从3.1开始定义了org.springframework.cache.Cache和org.springframework.cache.CacheManager接口来统一不同的缓存技术,并支持使用JCache(JSR-107)注解简化我们开发Cache接口为缓存的组件规范定义,包含缓存的各种操作集合,Cache接口下Spring提供了各种xxxCache的实现,如Redisache,EhCacheCache,ConcurrentMapCache等。每次调用需要缓存功能的方法时,Sp
2020-08-19 22:03:56
307

原创 从零到壹搭建一个商城架构--分布式锁
本地锁,只能锁住当前进程,所以我们需要分布式锁1、锁-时序问题有时候我们使用缓存的时候,兵法比较高的情况下,可能有多个线程在查同一个数据,缓存中都没有,然后都去数据库中查,这样会导致缓存中数据频繁的写入同一数据,这样就存在锁的时序性问题比如下图:2、分布式锁演进-基本原理我们可以同时去一个地方“占坑”,如果占到,就执行逻辑。否则就必须等待,直到释放锁。“占坑”可以去redis,可以去数据库,可以去任何大家都能访问的地方。等待可以自旋的方式。3、分布式锁演进-阶段一问题:1、setnx占好
2020-08-19 22:01:46
435

原创 从零到壹搭建一个商城架构--分布式缓存
1、本地模式在分布式下的问题如果我们第一次请求在第一台服务器,把数据缓存到本地,那么第二次请求负载均衡到第二台服务器,还得需要查一遍,再放到缓存中,速度也没有提升。还有一个问题,如果我们在第一台服务器修改了分类的数据,并且放到了本地缓存中,下一次负载到第二台服务器,拿到的数据会是之前的旧数据,会导致数据不一致问题。根据以上几个问题,我们最终的方案是选择redis作为缓存的中间件来存放数据,如下图2、整合Redis引入data-redis-starter<!--引入redis--&g
2020-08-03 10:49:50
384

原创 从零到壹搭建一个商城架构--本地缓存
一般都是在我们程序中定义一个Map对象,放我们需要的数据,伪代码如下private Map<String,Object> map=new HashMap<>();Object value=map.get(“key”);if(value==null){ Obect data=db.load(); map.put("key",data); return data;}return value;这样我们查询出来的数据放到map中,下次查询的时候,速度会很
2020-08-03 10:48:27
307

原创 从零到壹搭建一个商城架构--缓存介绍
缓存使用为了系统性能的提升,我们一般都会将部分数据放入缓存中,加速访问。而DB承担数据落盘工作。哪些数据适合放入缓存呢?及时性、数据一致性要求不高的访问量大且更新频率不高的数据(读多、写少)举例:电商类应用,商品分类,商品列表等适合缓存并加一个失效时间(根据数据更新频率来定),后台如果发布一个商品,买家需要5分钟才能看到新的商品一般还是可以接受的...
2020-07-28 15:26:38
383

原创 从零到壹搭建一个商城架构--静态资源放到nginx中,动静分离
1、静态资源放到nginx中,动静分离把静态资源上传到nginx的/mydata/nginx/html/static下#进入到html目录下cd /mydata/nginx/html/#创建static目录mkdir static接着把静态文件上传到static下,再把我们本地的static目录下的文件都删除配置hslmall.conf文件#进入到conf.d/ 目录下cd /mydata/nginx/conf/conf.d/#编辑hslmall.conf文件vi hslm
2020-07-22 18:38:37
319

原创 从零到壹搭建一个商城架构--jconsole与jvisualvm
1、jconsole与jvisualvmjdk的两个小工具jconsole、jvisualvm(升级版的jconsole);通过命令行启动,可以监控本地和远程应用。远程应用需要配置jvisualvm能干什么监控内存泄漏,跟踪垃圾回收,执行时内存、cpu分析、线程分析…2、打开linux监控dockers中CPU和内存的使用情况docker stats...
2020-07-22 18:36:46
312

原创 从零到壹搭建一个商城架构--JMeter
JMeter安装我们打开JMeter官网进行下载,下载JDK8+以上的版本解压出来后,找到bin/jmeter.bat 双击这个批处理文件,打开后是这样的然后我们选择中文,这样方便我们对JMeter更快速的熟悉,步骤如下JMeter压测示例添加线程组设置线程组中的线程属性,设置如下接着添加我们压力测试的目标地址,添加一个HTTP接着我们创建监听器,这个主要是用来分析我们这次压测的一些报告数据,比较重要最后的结构是这样的最后我们点击运行,对百度进行..
2020-07-20 08:59:19
398

原创 从零到壹搭建一个商城架构--性能指标
压力测试考察当前硬件环境下系统所能承受的最大负荷并帮组找出系统瓶颈所在。压测都是为了系统在线上的处理能力和稳定性维持在一个标准范围内,做到心中有数。使用压力测试,我们有希望找到很多种用其他测试方法更难发现的错误。有两种错误类型是:内存泄漏,并发与同步有效的压力测试,系统将应用以下这些关键条件:重复,并发,量级,随机变化1、性能指标响应时间响应时间指用户从客户端发起一个请求开始,到客户端接收到从服务器返回的响应结束,整个过程锁消耗的时间。HPS:系统每秒处理点击数,单位是次/秒TPS
2020-07-17 17:05:53
492

原创 从零到壹搭建一个商城架构--配置网关
配置网关配置网关配置文件,加入如下内容 - id: hslmall_host_route uri: lb://hslmall-product ##只要路径中包含/api的都负载均衡的路由到renren-fast这个服务 predicates: - Host=**.hslmall.com这个意思是,所有的请求域名是hslmall.com的都路由到hslmall-product服务,这时候我们访问hslma
2020-07-07 08:45:16
556

原创 从零到壹搭建一个商城架构--配置本地hosts文件
首先我们需要用到thymeleaf模板引擎,我们在商品服务的pom文件中引入<!--引入thymeleaf模板引擎--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> <.
2020-07-03 08:43:16
453
html导出exce.html
2019-07-09
table-editer可以滑动复制,可以编辑,可以使用日历选择日期的jquery代码实现
2018-12-06
vue写的confirm确认框,loading加载中,message提示消息
2018-12-06
Concurrent.Thread.js多线程执行大批量函数
2018-12-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人