后端学习 | 青训营笔记

92 阅读5分钟

这是我参与「第五届青训营 」伴学笔记活动十二天。

实践课:系统设计

概述

系统设计方法论

  • 为什么要做系统设计
    • 个人
    • 工作
  • 系统设计的概念
  • 方法
    • 4S分析法
  • 分析系统瓶颈和优化
    • 火焰图分析
    • 链路分析
    • 全链路测压
  • 验证系统可用性和稳定性
    • 链路梳理
    • 可观测性
    • 全链路测试
    • 稳定性控制
    • 容灾演练

电商秒杀业务介绍

  • 基本概念
    • Spu
    • Sku
    • 秒杀业务的特点
  • 挑战
    • 资源有限
    • 反欺诈
    • 高性能
    • 防止超卖
    • 流量管控
    • 扩展性
    • 鲁棒性

课程实践

  • 4S分析

    • 场景
    • 存储
    • 功能
    • 扩展
  • 系统架构图 image.png

  • 秒杀流程

image.png

课程总结

课前

电商概念和流程

电商平台业务

秒杀业务特点

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…
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

安装

压测