这是我参与「第五届青训营 」伴学笔记活动十二天。
实践课:系统设计
概述
系统设计方法论
- 为什么要做系统设计
- 个人
- 工作
- 系统设计的概念
- 方法
- 4S分析法
- 分析系统瓶颈和优化
- 火焰图分析
- 链路分析
- 全链路测压
- 验证系统可用性和稳定性
- 链路梳理
- 可观测性
- 全链路测试
- 稳定性控制
- 容灾演练
电商秒杀业务介绍
- 基本概念
- Spu
- Sku
- 秒杀业务的特点
- 挑战
- 资源有限
- 反欺诈
- 高性能
- 防止超卖
- 流量管控
- 扩展性
- 鲁棒性
课程实践
-
4S分析
- 场景
- 存储
- 功能
- 扩展
-
系统架构图
-
秒杀流程
课程总结
课前
电商概念和流程
电商平台业务
秒杀业务特点
MySQL
安装
熟悉ddl,dml基础语法
- DDL(data definition language)数据定义语言
- 创建数据库
- create database IF NOT EXISTS myDB CHARACTER SET utf8;
- 创建表格
- use myDB;
- create table IF NOT EXISTS unit(
- id int,
- name varchar(30),
- age int);
- 更新表结构
- desc unit //查看表结构describe 跟降序是一个缩写descend
- alter table unit drop column age; //删除列
- alter table unit add column age int; //删除行
- 删除表、删除数据库
- drop table unit;
- drop database myDB;
- 创建数据库
- DML(data manipulation language)数据操纵语言 主要是CRUD
- select * from unit;
- select name, age from unit;
- select name as name,age as age from unit;
sql优化
Redis
- REmote DIctionary Server(Redis) 是一个由 Salvatore Sanfilippo 写的 key-value 存储系统,是跨平台的非关系型数据库。
Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库,并提供多种语言的 API。
安装
基本数据类型和使用场景
- 数据类型
- string 字符串
- hash 散列表
- list 列表
- set 集合
- sorted set 有序集合
常用命令
- 本地服务
$ redis-cli
redis 127.0.0.1:6379>
redis 127.0.0.1:6379> PING
PONG
- 远端服务
$redis-cli -h 127.0.0.1 -p 6379 -a "mypass"
redis 127.0.0.1:6379>
redis 127.0.0.1:6379> PING
PONG
Lua脚本使用
Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。
- 交互式编程
$ lua -i
$ Lua 5.3.0 Copyright (C) 1994-2015 Lua.org, PUC-Rio
>
> print("Hello World!")
Hello World!
>
- 脚本式编程 我们可以将 Lua 程序代码保存到一个以 lua 结尾的文件,并执行,该模式称为脚本式编程
Redis分布式锁
RocketMQ(Apache)
RocketMQ(MESSAGE QUEUE)是由阿里捐赠给Apache的一款低延迟、高并发、高可用、高可靠的分布式消息中间件。经历了淘宝双十一的洗礼。RocketMQ既可为分布式应用系统提供异步解耦和削峰填谷的能力,同时也具备互联网应用所需的海量消息堆积、高吞吐、可靠重试等特性。
安装
基础概念和架构
MQ使用场景
OpenResty
OpenResty® 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。
安装
Nginx基础概念和使用(TOMCAT 不能支持高并发)
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
反向代理: 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。
正向代理: 是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理。
Lua脚本的语法
Linux
常用命令
进程和线程
Java
JDK
基础语法和lambda表达式
idea的使用
并发编程
springboot框架的使用
maven的使用
Jmeter
JMeter是开源软件Apache基金会下的一个性能测试工具,用来测试部署在服务器端的应用程序的性能。近来,JMeter因为其使用简单,现在也被社区作为接口测试工具...... 啥?什么是性能测试,怎么又来了个接口测试? 好吧,xmeter君举个栗子,你开了一个网店,兴冲冲地准备双十一大干一把,没想当天活动的时候大量用户一访问你的网店,你的网店挂了,那怎么办?办法就是在实际搞活动之前,先测试一下以确认系统能承受那么多的用户,当然测试的时候我们不需要请真正的这么多实际用户,否则得花多少钱啊,JMeter就是那个能帮助模拟大量用户访问你网站的一个软件。对,而且它是开源的,不花钱!那个接口测试呢,这里大概了解一下就可以了,就是验证你的网店应用逻辑有没有问题的,比如你做打折活动的时候,结算的时候金额别出错,要不客户找你麻烦不是?
作者:XMeter性能测试云服务
链接:www.jianshu.com/p/0e4daecc8…
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。