高并发场景解决思路
文章平均质量分 58
docker、微服务都有涉及
Neayom
学
展开
-
用Docker Compose编排下微服务项目
1、配置好第三方docker-compose-env.yml2、微服务打jar包,改好配置,IP变为对应第三方镜像名称3、微服务制作成镜像dockerfile4、配置docker-compose-app.yml5、执行命令一、创建docker-compose.yml文件docker-compose描述了对容器的配置,镜像细节写在Dockerfile中,而容器配置写在compose.yml上。这点要注意。docker-compose up -d 执行这样会构建一个容器,加上参数 --buil原创 2021-06-20 11:53:24 · 175 阅读 · 0 评论 -
分库分表ShardingSphere(ShardingJDBC)学习笔记
(一)使用场景一般情况下,单机数据库容量支撑不住了,应先从缓存技术着手降低对数据库的访问压力,如果缓存使用过后,数据库访问量还是非常大,可以考虑数据库读写分离,如果依然非常大,且业务持续增长无法估量,最后才考虑分库分表。当然了,海量数据的存储可以用HBase,HIVE这些如果确定使用分库分表,就应该在系统设计之初开始对业务数据的耦合程度和使用情况进行考量,尽量控制业务Sql语句的使用范围。(二)ShardingJDBC的应用基本概念这块:逻辑表:t_user:水平拆分的数据库的相同逻辑和数据原创 2021-06-17 19:37:52 · 257 阅读 · 0 评论 -
防刷限流策略(redis实现)
(一)防刷策略不能轻易的让机器刷我们的订单的接口需要做一些人工的保障,限流防刷,首先根据 /verifyCode路径请求,生成一个图片二维码(通过一个脚本的执行引擎)Image.getResult() 得到答案,并存储到redis里。然后在/token请求中,传入答案参数,进行校验,获得秒杀地址的令牌,注意,我们的秒杀地址是动态的注意路径,如果答案输入正确,那么就将token,传入到Url上(通过@pathvariable注解传入)。访问真正的秒杀地址。(二) 限流策略1s有10w个人去原创 2021-06-16 20:07:57 · 672 阅读 · 0 评论 -
对秒杀商品这块先做一个多级缓存优化
一、表的设计关于秒杀这块,一场秒杀活动有好几个场次,一个场次中有多个商品可以被秒杀,从这一句话就可以得出三张表表1:秒杀活动表:表2:限购场次表表3:商品限购场次与商品关联表也就是说一个商品,得知道该商品属于哪次活动的哪个场的秒杀商品~注:秒杀活动的库存不走SKU库存二、关于商品详情页商品详情这块应该是访问QPS最多的业务了,每次查商品详情都走数据库的话,后台受不了所以需要做优化qps(一)不加缓存直接头铁到DB上查,测一测QPS先估测一个值 从200开始 慢慢的压 以100为一个梯度。原创 2021-06-13 22:44:28 · 258 阅读 · 1 评论 -
商品超卖控制和订单业务高并发优化
一、下单业务流程分析订单确认 、下订单(锁库存-创建支付宝订单-生成支付二维码)、扫码支付、异步回调-修改订单状态、查看支付订单下单后减库存,而不是在付款是减库存(以防1000个人准备下单,提示下单成功,但是准备付款的时候却提示因为库存不足而付款失败,用户心态崩了)下单后不付款咋办?非秒杀商品,下单后不付款那么24h后取消,秒杀商品 10min后取消。或者我自己觉得可以在支付页面那里加一个倒计时60s的页面,超时不付款就拜拜。。。二、如何解决超卖超卖:订单数量多于商品真实库存数怎么解决:1、原创 2021-06-13 22:31:26 · 441 阅读 · 0 评论 -
异常的处理
先自定义各种异常类,让他继承RuntimeException,该类有两个属性,分别是Code和msg,分别是响应状态码和异常消息,该类可以定义多个。然后我们定义一个GlobalExceptionHandler,添加一个@ControllerAdvice 做全局异常处理,也就是说 配合@ExceptionHandler(Exception.class) 可以将所有Exception异常走这个方法,能够实现前端友好显示。...原创 2021-06-08 09:25:37 · 65 阅读 · 0 评论 -
Ribbon重要知识点,开发过程中遇到的问题和如何解决
服务网关需要在启动的时候通过ribbon去授权中心拉取我们的密钥也就是在拦截器中,注入RestTemplate,但是在启动消费者服务时,会报错,报找不到生产者服务异常。。问题出在哪儿呢?为什么拿不到呢Ribbon工作原理就是在RestTemplate里面注入我们的LoaderBanlanceClientLoaderBanlanceClient在什么时候塞到RestTemplate里面?是一个定制器将Client塞入到RestTemplate,那么这个定制器是什么时候执行的呢?通过分析spring原创 2021-06-02 16:07:02 · 393 阅读 · 0 评论 -
搭建微服务认证中心实现微服务鉴权
一、单体应用的安全,传统的SSO某些页面必须登录后才能正常使用,之前了解过单体架构可以通过分布式session或JWT实现传统的sso,又或者通过NG的ip hash算法(原理是根据用户的IP不变,定位到固定的后端服务器中寻找session)这些都不是重点!!!!!二、Oauth2协议个人的理解是这样的:我们可以在Oauth2上实现单点登录,但是Oauth2不仅仅只能实现单点登录,可以实现授权第三方应用有权限去访问另外的服务提供者上的信息,而不需要将你的登录信息(账号密码)提供给第三方应用,安全。原创 2021-05-31 15:21:37 · 3160 阅读 · 1 评论 -
电商业务Alipay支付实战(当面付实现)
一、扫码支付业务说明支付宝二维码当面付:(1)获取二维码、扫码支付、等待回调(支付宝后台)、修改订单状态(可能由未支付变为已支付)、定期对账(2)二维码中包含订单信息,以及怎么扣款等信息二、支付宝当面付流程 预下单:将订单信息先交给支付宝后台进行处理。三、支付宝sdk代码集成1、添加依赖包(1)SDK-maven依赖地址说明:https://docs.open.alipay.com/54/103419/2、Demo去了解怎么玩当面付DEMO:https://docs.open.a原创 2021-05-28 15:00:19 · 701 阅读 · 0 评论 -
商品服务(SKU、下单流程、购物车、优惠券设计)
一、两个概念SKU、SPUSKU:最小库存单位(裤子—蓝色—XS大小---->对应一个库存)SPU:商品具有的属性,不涉及到库存(一)SKU相关表的设计:(1) pms_product_attribute_category 商品属性表通过attribute_count字段记录当前商品有多少个SKU属性在前端显示(2) pms_product_attribute 商品属性参数表product_attribute_category_id字段对应了商品属性表的id注:商品属性表和商原创 2021-05-26 16:08:22 · 1819 阅读 · 0 评论 -
用户服务模块(Spring Session底层原理与Jwt会话管理)
一、Spring Session底层原理昨天用Spring Session实现了用户分布式Session,那么为什么集成了springSession之后就可以把session存放在redis里面去?原理是什么?(一) Spring Session底层原理通过一个SessionRepositoryFilter将请求中原生的request、response以及HttpSession拦截,并做一个包装,重写内部获取session的逻辑,将getSession()做了一个重写。那么此时Controller中原创 2021-05-24 09:21:55 · 498 阅读 · 0 评论 -
用户模块的处理(分布式session)
用户模块逻辑PS:前期准备:使用逆向工程(MBG模块)中的generatorConfig.xml将数据库中的表信息生成对应的Mapper、Mapper.xml以及domain(一)用户注册(1)获取otp(一次性密码)校验码的方法,传递电话号码为参数(2)对otp的思考:1、先查询当前用户有没有注册?注册了是不可以发验证码的通过Mapper查询当前参数(电话号码)是否存在,若存在,抛出一个自定义的业务逻辑异常2、校验60s后有无再次发送,校验码存在redis中3、再生产随机校验码(3原创 2021-05-22 19:51:25 · 236 阅读 · 8 评论 -
环境的安装与部署(一)elasticsearch配置中的一些错误
安装ES的时候,发现课上学的是ES7版本,可是代码中的是6.4.3的版本,对应的是springboot2.1.7版本。安装ES同时需要安装对应版本的ik分词器以及kibana。同时application.yml文件中需要包含以下配置:这块老是报错:Caused by: java.net.ConnectException: Timeout connecting to [localhost/127.0.0.1:9200]原因百度了一下可能是因为:spring默认会去监听本地127.0.0.1:9200原创 2021-05-20 17:07:17 · 399 阅读 · 0 评论