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的过程中网站不断扩大,对于传统数据库来讲,就需要不停的去做维护和规划。

 

功能介绍:

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

简单易用:

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

使用场景:

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

经济高效:

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

按需弹性:

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

相关文章
|
23天前
|
前端开发 JavaScript 安全
前端性能调优:HTTP/2与HTTPS在Web加速中的应用
【10月更文挑战第27天】本文介绍了HTTP/2和HTTPS在前端性能调优中的应用。通过多路复用、服务器推送和头部压缩等特性,HTTP/2显著提升了Web性能。同时,HTTPS确保了数据传输的安全性。文章提供了示例代码,展示了如何使用Node.js创建一个HTTP/2服务器。
37 3
|
23天前
|
设计模式 前端开发 数据库
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第27天】本文介绍了Django框架在Python Web开发中的应用,涵盖了Django与Flask等框架的比较、项目结构、模型、视图、模板和URL配置等内容,并展示了实际代码示例,帮助读者快速掌握Django全栈开发的核心技术。
122 45
|
10天前
|
缓存 安全 网络安全
HTTP/2与HTTPS在Web加速中的应用
HTTP/2与HTTPS在Web加速中的应用
|
13天前
|
SQL 安全 前端开发
PHP与现代Web开发:构建高效的网络应用
【10月更文挑战第37天】在数字化时代,PHP作为一门强大的服务器端脚本语言,持续影响着Web开发的面貌。本文将深入探讨PHP在现代Web开发中的角色,包括其核心优势、面临的挑战以及如何利用PHP构建高效、安全的网络应用。通过具体代码示例和最佳实践的分享,旨在为开发者提供实用指南,帮助他们在不断变化的技术环境中保持竞争力。
|
18天前
|
前端开发 API 开发者
Python Web开发者必看!AJAX、Fetch API实战技巧,让前后端交互如丝般顺滑!
在Web开发中,前后端的高效交互是提升用户体验的关键。本文通过一个基于Flask框架的博客系统实战案例,详细介绍了如何使用AJAX和Fetch API实现不刷新页面查看评论的功能。从后端路由设置到前端请求处理,全面展示了这两种技术的应用技巧,帮助Python Web开发者提升项目质量和开发效率。
33 1
|
21天前
|
SQL 负载均衡 安全
安全至上:Web应用防火墙技术深度剖析与实战
【10月更文挑战第29天】在数字化时代,Web应用防火墙(WAF)成为保护Web应用免受攻击的关键技术。本文深入解析WAF的工作原理和核心组件,如Envoy和Coraza,并提供实战指南,涵盖动态加载规则、集成威胁情报、高可用性配置等内容,帮助开发者和安全专家构建更安全的Web环境。
39 1
|
24天前
|
前端开发 安全 应用服务中间件
前端性能调优:HTTP/2与HTTPS在Web加速中的应用
【10月更文挑战第26天】随着互联网的快速发展,前端性能调优成为开发者的重要任务。本文探讨了HTTP/2与HTTPS在前端性能优化中的应用,介绍了二进制分帧、多路复用和服务器推送等特性,并通过Nginx配置示例展示了如何启用HTTP/2和HTTPS,以提升Web应用的性能和安全性。
24 3
|
24天前
|
安全 数据库 开发者
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第26天】本文详细介绍了如何在Django框架下进行全栈开发,包括环境安装与配置、创建项目和应用、定义模型类、运行数据库迁移、创建视图和URL映射、编写模板以及启动开发服务器等步骤,并通过示例代码展示了具体实现过程。
35 2
|
24天前
|
前端开发 JavaScript API
前端框架新探索:Svelte在构建高性能Web应用中的优势
【10月更文挑战第26天】近年来,前端技术飞速发展,Svelte凭借独特的编译时优化和简洁的API设计,成为构建高性能Web应用的优选。本文介绍Svelte的特点和优势,包括编译而非虚拟DOM、组件化开发、状态管理及响应式更新机制,并通过示例代码展示其使用方法。
36 2
|
24天前
|
API 持续交付 PHP
PHP在现代Web开发中的应用与未来展望####
【10月更文挑战第25天】 本文深入探讨了PHP作为服务器端脚本语言在现代Web开发中的关键作用,分析了其持续流行的原因,并展望了PHP在未来技术趋势中的发展方向。通过实例解析和对比分析,揭示了PHP如何适应快速变化的技术环境,保持其在动态网站构建中的核心地位。 ####
下一篇
无影云桌面