CQL:实战快速搭建弹性web应用|学习笔记

简介: 快速学习CQL:实战快速搭建弹性web应用

开发者学堂课程【Cassandra数据库入门与实战CQL:实战快速搭建弹性web应用】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/784


CQL:实战快速搭建弹性web应用

 

一、背景介绍

1、课程预览

What

基于Spring boot框架+cassandra数据库,实现一个支持海量用户的用户管理系统。

Why

Spring boot,大幅简化的应用搭建和开发的成本,cassandra作为开源分布式数据库,既具备NoSQL数据库高性能,高可用,海量无限扩展的特点,又具备类似关系型数据库的数据模型,非常适合开发在线应用。

Who

Web,开发入门者,希望深入了解cassandra设计和使用的用户。

How

本课程将引导观众从设计开始,手把手教用户实现一个用户管理系统。

2Spring Data for Cassandra

Cassandra

(1)去中心化,海量数据扩展能力

2Zero Down Time

3)支持二级索引,物化视图,集合等实用功能

4)被Apple Netflit360,华为等大公司广泛采用

Spring Date for Cassandra

1)降低cql语言的学习成本,提高开发速度

2)支持同步反应式或一步等多种模式

3)支持用户自定义复杂查询

4)一套代码支持MySQL冷热分离,ES加速查询,Redis缓存等多种玩法

Spring Data

1)强大的存储库和灵活的抽象映射

2)便于与Spring MVC controller集成

3)支持MySQLredis cassandra的数据库

 

3、准备工作

购买cassandra集群:

1)购买云cassandra服务

2)用户密码在云cassandra控制台,然后是集群详情,再然后是账号管理页面

链接串在数据库连接页面

配置集群:

1)云cassandra控制台,然后是集群详情,然后是数据库连接页面开通公网链接

2)云cassandra控制台到集群详情,再到数据安全页面配置本机IP进入白名单

配置开发环境:

1)下载并安装Idea开发环境

2)在Spring模板生成器中,生成项目模板

3)将生成好的项目导入Idea

 

二、系统设计

1、需求分析

我们要做的是一个用户管理系统,要把用户的数据存储在cassandra里,用户数据大体上分为几个属性,第一个是用户ID,每个用户都会有一个唯一的ID,第二个是用户的用户名,第三个是用户密码,最后一个是用户年龄。

功能需求里曾指的是增加新用户,删除就是把已有的用户删除,改就是修改用户的用户名,密码,年龄等,查分为很多类的查询,比如基于用户ID去查询,可能也会基于用户年龄去查询。

除了这些基本的功能需求之外,还有一些其他的需求,我们怎么去做高并发高性能的一个阐述?

比如说用户可能会频繁更新,同一条数据,或者说我们的系统能不能扛住100个用户同时做注册,第二是可扩展性,比如说在最开始的设计中,可能有很多功能是没有考虑到的,在今后的使用中,能不能将这些功能扩展出来。

 

1Schema设计

1Schema,设计思考路径

2)常见查询维度放主键,需要范围查询的数据放clustering key

Partition key是否能均匀打散数据,数据是否存在倾斜和热点

3)过滤、二级索引、物化视图

image.png

2CQL设计

image.png

还是按照增删改查的原则,首先是增,增我们在之前的学习中已经知道就是一个insert into的语法,删除也是比较简单的,目前我们的系统中都是根据ID去做删除的,更改它本身会有两个部分,首先改的主要是哪个字段,第二改的是哪条数据.

最后一个就是查,查询系统中会分为好几种,可以在整个数据中查找,也可以根据用户ID查找。

、编码实战

1、代码框架

image.png

Usercontroller:控制层,负责与前端交互,页面跳转

UserService:业务层,负责处理业务逻辑

User Repo DAO,层负责访问数据库获取数据

Cassandra Config:储存cassandra集群的访问配置

Resource:前端页面位置

2、增删改查-cassandra访问配置

image.png

3、增删改查-DAO

1)定义user对象,并指定ID对应user表的primary key

2DAO层只需要继承cassandra repository即可实现基本的增删改查,对于带条件的增删改查,通过Query的方式支持。

4、增删改查-Service

1)通过AutoWired标记链接DAU层。

2)本例子中业务逻辑比较简单,并未包括复杂的处理实际开发过程中,Service中可以处理复杂业务逻辑。

5、增删改查-Controller

1@Request mapping来映射请求,也就是通过它来指定控制器可以处理哪些URL请求,函数返回值标记跳转的页面地址。

2)返回值通过model.Add attribute返回前端。

6、前端页面

image.png

四、总结

1、演示总结

明确需求:

需要储存什么数据?需要查询什么语句?

设计表结构:

主键设计和二级索引

MVC实现:

基于model实现控制器

实现前端展示

2、更多高级功能-Serverless Cassandra

这些高级功能的核心就是传统的资源管理和去解决成本和稳定性的问题,传统模式本身会有几个问题,第一,可能服务本身体量很小,但如果要买这个数据库服务的话,起步门槛就比较高,每月可能就要花几百块钱,这对用户来说并不是特别友好。第二,随着使用cassandra的过程中网站不断扩大,对于传统数据库来讲,就需要不停的去做维护和规划。

 

功能介绍:

无需任何数据库管理,实例运行于庞大的数据池,按使用量计费,如用电一般随取随用,适用于不频发的间歇的或不可预测的工作负载。

简单易用:

全托管,无需数据库管理开源标准接口应用零改造,丰富生态和周边工具配套。

使用场景:

变化或不可预测的工作负载、定时处理任务的场景、新上线应用、完全免运维的用户。

经济高效:

