lin_zone
大型分布式网站架构设计与实践笔记(第一次看)
关注作者
前往小程序,Get
更优
阅读体验!
立即前往
腾讯云
开发者社区
文档
建议反馈
控制台
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
搜索
搜索
关闭
发布
登录/注册
首页
学习
活动
专区
工具
TVP
最新优惠活动
返回腾讯云官网
lin_zone
首页
学习
活动
专区
工具
TVP
最新优惠活动
返回腾讯云官网
社区首页
>
专栏
>
大型分布式网站架构设计与实践笔记(第一次看)
大型分布式网站架构设计与实践笔记(第一次看)
lin_zone
关注
发布于 2019-02-22 15:01:39
421
0
发布于 2019-02-22 15:01:39
举报
文章被收录于专栏:
LIN_ZONE
LIN_ZONE
互联网安全架构
常见的web攻击手段
xss攻击(跨站脚本攻击 Cross Site Scripting)
攻击原理: 用户输入的数据变成了代码
防范: 需要对用户输入的数据进行html转义处理
CSRF攻击(跨站请求伪造 cross site request forgery)
攻击原理: 盗取受信任用户身份,利用该身份攻击存在csrf漏洞的网站进行攻击 攻击者要完成CSRF攻击需要用户做到以下几点:
登录受信任的站点A,并在本地生成cookie
在不(清除站点A的cookie)的情况下,访问恶意站点B
防范:
将cookie设置为HttpOnly
增加token
通过 Referer 识别
sql注入攻击
通过把sql命令伪装成正常的http请求参数,传递到服务端,欺骗服务器最终指向恶意的sql命令,达到入侵目的
例: 用户如果提交 nick为zhangsan 密码为 ' or '1'='1 时如果形成下面的sql 就攻击成功了 select * from user where nick = 'zhangsan' and passwords = '' or '1'='1';
防范
使用预编译语句
使用ORM框架
避免密码明文存放
处理好相应的异常
文件上传漏洞
不能简单地通过后缀名来判断文件类型
,很多类型的文件起始的几个字节内容是固定的,根据这几个字节(魔数)的内容就可以确定文件类型
imagemagick 与 jmagick的安装使用
DDos攻击(分布式拒绝服务攻击)
最dos基本的攻击是 利用合理的客户端请求来占用过多的服务器资源,从而使合法用户无法得到服务器的响应
借助公共网络将数量庞大的计算机设备联合起来作为攻击平台,对一个或多个目标发动攻击,从而达到瘫痪目标主机的目的
DDoS攻击手段
SYN Flood 基于TCP
DNS Query Flood 基于UDP
CC攻击 基于http 攻击在应用层发起
其他攻击手段
常见的攻击手段还有DNS域名解析、CDN回源攻击、服务器权限提升,缓冲区溢出,以及一些依赖于平台或者具体软件漏洞的攻击
常见的安全算法
数字摘要
计算出来的摘要的长度是固定的
输入不同,摘要以后产生的摘要消息也不同,相同的输入必定会产生相同的输出
消息摘要不包括原文的完整信息,因此只能正向的信息摘要,无法从摘要中恢复出原来的信息
常见的算法有:
MD5
SHA
十六进制编码
Base64编码
彩虹表破解Hash算法
对称加密算法
DES
AES
非对称加密算法
RSA算法
数字签名
MD5withRSA
SHA1withRSA
数字证书
X.509 大多数的数字证书都以这种标准的格式来存储它们的信息
证书签发
证书校验
证书管理
证书的使用
摘要认证
摘要认证的原因
摘要认证的原理
摘要认证的实现
签名认证
签名认证的原理
与摘要认证相比,签名认证的优势在于加密时使用的是私钥,而解密时使用的是对外公开的公钥,私钥由私钥持有者保管,安全性大大提高,但相较于摘要认证,签名认证所使用的非对称加密算法将消耗更对的时间和硬件资源
签名认证的实现: 签名认证的实现与摘要认证的实现类似,都需要经过四步
客户端参数签名生成
服务端参数签名校验
服务端响应签名生成
客户端响应签名校验
HTTPS协议
协议原理
HTTPS的全称是 Hypertext Transfer Protocol over Secure Socket Layer 即基于ssl的http协议
https既支持单向认证也支持双向认证
SSL/TLS
SSL协议的优势 与应用层协议无关,在应用层通信之前就已经完成加密算法,通信密钥的协商以及服务端对客户端的认证,在此之后所有应用层协议所传输的数据都会被加密
OAuth协议
系统稳定性
在线日志分析
日志分析常用命令
cat 与 more 与 less
tail 与 head
sort
wc 统计指定文件中的字符数、字数、行数并输出统计结果
uniq 显示文件中重复出现的行
grep
find
expr 表达式求值
tar 文件归档
curl url访问工具
查看请求访问量 与 查看最耗时页面 与统计404请求的占比 (综合例利用上面的命令)
日志分析脚本
sed编辑器
awk 程序
shell脚本
集群监控
监控指标
load 特定时间间隔内运行队列中的平均线程数 使用uptime命令查看
CPU利用率
磁盘剩余空间
网络 traffic
sar 查看系统的网络状况
磁盘 I/O
内存使用
qps(query per second) 每秒查询数
rt (response time) 请求的响应时间
select/ps 记录了数据库每秒处理的select语句的数量
update/ps、delete/ps 数据库每秒处理update、delete语句的数量
GC (Minor GC 与 Major GC)
心跳检测
ping
应用层检测 (curl指令),可以通过shell实现应用监控的脚本,然后定时执行脚本来进行检测
业务检测
通过页面的大小判断页面是否出现异常
检测页面的返回值
容量评估及应用水位
流量控制
流量控制实施 流量控制可以从多个维度进行,例:对系统的总并发请求数进行限制、限制单位时间内的请求次数、通过白名单机制来限制每个接入系统调用的频率等
服务稳定性
依赖管理
优雅降级
服务分级 服务提供者需要对服务消费者的优先级进行区分,哪些调用将影响核心链路,哪些调用时非核心链路。当系统压力过大、无法承载时,必须确保等级高是应用、核心的调用链路优先确保畅通,而对于重要性不那么高的应用,可以暂时“丢车保帅”
开关 预定义一些开关来控制程序的服务提供策略
应急预案
高并发系统设计
操作原子性 mysql事务
多线程同步
数据一致性
强一致性
弱一致性(最终一致性是其一种形式)
系统可扩展性 (CAP理论 系统的一致性、可用性及可扩展性
实例:并发减库存 如果使用innodb存储引擎,为了解决行锁导致的并发资源利用的问题,可以将一行库存拆分成多行
性能优化
寻找性能瓶颈
前端优化工具---YSlow
页面响应时间
firebug工具
服务端的response time时间
方法响应时间 java 环境下动态跟踪工具 -- btrace
GC日志分析
数据库查询 (慢日志)
系统资源使用 (CPU密集型、网络密集型、磁盘I/O密集型、内存使用密集型等)
性能测试工具
ab (ApacheBench)
Apache JMeter 在执行性能测试的同时可以通过一些工具(如 jconsole、visualVM)来远程实时查看测试机的负载、内存使用、GC等情况
HP LoadRunner
反向代理引流 (负载均衡)
TCP Copy
性能优化措施
前端性能优化
页面的http请求数量
是否使用cdn网络
是否使用压缩
程序优化
单例模式 对于I/O处理、数据库连接、配置文件解析加载等一些非常耗费资源的操作,我们可以始终使用一个公用的实例以节约系统开销
(java)Future模式 客户端发送一个长时间的请求,服务端不需等待该数据处理完成便立即返回一个伪造的代理数据(相当于商品订单,不是商品本身),用户也无需等待,先去执行其他的若干操作后,再去调用服务器已经完成组装的真实数据。该模型充分利用了等待的时间片段。
(java)线程池 既可避免因过多线程导致的内存溢出,任务完成后线程还可以重用,减少了线程的创建和销毁的本身的消耗
选择就绪 使用NIO代替阻塞I/O能提高程序的并发吞吐能力,降低系统的开销
减少上下文切换
降低锁竞争
尽可能缩短锁持有的时间
将一部分与锁无关的代码移出同步代码块
减小锁的粒度 将原先使用单独锁来保护的多个变量变为采用多个相互独立的锁分别进行保护以降低线程请求锁的几率
放弃使用独占锁 对于多读少写的情况下,使用读写锁能够比使用独占锁提供更高的并发数量
压缩
结果缓存
数据库查询性能优化 1.合理使用索引 (mysql的MyISAM使用B树)(mysql的InnoDB是哦用B+树) 索引的使用遵守最左原则
mysql使用explain命令用来解释和分析sql语句
反范式设计 将一些常查询且不常修改的字段冗余存储
使用查询缓存
使用搜索引擎(在分表分库分布式的时候)
使用key-value数据库
GC优化 通过日志分析 (尽量降低Full GC的频率)
硬件提升性能
java应用故障排查
常用工具
jps 类似于linux的ps命令 可以方便地找到进程主类对应的进程ID
jstat 对虚拟机各种运行状态进行监控的工具(可以查看到虚拟机的类加载与卸载情况,管理内存使用和垃圾收集等信息监视JIT即时编译器的运行情况等)
jinfo 查看应用程序的配置参数及打印运行jvm时所指定的jvm参数
jstack 生成虚拟机当前的线程快照信息
jmap 查看待回收对象的队列,查看堆的概要信息(包括采用哪种GC手机器,堆空间的使用情况,以及通过JVM堆的转储快照) ==注jmap执行堆dump操作时,由于生成的转出文件太大将耗费大量的资源==
BTrace java程序动态跟踪工具
JConsole jdk内置的图形化性能分析工具
Memory Analyzer (MAT) 全称为Eclipse Memory AnalyzerTool 是java堆分析工具,能快速找到占用堆内存空间最多的对象
VisualVM
数据分析
==不懂==
本文参与
腾讯云自媒体分享计划
,分享自作者个人站点/博客。
原始发表:2018-01-26 ,如有侵权请联系
cloudcommunity@tencent.com
删除
前往查看
数据分析
本文分享自
作者个人站点/博客
前往查看
如有侵权,请联系
cloudcommunity@tencent.com
删除。
本文参与
腾讯云自媒体分享计划
,欢迎热爱写作的你一起参与!
数据分析
评论
登录
后参与评论
0 条评论
热度
最新
推荐阅读
LV.
关注
文章
0
获赞
0
目录
互联网安全架构
常见的web攻击手段
常见的安全算法
摘要认证
签名认证
HTTPS协议
OAuth协议
系统稳定性
数据分析
相关产品与服务
Elasticsearch Service
腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
免费体验
产品介绍
产品文档
ES特惠专场,首月1折秒杀,新客首购6折起!
领券
问题归档
专栏文章
快讯文章归档
关键词归档
开发者手册归档
开发者手册 Section 归档
0
0
0
推荐