架构套路总结

Posted Shi Peng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了架构套路总结相关的知识,希望对你有一定的参考价值。

前言

系统的技术架构(相对于业务架构),主要会考虑下面5个点:
高性能、高可用、可伸缩、可扩展、安全。

一、高性能

1、架构层面

1.1、缓存

浏览器缓存
CDN缓存
反向代理缓存
本地缓存
分布式缓存

缓存注意的点:
1)避免缓存穿透:把空对象保存在内存缓存里
2)缓存与数据库的数据一致性:Cache Aside模式:先更新DB,再清除缓存,DB主从同步完成后,再清理缓存。

1.2、异步

本地队列
分布式队列

1.3、资源复用

线程池、连接池、对象池
单例

2、代码层面

2.1、多线程

线程池,线程数与CPU核数相关:看IO密集型还是计算密集型
线程数 = (任务执行时间 / (任务执行时间 - IO等待时间))* CPU核数

2.2、内存:空间换时间

2.3、锁

尽量不用锁
非要用锁,尽量降低锁粒度、控制锁总数、尽量使用无锁框架CAS,putIfAbsent等

2.4、数据结构的时间复杂度

Skiplist 替代 TreeMap

2.5、访问量大时可批量请求,降低请求次数

Kafka producer批量请求

3、DB层面

3.1、索引

InnoDB引擎 默认BTree+ 索引

3.2、SQL优化

3.3、NoSQL

4、附录:衡量性能指标

4.1、TPS & QPS

4.2、系统性能参数:CPU Load Average, CPU User Usage, 内存,网络IO,磁盘IOPS

CPU Load Average:平均每核CPU,理想值在100%
CPU User Usage:理想值在70%以内

4.3、响应时间

4.4、并发数:并发访问数、在线用户数

二、高可用

1、冗余:数据冗余 & 依赖服务冗余

2、限流、降级、熔断

3、故障自愈

4、自动扩缩容

5、自动化运维

6、自动化测试

7、预发布测试

8、灰度发布

9、服务自动失效转移

10、多维度监控,告警逐步升级

维度1:客户端APM打点 & Server端监控
维度2:业务级监控 & 系统指标参数监控
自动化巡检,发现问题

三、可伸缩

1、应用层可伸缩:无状态服务

微服务的拆分方式:
1)横向拆分:拆分成职责不同的应用:如chatroom和CMP
2)纵向拆分:如chatroom和chatroommessage服务

每个微服务都要可水平扩展

2、缓存层可伸缩:Redis容器云方案

Redis Cluster集群模式的负载均衡策略:槽位迁移

3、关系型数据库:在DB上游通过Proxy保证可伸缩

4、NoSQL:天然可伸缩

四、易扩展

易扩展主要指微服务的拆分时保证每个微服务“高内聚、低耦合”

1、应用间通过队列异步解耦

2、分布式微服务

五、安全

1、密码和手机校验码做身份认证

用户对于开放http API接口访问时,要携带秘钥做签名认证

2、登录、交易、敏感数据等,对网络通信做加密

加解密方式:
1)单向散列加密:如MD5,SHA等,通常加密后加点salt。
单向加密不可逆,仅能比较加密后数据是否一致,如用于做密码校验,但不能还原密码。

2)对称加密:即加密和解密用同一个秘钥,如DES,RC等
优点:算法简单、性能快
缺点:加解密用同一个秘钥,不够安全。

3)非对称加密:加密和解密用不同的秘钥,如RSA等
一个对外公开,叫公钥;一个只有网站系统知道,叫私钥
用公钥加密的信息,必须用私钥才能解密;反之,用私钥加密的信息,用公钥才能解开。

3、请求编码转换,避免XSS攻击、SQL注入等

1)XSS(Cross Site Script):指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。
这些恶意网页程序通常是javascript,但实际上也可以包括Java、 VBScript、ActiveX、 Flash 或者甚至是普通的html
攻击成功后,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和cookie、密码等各种内容。

防攻击手段:
1)消毒:对某些HTML危险字符转义,如">"转义为“&gt”等
2)HttpOnly:禁止浏览器JS访问带有HttpOnly属性的cookie。即对于存敏感信息的cookie,如用户密码等,未该cookie添加HttpOnly属性,防止被JavaScript窃取

2)SQL注入
通过预编译参数绑定,如ibatis, hibernate等框架都实现了参与预绑定。

常用响应时间

以上是关于架构套路总结的主要内容,如果未能解决你的问题,请参考以下文章

架构套路总结

[在线交流]云计算生产环境架构性能调优和迁移套路总结

朱晔的互联网架构实践心得S1E7:三十种架构设计模式(上)

分布式架构的套路No.74

漫谈分布式架构的几种套路

免费送书,5本,关于架构的(无任何套路)