网站建设推广软文案例,玩具网站模板,网站开发需要人员,企业邮箱查询网站云服务、API、SDK#xff0c;调试#xff0c;查看#xff0c;我都行
阅读短文您可以学习到#xff1a;应用中间件系列之Redis实现#xff08;电商网站#xff09;秒杀抢购示例 1 什么是DEVKIT
华为云开发者插件#xff08;Huawei Cloud Toolkit#xff09;…云服务、API、SDK调试查看我都行
阅读短文您可以学习到应用中间件系列之Redis实现电商网站秒杀抢购示例 1 什么是DEVKIT
华为云开发者插件Huawei Cloud Toolkit作为华为云围绕其产品能力向开发者桌面上的延伸帮助开发者快速在本地连接华为云打通华为云到开发者的最后一公里。Huawei Cloud ToolKit是围绕华为云开发者生态工具体系打造的一系列IDE插件支持VS Code、IntelliJ IDEA等系列平台、以及华为云自研 CodeArts IDE 帮助开发者更高效、便捷的搭建应用。致力于为开发者提供更稳定、快速、安全的编程体验。
体验路径Toolkit-华为云 2 IDE与DEVKIT的关系
2.1 什么是CodeArts IDE
CodeArts IDE是一个集成开发环境IDE兼具源代码编辑器的简易性和开发人员工具的强大功能如代码补全和调试。
下载路径Toolkit-华为云 2.2 IntelliJ IDEA与DEVKIT的关系
安装准备
下载并安装JDK1.8或更高版本。
下载并安装IntelliJ IDEA 2020.2或更高版本。
安装验证
在IntelliJ系列平台上安装插件成功后在左侧的导航栏中可以看到Huawei Cloud Toolkit图标点击后面板会出现Huawei Cloud API的字样则说明安装成功。
下载路径Toolkit-华为云 2.3 CodeArts IDE与DEVKIT的关系
API插件是CodeArts IDE原生内置的插件默认已经安装。左侧的导航栏中可以看到相关图标。 下载路径Toolkit-华为云
2.4 Visual Studio Code IDE与DEVKIT的关系
安装准备
下载并安装Visual Studio Code最新版本。
安装验证
在VS Code IDE安装插件成功后在左侧的导航栏中可以看到Huawei Cloud Toolkit图标点击后面板会出现Huawei Cloud API的字样则说明安装成功。
下载路径Toolkit-华为云 3 Redis实现电商网站秒杀抢购示例
3.1 Redis实现电商网站秒杀抢购示例
版本说明
本示例基于华为云分布式缓存服务Redis基础版 5.0开发。
简介
Redis实现电商网站秒杀抢购示例Java版本
电商网站的商品类目、推荐系统以及秒杀抢购活动适宜使用Redis缓存数据库。
例如秒杀抢购活动并发高对于传统关系型数据库来说访问压力大需要较高的硬件配置如磁盘IO支撑。Redis数据库单节点QPS支撑能达到10万轻松应对秒杀并发。实现秒杀和数据加锁的命令简单使用SET、GET、DEL、RPUSH等命令即可。对分布式应用加锁能够避免出现库存超卖及无序访问等现象。本实践介绍如何使用Redis对分布式应用加锁。
开发前准备
注册华为云账号详细操作请参见如何注册华为云管理控制台的用户并完成实名认证。
已购买具有公网IP的ECS详细操作请参见购买并登录Linux弹性云服务器。
已购买DCS缓存实例详细操作请参见购买缓存实例且需保证DCS实例与已购买具的ECS在同一虚拟私有云、子网内并在已购买具的ECS上配置公网访问Redis详细操作请参见使用Nginx实现公网访问Redis 4.0/5.0的单机/主备/Proxy集群实例。
安装SDK
您可以通过Maven方式获取和安装SDK首先需要在您的操作系统中下载并安装Maven 安装完成后您只需要在Java项目的pom.xml文件中加入相应的依赖项即可。
dependencygroupIdredis.clients/groupIdartifactIdjedis/artifactIdversion2.9.0/version
/dependency开始使用
导入依赖模块
// 通用唯一识别码类
import java.util.UUID;
// Redis客户端Jedis类
import redis.clients.jedis.Jedis;
加锁
示例代码 /** param lockName 锁名* param timeout 获取锁的超时时间* param lockTimeout 锁的有效时间* return 锁的标识*/public String getLockWithTimeout(String lockName, long timeout, long lockTimeout) {String ret null;Jedis jedisClient new Jedis(HOST, PORT);try {String authMsg jedisClient.auth(YOUR PASSWORD);if (!SUCCESS.equals(authMsg)) {System.out.println(AUTH FAILED: authMsg);}String identifier UUID.randomUUID().toString();String lockKey DLock: lockName;long end System.currentTimeMillis() timeout;while (System.currentTimeMillis() end) {String result jedisClient.set(lockKey, identifier, SET_IF_NOT_EXIST, EXPIRE_TIME, lockTimeout);if (SUCCESS.equals(result)) {ret identifier;break;}try {Thread.sleep(2);} catch (InterruptedException e) {Thread.currentThread().interrupt();}}} catch (Exception e) {} finally {jedisClient.quit();jedisClient.close();}return ret;}
释放锁
示例代码 /** param lockName 锁名* param identifier 锁的标识*/public void releaseLock(String lockName, String identifier) {Jedis jedisClient new Jedis(HOST, PORT);try {String authMsg jedisClient.auth(YOUR PASSWORD);if (!SUCCESS.equals(authMsg)) {System.out.println(AUTH FAILED: authMsg);}String lockKey DLock: lockName;if (identifier.equals(jedisClient.get(lockKey))) {jedisClient.del(lockKey);}} catch (Exception e) {} finally {jedisClient.quit();jedisClient.close();}}模拟手机秒杀抢购
示例代码
public void handleOder() {String userName UUID.randomUUID().toString().substring(0, 8) Thread.currentThread().getName();String identifier DLock.getLockWithTimeout(Huawei Mate 10, 10000, 2000);System.out.println(正在为用户 userName 处理订单);if (n 0) {int num MAX - n 1;System.out.println(用户 userName 购买第 num 台剩余 (--n) 台);} else {System.out.println(用户 userName 无法购买已售罄);}DLock.releaseLock(Huawei Mate 10, identifier);}1.1 应用场景
应用场景
电商秒杀是一种网上竞拍活动通常商家会在平台释放少量稀缺商品吸引大量客户平台会收到平时数十倍甚至上百倍的下单请求。但是只有少数客户可以下单成功。电商秒杀系统的分流过程可以分为以下几个步骤
用户请求进入系统当用户发起秒杀请求时请求会首先进入负载均衡服务器。
负载均衡负载均衡服务器会根据一定的算法将请求分发给后端多台服务器以达到负载均衡的目的。负载均衡算法可以采用轮询、随机、最少连接数等方式。
业务逻辑处理后端服务器接收到请求后进行业务逻辑处理并根据请求的商品数量、用户身份等信息进行校验。
库存扣减如果库存充足后端服务器会进行库存扣减操作并生成订单信息返回给用户秒杀成功的信息如果库存不足则返回给用户秒杀失败的信息。
订单处理后端服务器会将订单信息保存到数据库中并进行异步处理例如发送消息通知用户订单状态。
缓存更新后端服务器会更新缓存中的商品库存信息以便处理下一次秒杀请求。
秒杀过程中多次访问数据库下单通常是利用行级锁进行访问限制抢到锁才能查询数据库和下单。但是秒杀时的大量订单请求往往使数据库访问阻塞。
2 体验插件的魅力
华为云devkit已上线Toolkit-华为云