技术栈-开发/运维
2020-04-28 14:14:14 0 举报
AI智能生成
开发技术栈
作者其他创作
大纲/内容
前端
jquery
后端
python
go
context
go defer(for defer),先进后出,后进先出
php
composer
基础
require/include/require_once/include_once
use/namespace
查看php信息
try/catch
常用扩展/库
monolog(日志库)
requests (http)
安装
mac安装
规范
文件命名规则
全局变量以g_开头
常量命名使用全部大写字符,单词之间以'_'连接
私有函数命名需加上 '_'前缀
关键字与其后的左括号之间有一个空格,函数名与左括号之间不应有空格
开始的大括号位于一行的末尾,结束的括号位于最末一行后,且独占一行
减少if/else嵌套, 更利于代码逻辑的理解
¹多行的”=”可能的话尽量用空格对齐
文件、函数、类以及成员变量都必须包含注释
elseif语句使用elseif形式,不使用else if形式
¹初始化array如果采用多行结构时,数据项部分需要缩进,且最后一个数据项后面的逗号不可省略
类method命名采用驼峰命名, 普通function采用过程函数风格命名
文件(除了类)命名使用小写字母,单词之间以'_'连接
配置文件的名称为配置文件名 + .conf.php, 不涉及类的都小写通过”_”连接
类名应以大写字母开头,每个单词的首字母大写
函数必须通过param和return标记指明其参数和返回值
对于函数返回值的判断,特别是true/false, 用===/!== 而不是==/!=
生成一个对象时,必须使用new Classname()的方式,不能用new Classname的方式
)所有的文件路径都需要利用框架提供的宏写成绝对路径
¹对于长时间运行的脚本并且含有占用内存较大的变量,使用完后必须unset掉,避免内存占用过多
除非特殊情况,否则不允许使用require和include,而使用对应的require_once/include_once
每个类单独为一个文件, 文件名为 原类名 + .class.php
测试
单元测试
go
Go testing包
python
压力测试
locust
文档
markdown
规范
部署路径 /data/deploy
监听端口 测试环境:10001 生产环境10002
每个方法写注释
每次操作前都准备预案
网络
四层/七层
TCP
三次握手
为什么要进行三次握手
四次挥手
TIME_WAIT/CLOSE_WAIT
TIME_WAIT/CLOSE_WAIT解决办法
操作系统
中断
硬中断
软中断
Linux启动流程
加载BIOS
读取MBR
Boot Loader
加载内核
用户层init依据inittab文件来设定运行等级
init进程执行rc.sysinit
启动内核模块
执行不同运行级别的脚本程序
执行/etc/rc.d/rc.local
执行/bin/login程序,进入登录状态
CPU
超线程
软连接/硬连接区别
监控系统
prometheus
alertmanager
基本告警、静默、分组、抑制
配置
高可用(gossip)
prometheus
告警规则
聚合
配置
服务发现
基于文件的服务发现
基于Consul的服务发现
常见使用场景
高可用
基本HA:多个实例,监控相同的集群
基本HA + 远程存储:多个实例 + remote storge
基本HA + 远程存储 + 联邦集群
exporter
常用exporter
cadvisor (容器监控)
MySQLD Exporter(mysql监控)
nginx-vts模块 (nginx监控)
监控kubernetes
metric类型
Counter:只增不减的计数器
Gauge:可增可减的仪表盘
Histogram和Summary (分析数据分布情况)
存储
本地
默认15天
远程
open-falcon
数据库
mysql
自建数据库
原理
ACID原理
原子性(Atomicity)
一致性(Consistency)
隔离性(Isolation)
持久性(Durability)
4种隔离级别
Read Uncommitted(读取未提交内容)
Read Committed(读取提交内容)
Repeatable Read(可重读)
Serializable(可串行化)
问题
脏读(Dirty Read)
不可重复读(Non-repeatable read)
幻读(Phantom Read)
事务
存储引擎
MyISAM
InnoDB
MEMORY
ARCHIVE
运维
主从
高可用
mha
atals
工具
inception (SQL上线检查)
pt_osc(在线改表,通过触发器实现)
pt-archive (归档)
innodbxtrabackup (备份/恢复)
云数据库
RDS
redis
数据类型
string
hash
List
Set
zset
持久化
AOF
RDB
比较
架构
单机
主从
哨兵
Twemproxy
redis-cluster
阿里云
常用
ecs
slb
rds
redis
域名/云解析
等保必备
云安全中心
云防火墙
web应用防火墙
堡垒机
数据库审计
ssl证书(通配符)
容器
docker
DockerFile
指令
FROM
RUN
CMD
ADD
COPY
swarm
定义
与k8s区别
底层原理
namespace
cgroup
rootfs
减小镜像体积的办法
优化基础镜像
尽量在同一层运行更多的命令
系统尽量精简 (Alpine,Scratch )
服务精简,瘦身,去除非必要文件
docker pull的时候尽量使用缓存
使用.dockerignore (类似.gitignore)
多阶段构建
docker-slim 工具
网络模式
host模式
container模式
none模式
bridge模式
k8s
高可用方案
证书
etcd 证书
cfssl
node访问master证书
组件
master
kube-api-server
kube-controller-manager
kube-schedule
node
kube-proxy
网络基础
容器间通信
同一Node中Pod间通信
不同Node中Pod间通信
service mesh
微服务
其他
ansible
常用模块
playbook
心理
1.皮实 (争论、刻薄的语气、不友好的语气、加班、领导质疑方案)
2.富有逻辑性
3.更系统
4.严谨
5.不掺杂情感,客观讨论问题
trouble shouting
core dump
linux down机
原因
内核bug
资源不足
硬件
排查方法
sar -r -f /var/log/sa/sa日期
/var/logmessage查看宕机前的系统日志,查看是否有告警信息
dmesg查看内核日志
查看/var/log/secure 安全日志判断是否有人恶意攻击服务器
history 查看是否有误操作
看看是否有OOM的日志 (内存溢出)
慢SQL
系统指标
iostat
网络丢包
mtr 192.168.0.1 -- report
ifconfig dropped
测带宽
qperf
tcpdump
RAID
RAID0
RAID1
RAID2、3、4
RAID5
RAID6
0 条评论
下一页