08 2021 档案

摘要:Zookeeper 01 Zookeeper安装 02 Zookeeper命令操作 03 JavaAPI操作 04 分布式锁 05 集群 阅读全文
posted @ 2021-08-22 14:12 1640808365 阅读(50) 评论(0) 推荐(0) 编辑
摘要:因为秒杀的特殊业务场景,生产场景下,还有可能要对秒杀下单接口进行访问流量控制,防止过多的请求进入到后端服务器。对于限流的实现方式,我们之前已经接触过通过nginx限流,网关限流。但是他们都是对一个大的服务进行访问限流,如果现在只是要对某一个服务中的接口方法进行限流呢?这里推荐使用google提供的g 阅读全文
posted @ 2021-08-11 16:06 1640808365 阅读(271) 评论(0) 推荐(0) 编辑
摘要:当前虽然可以确保用户只有在登录的情况下才可以进行秒杀下单,但是无法防止有一些恶意的用户在登录了之后,猜测秒杀下单的接口地址进行恶意刷单。所以需要对秒杀接口地址进行隐藏。 在用户每一次点击抢购的时候,都首先去生成一个随机数并存入redis,接着用户携带着这个随机数去访问秒杀下单,下单接口首先会从red 阅读全文
posted @ 2021-08-11 16:04 1640808365 阅读(444) 评论(0) 推荐(0) 编辑
摘要:修改下单业务层实现 dao层新增查询方法 public interface SeckillOrderMapper extends Mapper<SeckillOrder> { ​ /** * 查询秒杀订单信息 * @param username * @param id * @return */ @S 阅读全文
posted @ 2021-08-11 16:02 1640808365 阅读(110) 评论(0) 推荐(0) 编辑
摘要:在生产场景下,很有可能会存在某些用户恶意刷单的情况出现。这样的操作对于系统而言,会导致业务出错、脏数据、后端访问压力大等问题的出现。 一般要解决这个问题的话,需要前端进行控制,同时后端也需要进行控制。后端实现可以通过Redis incrde 原子性递增来进行解决。 更新秒杀服务下单 防重方法实现 / 阅读全文
posted @ 2021-08-11 16:00 1640808365 阅读(369) 评论(0) 推荐(0) 编辑
摘要:用户在下单的时候,需要基于JWT令牌信息进行登陆人信息认证,确定当前订单是属于谁的。 针对秒杀的特殊业务场景,仅仅依靠对象缓存或者页面静态化等技术去解决服务端压力还是远远不够。对于数据库压力还是很大,所以需要异步下单,异步是最好的解决办法,但会带来一些额外的程序上的复杂性。 秒杀服务-下单实现 1) 阅读全文
posted @ 2021-08-11 15:58 1640808365 阅读(299) 评论(0) 推荐(1) 编辑
摘要:秒杀商品首页会显示处于秒杀中以及未开始秒杀的商品。 秒杀首页实现分析 秒杀首页需要显示不同时间段的秒杀商品信息,然后当用户选择不同的时间段,查询该时间段下的秒杀商品,实现过程分为两大过程: 1) 加载时间菜单 2)加载时间菜单下秒杀商品信息 加载时间菜单分析 每2个小时就会切换一次抢购活动,所以商品 阅读全文
posted @ 2021-08-11 15:44 1640808365 阅读(419) 评论(0) 推荐(0) 编辑
摘要:秒杀商品由B端存入Mysql,设置定时任务,每隔一段时间就从Mysql中将符合条件的数据从Mysql中查询出来并存入缓存中,redis以Hash类型进行数据存储。 秒杀服务搭建 1)新建服务changgou_service_seckill 2)添加依赖信息,详情如下: <dependencies> 阅读全文
posted @ 2021-08-11 15:24 1640808365 阅读(272) 评论(0) 推荐(0) 编辑
摘要:需求分析 所谓“秒杀”,就是网络卖家发布一些超低价格的商品,所有买家在同一时间网上抢购的一种销售方式。通俗一点讲就是网络商家为促销等目的组织的网上限时抢购活动。由于商品价格低廉,往往一上架就被抢购一空,有时只用一秒钟。 秒杀商品通常有两种限制:库存限制、时间限制。 需求: (1)秒杀频道首页列出秒杀 阅读全文
posted @ 2021-08-11 15:16 1640808365 阅读(328) 评论(0) 推荐(0) 编辑
摘要:确认收货 需求分析与实现思路 当物流公司将货物送到了用户收货地址之后,需要用户点击确认收货,当用户点击了确认收货之后,会修改订单状态为已完成 代码实现 (1)OrderController新增方法 /** * 确认收货 * @param orderId 订单号 * @param operator 操 阅读全文
posted @ 2021-08-11 15:08 1640808365 阅读(754) 评论(0) 推荐(0) 编辑
摘要:批量发货业务逻辑 需求分析 实现批量发货的业务逻辑 代码实现 (1)OrderController新增方法 /** * 批量发货 * @param orders 订单列表 */ @PostMapping("/batchSend") public Result batchSend( @RequestB 阅读全文
posted @ 2021-08-11 15:03 1640808365 阅读(391) 评论(0) 推荐(0) 编辑
摘要:需求分析 超过限定时间并未支付的订单,我们需要进行超时订单的处理:先调用微信支付api,查询该订单的支付状态。如果未支付调用关闭订单的api,并修改订单状态为已关闭,并回滚库存数。如果该订单已经支付,则做补偿操作(修改订单状态和记录)。 实现思路 如何获取超过限定时间的订单?我们可以使用延迟消息队列 阅读全文
posted @ 2021-08-11 15:00 1640808365 阅读(1324) 评论(0) 推荐(0) 编辑
摘要:需求分析 当用户完成扫码支付后,跳转到支付成功页面 服务端推送方案 我们需要将支付的结果通知前端页面,其实就是我们通过所说的服务器端推送,主要有三种实现方案 (1)Ajax 短轮询 Ajax 轮询主要通过页面端的 JS 定时异步刷新任务来实现数据的加载 如果我们使用ajax短轮询方式,需要后端提供方 阅读全文
posted @ 2021-08-11 14:51 1640808365 阅读(467) 评论(0) 推荐(0) 编辑
摘要:需求分析 在完成支付后,修改订单状态为已支付,并记录订单日志。 实现思路 (1)接受微信支付平台的回调信息(xml) <xml><appid><![CDATA[wx8397f8696b538317]]></appid> <bank_type><![CDATA[CFT]]></bank_type> < 阅读全文
posted @ 2021-08-11 14:45 1640808365 阅读(1059) 评论(0) 推荐(0) 编辑
摘要:需求分析 用户在提交订单后,如果是选择支付方式为微信支付,那应该跳转到微信支付二维码页面,用户扫描二维码可以进行支付,金额与订单金额相同。 实现思路 前端页面向后端传递订单号,后端根据订单号查询订单,检查是否为当前用户的未支付订单,如果是则根据订单号和金额生成支付url返给前端,前端得到支付url生 阅读全文
posted @ 2021-08-11 14:36 1640808365 阅读(657) 评论(0) 推荐(0) 编辑
摘要:微信支付申请(了解) 第一步:注册公众号(类型须为:服务号) 请根据营业执照类型选择以下主体注册:个体工商户| 企业/公司| 政府| 媒体| 其他类型。 第二步:认证公众号 公众号认证后才可申请微信支付,认证费:300元/次。 第三步:提交资料申请微信支付 登录公众平台,点击左侧菜单【微信支付】,开 阅读全文
posted @ 2021-08-11 14:28 1640808365 阅读(3883) 评论(0) 推荐(1) 编辑
摘要:准备工作 changgou_order库新增数据表 DROP TABLE IF EXISTS `tb_task`; CREATE TABLE `tb_task` ( `id` bigint(32) NOT NULL AUTO_INCREMENT COMMENT '任务id', `create_tim 阅读全文
posted @ 2021-08-11 14:22 1640808365 阅读(331) 评论(0) 推荐(0) 编辑
摘要:Seata简介 Seata(原名Fescar) 是阿里18年开源的分布式事务的框架。Fescar的开源对分布式事务框架领域影响很大。作为开源大户,Fescar来自阿里的GTS,经历了好几次双十一的考验,一经开源便颇受关注。后来Fescar改名为Seata。 Fescar虽然是二阶段提交协议的分布式事 阅读全文
posted @ 2021-08-11 14:15 1640808365 阅读(273) 评论(2) 推荐(0) 编辑
摘要:基于XA协议的两阶段提交 2PC 首先我们来简要看下分布式事务处理的XA规范 : 可知XA规范中分布式事务有AP,RM,TM组成: 其中应用程序(Application Program ,简称AP):AP定义事务边界(定义事务开始和结束)并访问事务边界内的资源。 资源管理器(Resource Man 阅读全文
posted @ 2021-08-11 14:06 1640808365 阅读(63) 评论(0) 推荐(0) 编辑
摘要:刚才我们编写的扣减库存与保存订单是在两个服务中存在的,如果扣减库存后订单保存失败了是不会回滚的,这样就会造成数据不一致的情况,这其实就是我们所说的分布式事务的问题,接下来我们来学习分布式事务的解决方案。 本地事务与分布式事务 事务 数据库事务(简称:事务,Transaction)是指数据库执行过程中 阅读全文
posted @ 2021-08-11 13:58 1640808365 阅读(94) 评论(0) 推荐(0) 编辑
摘要:业务分析 点击提交订单的时候,会立即创建订单数据,创建订单数据会将数据存入到2张表中,分别是订单表和订单明细表,此处还需要修改商品对应的库存数量。 订单表结构如下: CREATE TABLE `tb_order` ( `id` varchar(50) COLLATE utf8_bin NOT NUL 阅读全文
posted @ 2021-08-11 13:46 1640808365 阅读(1813) 评论(0) 推荐(0) 编辑
摘要:收件地址分析 用户从购物车页面点击结算,跳转到订单结算页,结算页需要加载用户对应的收件地址,如下图: 表结构分析: CREATE TABLE `tb_address` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(50) DEF 阅读全文
posted @ 2021-08-11 13:28 1640808365 阅读(758) 评论(0) 推荐(0) 编辑
摘要:如上图所示,用户每次将商品加入购物车,或者点击购物车列表的时候,先经过订单购物车后端渲染服务,再通过feign调用购物车订单微服务来实现购物车的操作,例如:加入购物车、购物车列表。 购物车渲染服务搭建 在changgou_web中搭建订单购物车微服务工程changgou_web_order,该工程主 阅读全文
posted @ 2021-08-10 13:55 1640808365 阅读(228) 评论(0) 推荐(0) 编辑
摘要:购物车分为用户登录购物车和未登录购物车操作,国内知名电商京东用户登录和不登录都可以操作购物车,如果用户不登录,操作购物车可以将数据存储到Cookie,用户登录后购物车数据可以存储到Redis中,再将之前未登录加入的购物车合并到Redis中即可。 淘宝天猫则采用了另外一种实现方案,用户要想将商品加入购 阅读全文
posted @ 2021-08-10 13:38 1640808365 阅读(288) 评论(0) 推荐(0) 编辑
摘要:用户每次访问微服务的时候,先去oauth2.0服务登录,登录后再访问微服务网关,微服务网关将请求转发给其他微服务处理。 由于我们项目使用了微服务,任何用户都有可能使用任意微服务,此时我们需要控制相关权限,例如:普通用户角色不能使用用户的删除操作,只有管理员才可以使用,那么这个时候就需要使用到Spri 阅读全文
posted @ 2021-08-10 13:28 1640808365 阅读(641) 评论(0) 推荐(0) 编辑
摘要:新建网关工程changgou_gateway_web 1) changgou_gateway添加依赖 <!--网关依赖--> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>sp 阅读全文
posted @ 2021-08-10 13:20 1640808365 阅读(229) 评论(0) 推荐(0) 编辑
摘要:需求分析 功能流程图如下: 执行流程: 1、用户登录,请求认证服务 2、认证服务认证通过,生成jwt令牌,将jwt令牌及相关信息写入Redis,并且将身份令牌写入cookie 3、用户访问资源页面,带着cookie到网关 4、网关从cookie获取token,并查询Redis校验token,如果to 阅读全文
posted @ 2021-08-10 13:09 1640808365 阅读(104) 评论(0) 推荐(0) 编辑
摘要:准备工作 1) 搭建认证服务器之前,先在用户系统表结构中增加如下表结构: CREATE TABLE `oauth_client_details` ( `client_id` varchar(48) NOT NULL COMMENT '客户端ID,主要用于标识对应的应用', `resource_ids 阅读全文
posted @ 2021-08-10 13:00 1640808365 阅读(288) 评论(0) 推荐(0) 编辑
摘要:JSON Web Token(JWT)是一个开放的行业标准(RFC 7519),它定义了一种简介的、自包含的协议格式,用于 在通信双方传递json对象,传递的信息经过数字签名可以被验证和信任。JWT可以使用HMAC算法或使用RSA的公 钥/私钥对来签名,防止被篡改。 官网:https://jwt.i 阅读全文
posted @ 2021-08-10 12:44 1640808365 阅读(218) 评论(0) 推荐(0) 编辑
摘要:用户认证分析 上面流程图描述了用户要操作的各个微服务,用户查看个人信息需要访问客户微服务,下单需要访问订单微服务,秒杀抢购商品需要访问秒杀微服务。每个服务都需要认证用户的身份,身份认证成功后,需要识别用户的角色然后授权访问对应的功能。 单点登录 用户访问的项目中,至少有3个微服务需要识别用户身份,如 阅读全文
posted @ 2021-08-10 11:30 1640808365 阅读(182) 评论(0) 推荐(0) 编辑
摘要:热点问题 01 消息队列相关 02 redis相关 03 Java内存模型 04 Spring相关 05 JVM相关 06 网络编程|TcpIP|Http 07 MySql相关 08 Socket工作原理 09 深入java原子性 阅读全文
posted @ 2021-08-09 23:32 1640808365 阅读(166) 评论(0) 推荐(0) 编辑
摘要:1、为什么使用消息队列? 考察点: (1)消息队列都有哪些使用场景? (2)然后你项目里具体是什么场景? (3)说说你在这个场景里用的消息队列是什么? 先说一下消息队列的常见使用场景吧,其实场景有很多,但是比较核心的有3个:解耦、异步、削峰 (1)解耦: 现场画个图来说明一下,A系统发送个数据到BC 阅读全文
posted @ 2021-08-09 23:28 1640808365 阅读(116) 评论(0) 推荐(0) 编辑
摘要:消息可靠性的保障 消息补偿机制 这个图看起来好像很复杂,其实只做到了三件事情: 发消息 收到消息确认 检查比对是不是收到消息了 详细说明消息补偿流程 1.发生业务操作,业务数据写入数据库 2.生产者将消息发送给MQ的队列Q1 3.发送了一条与step2中一摸一样的延迟消息到对了Q3 4.消费者监听Q 阅读全文
posted @ 2021-08-05 15:11 1640808365 阅读(61) 评论(0) 推荐(0) 编辑
摘要:摘要:实际生产应用中都会采用消息队列的集群方案,如果选择RabbitMQ那么有必要了解下它的集群方案原理 一般来说,如果只是为了学习RabbitMQ或者验证业务工程的正确性那么在本地环境或者测试环境上使用其单实例部署就可以了,但是出于MQ中间件本身的可靠性、并发性、吞吐量和消息堆积能力等问题的考虑, 阅读全文
posted @ 2021-08-05 15:02 1640808365 阅读(244) 评论(0) 推荐(0) 编辑
摘要:过期时间TTL 过期时间TTL表示可以对消息设置预期的时间,在这个时间内都可以被消费者接收获取;过了之后消息将自动被删除。RabbitMQ可以对消息和队列设置TTL。目前有两种方法可以设置。 第一种方法是通过队列属性设置,队列中所有消息都有相同的过期时间。 第二种方法是对消息进行单独设置,每条消息T 阅读全文
posted @ 2021-08-05 14:48 1640808365 阅读(127) 评论(0) 推荐(0) 编辑
摘要:消息确认机制 确认并且保证消息被送达,提供了两种方式:发布确认和事务。(两者不可同时使用)在channel为事务时,不可引入确认模式;同样channel为确认模式下,不可使用事务。 发布确认 有两种方式:消息发送成功确认和消息发送失败回调。 消息发送成功确认 在spring-rabbitmq-pro 阅读全文
posted @ 2021-08-05 14:35 1640808365 阅读(93) 评论(0) 推荐(0) 编辑
摘要:需求分析 当系统审核完成商品,需要将商品详情页进行展示,那么采用静态页面生成的方式生成,并部署到高性能的web服务器中进行访问是比较合适的。所以,开发流程如下图所示: 此处MQ我们使用Rabbitmq即可。 执行步骤解释: 系统管理员(商家运维人员)修改或者审核商品的时候, 会更改数据库中商品上架状 阅读全文
posted @ 2021-08-04 10:32 1640808365 阅读(462) 评论(0) 推荐(0) 编辑
摘要:搜索分析 搜索页面要显示的内容主要分为3块。 1)搜索的数据结果 2)筛选出的数据搜索条件 3)用户已经勾选的数据条件 搜索实现 搜索的业务流程如上图,用户每次搜索的时候,先经过搜索业务工程,搜索业务工程调用搜索微服务工程。 搜索工程搭建 (1)引入依赖 在changgou-service_sear 阅读全文
posted @ 2021-08-04 10:16 1640808365 阅读(51) 评论(0) 推荐(0) 编辑
摘要:(1)th:action 定义后台控制器路径,类似<form>标签的action属性。 例如: <form th:action="@{/test/hello}" > <input th:type="text" th:name="id"> <button>提交</button> </form> (2) 阅读全文
posted @ 2021-08-04 10:02 1640808365 阅读(181) 评论(0) 推荐(0) 编辑
摘要:Thymeleaf介绍 thymeleaf是一个XML/XHTML/HTML5模板引擎,可用于Web与非Web环境中的应用开发。它是一个开源的Java库,基于Apache License 2.0许可,由Daniel Fernández创建,该作者还是Java加密库Jasypt的作者。 Thymele 阅读全文
posted @ 2021-08-04 09:54 1640808365 阅读(182) 评论(0) 推荐(0) 编辑
摘要:分页分析 页面需要实现分页搜索,所以我们后台每次查询的时候,需要实现分页。用户页面每次会传入当前页和每页查询多少条数据,当然如果不传入每页显示多少条数据,默认查询30条即可。 分页实现 分页使用PageRequest.of( pageNo- 1, pageSize);实现,第1个参数表示第N页,从0 阅读全文
posted @ 2021-08-04 09:46 1640808365 阅读(290) 评论(0) 推荐(0) 编辑
摘要:用户有可能会根据分类搜索、品牌搜索,还有可能根据规格搜索,以及价格搜索和排序操作。根据分类和品牌搜索的时候,可以直接根据指定域搜索,而规格搜索的域数据是不确定的,价格是一个区间搜索,所以我们可以分为三段实现,先实现分类、品牌搜素,再实现规格搜索,然后实现价格区间搜索。 品牌筛选 需求分析 页面每次向 阅读全文
posted @ 2021-08-04 09:37 1640808365 阅读(207) 评论(0) 推荐(0) 编辑
摘要:(1) changgou_service_search项目创建SearchService接口 public interface SearchService { /** * 全文检索 * @param paramMap 查询参数 * @return */ public Map search(Map<S 阅读全文
posted @ 2021-08-04 09:20 1640808365 阅读(81) 评论(0) 推荐(0) 编辑
摘要:需求分析 商品下架后将商品从索引库中移除。 实现思路 与商品上架的实现思路非常类似。 (1)在数据监控微服务中监控tb_spu表的数据,当tb_spu发生更改且is_marketable为0时,表示商品下架,将spu的id发送到rabbitmq。 (2)在rabbitmq管理后台创建商品下架交换器( 阅读全文
posted @ 2021-08-03 16:50 1640808365 阅读(82) 评论(0) 推荐(0) 编辑
摘要:需求分析 商品上架将商品的sku列表导入或更新索引库。 实现思路 (1)在数据监控微服务中监控tb_spu表的数据,当tb_spu发生更改且is_marketable为1时,表示商品上架,将spu的id发送到rabbitmq。 (2)在rabbitmq管理后台创建商品上架交换器(fanout)。使用 阅读全文
posted @ 2021-08-03 16:00 1640808365 阅读(158) 评论(0) 推荐(0) 编辑
摘要:需求分析 当tb_ad(广告)表的数据发生变化时,更新redis中的广告数据。 实现思路 (1)修改数据监控微服务,监控tb_ad表,当发生增删改操作时,提取position值(广告位置key),发送到rabbitmq (2)从rabbitmq中提取消息,通过OkHttpClient调用ad_upd 阅读全文
posted @ 2021-08-03 15:56 1640808365 阅读(108) 评论(0) 推荐(0) 编辑
摘要:canal简介 canal可以用来监控数据库数据的变化,从而获得新增数据,或者修改的数据。 canal是应对阿里巴巴存在杭州和美国的双机房部署,存在跨机房同步的业务需求而提出的。 阿里系公司开始逐步的尝试基于数据库的日志解析,获取增量变更进行同步,由此衍生出了增量订阅&消费的业务。 原理相对比较简单 阅读全文
posted @ 2021-08-03 15:50 1640808365 阅读(962) 评论(0) 推荐(0) 编辑
摘要:一般情况下,首页的并发量是比较大的,即使有了多级缓存,如果有大量恶意的请求,也会对系统造成影响。而限流就是保护措施之一。 nginx提供两种限流的方式: 一是控制速率 二是控制并发连接数 控制速率 控制速率的方式之一就是采用漏桶算法。 漏桶算法实现控制速率限流 漏桶(Leaky Bucket)算法思 阅读全文
posted @ 2021-08-03 15:40 1640808365 阅读(811) 评论(0) 推荐(0) 编辑
摘要:需求分析 需要在页面上显示广告的信息。 OpenResty OpenResty介绍 OpenResty(又称:ngx_openresty) 是一个基于 NGINX 的可伸缩的 Web 平台,由中国人章亦春发起,提供了很多高质量的第三方模块。 OpenResty 是一个强大的 Web 应用服务器,We 阅读全文
posted @ 2021-08-03 15:34 1640808365 阅读(298) 评论(0) 推荐(0) 编辑
摘要:lua是什么 Lua 是一个小巧的脚本语言。它是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个由Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Fig 阅读全文
posted @ 2021-08-03 15:24 1640808365 阅读(493) 评论(0) 推荐(0) 编辑
摘要:需求分析 商品列表中的删除商品功能,并非真正的删除(物理删除),而是采用逻辑删除将删除标记的字段设置为1. 在回收站中有还原商品的功能,将删除标记的字段设置为0 在回收站中有删除商品的功能,是真正的物理删除,将数据从数据库中删除掉。 实现思路 商品列表中的删除商品,执行逻辑删除,修改spu表is_d 阅读全文
posted @ 2021-08-03 09:43 1640808365 阅读(168) 评论(0) 推荐(0) 编辑
摘要:需求分析 商品新增后,审核状态为0(未审核),默认为下架状态。 审核商品,需要校验是否是被删除的商品,如果未删除则修改审核状态为1,并自动上架 下架商品,需要校验是否是被删除的商品,如果未删除则修改上架状态为0 上架商品,需要审核状态为1,如果为1,则更改上下架状态为1 实现思路 (1)按照ID查询 阅读全文
posted @ 2021-08-03 09:39 1640808365 阅读(209) 评论(0) 推荐(0) 编辑
摘要:概念与表结构分析 SPU与SKU概念 SPU = Standard Product Unit (标准产品单位) 概念 : SPU 是商品信息聚合的最小单位,是一组可复用、易检索的标准化信息的集合,该集合描述了一个产品的特性。 通俗点讲,属性值、特性相同的货品就可以称为一个 SPU 例如:华为P30  阅读全文
posted @ 2021-08-03 09:35 1640808365 阅读(242) 评论(0) 推荐(0) 编辑
摘要:分布式ID生成解决方案 UUID 常见的方式。可以利用数据库也可以利用程序生成,一般来说全球唯一。 优点: 1)简单,代码方便。 2)生成ID性能非常好,基本不会有性能问题。 3)全球唯一,在遇见数据迁移,系统数据合并,或者数据库变更等情况下,可以从容应对。 缺点: 1)没有排序,无法保证趋势递增。 阅读全文
posted @ 2021-08-03 09:24 1640808365 阅读(133) 评论(0) 推荐(0) 编辑
摘要:什么是微服务鉴权 我们之前已经搭建过了网关,使用网关在系统中比较适合进行权限校验。 那么我们可以采用JWT的方式来实现鉴权校验。 JWT JSON Web Token(JWT)是一个非常轻巧的规范。这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息。 一个JWT实际上就是一个字符串,它由 阅读全文
posted @ 2021-08-02 17:18 1640808365 阅读(851) 评论(0) 推荐(0) 编辑
摘要:BCrypt快速入门 在用户模块,对于用户密码的保护,通常都会进行加密。我们通常对密码进行加密,然后存放在数据库中,在用户进行登录的时候,将其输入的密码进行加密然后与数据库中存放的密文进行比较,以验证用户密码是否正确。 目前,MD5和BCrypt比较流行。相对来说,BCrypt比MD5更安全。因为其 阅读全文
posted @ 2021-08-02 17:01 1640808365 阅读(1055) 评论(0) 推荐(0) 编辑
摘要:我们之前说过,网关可以做很多的事情,比如,限流,当我们的系统被频繁的请求的时候,就有可能将系统压垮,所以为了解决这个问题,需要在每一个微服务中做限流操作,但是如果有了网关,那么就可以在网关系统做限流,因为所有的请求都需要先通过网关系统才能路由到微服务中。 思路分析 令牌桶算法 令牌桶算法是比较常见的 阅读全文
posted @ 2021-08-02 16:55 1640808365 阅读(505) 评论(0) 推荐(0) 编辑
摘要:微服务网关概述 不同的微服务一般会有不同的网络地址,而外部客户端可能需要调用多个服务的接口才能完成一个业务需求,如果让客户端直接与各个微服务通信,会有以下的问题: 客户端会多次请求不同的微服务,增加了客户端的复杂性 存在跨域请求,在一定场景下处理相对复杂 认证复杂,每个服务都需要独立认证 难以重构, 阅读全文
posted @ 2021-08-02 16:52 1640808365 阅读(443) 评论(0) 推荐(0) 编辑
摘要:FastDFS简介 FastDFS体系结构 FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。 FastDFS为互联网量身定制, 阅读全文
posted @ 2021-08-02 16:45 1640808365 阅读(142) 评论(0) 推荐(0) 编辑
摘要:我们本小节只需同学们理解管理后台规格参数与分类管理的需求和表结构的设计,没有代码实现,因为管理后台所需的代码在基础工程中已经帮我们生成了,无需自己编写。 规格参数管理 需求分析 规格参数模板是用于管理规格参数的单元。规格是例如颜色、手机运行内存等信息,参数是例如系统:安卓(Android)后置摄像头 阅读全文
posted @ 2021-08-02 16:35 1640808365 阅读(282) 评论(0) 推荐(0) 编辑
摘要:什么是跨域 出于浏览器的同源策略限制。同源策略(Sameoriginpolicy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。同源策略会阻止一个域的javascrip 阅读全文
posted @ 2021-08-02 16:27 1640808365 阅读(191) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示
主题色彩