谷粒商城
文章平均质量分 89
蛋饼吧
这个作者很懒,什么都没留下…
展开
-
【谷粒商城之秒杀服务】
秒杀具有瞬间高并发的特点,针对这一特点,必须要做限流 + 异步+ 缓存 (页面静态化)+ 独立部署。前端限流,一些高并发的网站直接在前端页面开始限流,例如:小米的验证码设计nginx 限流,直接负载部分请求到错误的静态页面:令牌算法、漏斗算法网关限流,限流的过滤器代码中使用分布式信号量rabbitmq 限流(能者多劳:chanel.basicQos(1)),保证发挥所有服务器的性能秒杀设计秒杀流程。原创 2023-05-23 18:46:32 · 1178 阅读 · 0 评论 -
【谷粒商城之订单服务-支付】
内网穿透功能可以允许我们使用外网的网址来访问主机;原创 2023-05-15 23:33:49 · 766 阅读 · 0 评论 -
【谷粒商城之接口幂等性讨论】
接口幂等性就是用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生了副作用;比如说支付场景,用户购买了商品支付扣款成功,但是返回结果的时候网络异常,此时钱已经扣了,用户再次点击按钮,此时会进行第二次扣款,返回结果成功,用户查询余额返发现多扣钱了,流水记录也变成了两条...,这就没有保证接口的幂等性。原创 2023-05-13 10:29:55 · 309 阅读 · 0 评论 -
【谷粒商城之订单服务-RabbitMQ延时队列】
RabbitMQ可以对队列和消息分别设置TTL:推荐给队列设置过期时间对队列设置就是队列没有消费者连着的保留时间,也可以对每个单独的消息做单独的设置,超过了这个时间,我们认为这个消息就死了,称之为死信;如果队列设置了,消息也设置了,那么会取小的。所以一个消息如果被路由到不同的队列,这个消息死亡的时间有可能不一样(不同队列设置的)原创 2023-05-12 23:09:02 · 1448 阅读 · 0 评论 -
【谷粒商城之ThreadLocal用户身份鉴别】
ThreadLocal是一个池,也就是一个Map,存放的是一个线程下的共享数据,即同一个线程共享ThreadLocal中的数据核心原理是:Map threadLocal在每个线程中都创建了一个 ThreadLocalMap 对象,每个线程可以访问自己内部 ThreadLocalMap 对象内的 value。线程之间互不干扰一次请求进来: 拦截器 ==>> Controller ==>> Service ==>> dao 用的都是同一个线程原创 2023-05-08 22:45:28 · 727 阅读 · 1 评论 -
【谷粒商城之认证服务-异常机制】
Java异常处理机制具有一下优点:把各种不同类型的异常情况进行分类,用Java类来表示异常情况,这种类被称为异常类。把异常情况表示成异常类,可以充分发挥类的可扩展和可重用的优势。异常流程的代码和正常流程的代码分离,提高了程序的可读性,简化了程序的结构。可以灵活的处理异常,如果当前方法有能力处理异常,就捕获并处理它,否则只需要抛出异常,由方法调用者来处理它。原创 2023-05-08 16:45:53 · 86 阅读 · 0 评论 -
【谷粒商城之分布式锁Redisson-lock】
Redisson 是架设在 Redis 基础上的一个 Java 驻内存数据网格(In-Memory Data Grid)。充分的利用了 Redis 键值数据库提供的一系列优势, 基于 Java 实用工具包中常用接口,为使用者提供了一系列具有分布式特性的常用工具类。 使得原本作为协调单机多线程并发程序的工具包获得了协调分布式多机多线程并发系统的能力,大大降低了设计和研发大规模分布式系统的难度。同时结合各富特色的分布式服务,更进一步简化了分布式环境中程序相互之间的协作。原创 2023-05-07 00:17:19 · 1006 阅读 · 1 评论 -
【谷粒商城之远程调用和异步调用丢失请求头问题】
问题:feign在远程调用之前要构造请求,调用了很多的拦截器。浏览器发送请求,请求头自动带来了cookie 到order服务。order服务通过feign远程调用 cart服务,底层会给我们生成一个新的request请求去请求被调用的服务,并且这个请求不携带任何请求头,从而导致了在被调用方法中获取不到请求头cookie的问题。没有带请求头,cart服务就认为没登录。解决:加上feign远程调用的请求拦截器原创 2023-05-06 22:32:33 · 611 阅读 · 0 评论 -
【谷粒商城之消息队列RabbitMQ】
1. 大多应用中,可通过消息服务中间件来提升系统异步通信、扩展解耦能力2. 消息服务中两个重要概念:消息代理(message broker)和目的地(destination)当消息发送者发送消息以后,将由消息代理接管,消息代理保证消息传递到指定目的地。3. 消息队列主要有两种形式的目的地1. 队列(queue):点对点消息通信(point-to-point)2. 主题(topic):发布(publish)/订阅(subscribe)消息通信原创 2023-05-05 12:39:19 · 1781 阅读 · 0 评论 -
【谷粒商城之服务认证OAuth2.0】
OAuth: OAuth(开放授权)是一个开放标准,允许用户授权第三方网站访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方网站或分享他们数据的所有内容。OAuth2.0:对于用户相关的 OpenAPI(例如获取用户信息,动态同步,照片,日志,分享等),为了保护用户数据的安全和隐私,第三方网站访问用户数据前都需要显式的向用户征求授权。原创 2023-05-01 14:36:02 · 866 阅读 · 0 评论 -
【谷粒商城之MD5&盐值&BCrypt】
Apache.common下DigestUtils工具类的md5Hex()方法,将MD5加密后的数据转化为16进制。• 抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。• 强抗碰撞:想找到两个不同的数据,使它们具有相同的MD5值,是非常困难的。encode()方法 使用的就是MD5+盐值进行加密,盐值是随机产生的。后的密码存入数据库 下次匹配时,传入的明文密码和加密后的密码它能。• 压缩性:任意长度的数据,算出的MD5值长度都是固定的。MD5&盐值&BCrypt部分。原创 2023-05-01 11:17:18 · 677 阅读 · 0 评论 -
【谷粒商城之CompletableFuture异步编排】
在 Java 8 中, 新增加了一个包含 50 个方法左右的类: CompletableFuture,提供了非常强大的Future 的扩展功能,可以帮助我们简化异步编程的复杂性,提供了函数式编程的能力,可以通过回调的方式处理计算结果,并且提供了转换和组合 CompletableFuture 的方法。CompletableFuture 类实现了 Future 接口,所以你还是可以像以前一样通过get方法阻塞或者轮询的方式获得结果,但是这种方式不推荐使用。原创 2023-04-28 18:41:04 · 1177 阅读 · 0 评论 -
【谷粒商城之整合阿里云OSS对象存储】
一 、简介对象存储服务(Object Storage Service,OSS)是一种海量、安全、低成本、高可靠的云存储服务,适合存放任意类型的文件。容量和处理能力弹性扩展,多种存储类型供选择,全面优化存储成本。原创 2023-04-12 23:51:11 · 705 阅读 · 0 评论 -
【谷粒商城之JSR303数据校验和集中异常处理】
JSR-303 是 JAVA EE 6 中的一项子规范,叫做 Bean Validation。在任何时候,当你要处理一个应用程序的业务逻辑,数据校验是你必须要考虑和面对的事情。应用程序必须通过某种手段来确保输入进来的数据从语义上来讲是正确的。在通常的情况下,应用程序是分层的,不同的层由不同的开发人员来完成。很多时候同样的数据验证逻辑会出现在不同的层,这样就会导致代码冗余和一些管理的问题,比如说语义的一致性等。为了避免这样的情况发生,最好是将验证逻辑与相应的域模型进行绑定。原创 2023-04-10 23:03:15 · 817 阅读 · 0 评论