超低门槛存储计算,独立计费,按使用量计费,多储存/可用性级别。

按需弹性:

存储计算,独立伸缩,无需容量规划,自动伸缩。

相关文章
|
1月前
|
Web App开发 编解码 vr&ar
使用Web浏览器访问UE应用的最佳实践
在3D/XR应用开发中,尤其是基于UE(虚幻引擎)开发的高精度场景,传统终端因硬件局限难以流畅运行高帧率、复杂效果的三维应用。实时云渲染技术,将渲染任务转移至云端服务器,降低终端硬件要求,确保用户获得流畅体验。具备弹性扩展、优化传输协议、跨平台支持和安全性等优势,适用于多种终端和场景,特别集成像素流送技术,帮助UE开发者实现低代码上云操作,简化部署流程,保留UE引擎的强大开发能力,确保画面精美且终端轻量化。
使用Web浏览器访问UE应用的最佳实践
|
2月前
|
弹性计算 Java 关系型数据库
Web应用上云经典架构实践教学
Web应用上云经典架构实践教学
Web应用上云经典架构实践教学
|
2月前
|
弹性计算 负载均衡 安全
云端问道-Web应用上云经典架构方案教学
本文介绍了企业业务上云的经典架构设计,涵盖用户业务现状及挑战、阿里云业务托管架构设计、方案选型配置及业务初期低门槛使用等内容。通过详细分析现有架构的问题,提出了高可用、安全、可扩展的解决方案,并提供了按量付费的低成本选项,帮助企业在业务初期顺利上云。
|
2月前
|
弹性计算 Java 数据库
Web应用上云经典架构实战
本课程详细介绍了Web应用上云的经典架构实战,涵盖前期准备、配置ALB、创建服务器组和监听、验证ECS公网能力、环境配置(JDK、Maven、Node、Git)、下载并运行若依框架、操作第二台ECS以及验证高可用性。通过具体步骤和命令,帮助学员快速掌握云上部署的全流程。
|
2月前
|
安全 应用服务中间件 网络安全
实战经验分享:利用免费SSL证书构建安全可靠的Web应用
本文分享了利用免费SSL证书构建安全Web应用的实战经验,涵盖选择合适的证书颁发机构、申请与获取证书、配置Web服务器、优化安全性及实际案例。帮助开发者提升应用安全性,增强用户信任。
|
2月前
|
Kubernetes 安全 Devops
有效抵御网络应用及API威胁,聊聊F5 BIG-IP Next Web应用防火墙
有效抵御网络应用及API威胁,聊聊F5 BIG-IP Next Web应用防火墙
97 10
有效抵御网络应用及API威胁,聊聊F5 BIG-IP Next Web应用防火墙
|
3月前
|
前端开发 JavaScript UED
在数字化时代,Web 应用性能优化尤为重要。本文探讨了CSS与HTML在提升Web性能中的关键作用及未来趋势
在数字化时代,Web 应用性能优化尤为重要。本文探讨了CSS与HTML在提升Web性能中的关键作用及未来趋势,包括样式表优化、DOM操作减少、图像优化等技术,并分析了电商网站的具体案例,强调了技术演进对Web性能的深远影响。
59 5
|
2月前
|
前端开发 安全 JavaScript
2025年,Web3开发学习路线全指南
本文提供了一条针对Dapp应用开发的学习路线,涵盖了Web3领域的重要技术栈,如区块链基础、以太坊技术、Solidity编程、智能合约开发及安全、web3.js和ethers.js库的使用、Truffle框架等。文章首先分析了国内区块链企业的技术需求,随后详细介绍了每个技术点的学习资源和方法,旨在帮助初学者系统地掌握Dapp开发所需的知识和技能。
2025年,Web3开发学习路线全指南
|
3月前
|
存储 前端开发 JavaScript
如何在项目中高效地进行 Web 组件化开发
高效地进行 Web 组件化开发需要从多个方面入手,通过明确目标、合理规划、规范开发、加强测试等一系列措施,实现组件的高效管理和利用,从而提高项目的整体开发效率和质量,为用户提供更好的体验。
55 7
|
3月前
|
开发框架 JavaScript 前端开发
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势。通过明确的类型定义,TypeScript 能够在编码阶段发现潜在错误,提高代码质量;支持组件的清晰定义与复用,增强代码的可维护性;与 React、Vue 等框架结合,提供更佳的开发体验;适用于大型项目,优化代码结构和性能。随着 Web 技术的发展,TypeScript 的应用前景广阔,将继续引领 Web 开发的新趋势。
66 2

热门文章

最新文章

  • 1
    打造高效的Web Scraper:Python与Selenium的完美结合
    13
  • 2
    Burp Suite Professional 2025.2 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
    26
  • 3
    AppSpider Pro 7.5.015 for Windows - Web 应用程序安全测试
    20
  • 4
    【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
    54
  • 5
    部署使用 CHAT-NEXT-WEB 基于 Deepseek
    342
  • 6
    【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
    26
  • 7
    java spring 项目若依框架启动失败,启动不了服务提示端口8080占用escription: Web server failed to start. Port 8080 was already in use. Action: Identify and stop the process that’s listening on port 8080 or configure this application to listen on another port-优雅草卓伊凡解决方案
    40
  • 8
    零基础构建开源项目OpenIM桌面应用和pc web- Electron篇
    28
  • 9
    【01】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-硬件设备实时监控系统运营版发布-本产品基于企业级开源项目Zabbix深度二开-分步骤实现预计10篇合集-自营版
    22
  • 10
    FastAPI与Selenium:打造高效的Web数据抓取服务 —— 采集Pixabay中的图片及相关信息
    55