一、分层:
方法:
横向分层:应用层(UI、前端)、服务层、数据层。
优点:更好的将一个庞大的软件系统切分成不同的部分,便于分工合作开发和维护。
挑战:规划边界、接口。
二、分割:
方法:
纵向分割:不同的业务进行分割,例如购物、论坛、搜索、广告分割成不同的应用,由独立团队进行负责,可以部署在不同的服务器上。
优点:同上
三、分布式:
方法:
1、分布式应用和服务:可以改善网站性能和并发性、加快开发和发布速度、减少数据库连接资源消耗。还可以不同的应用复用共同的服务,便于业务功能扩展(中台)。
2、分布式静态资源(动静分离):如JS,CSS,LOGO等部署到独立服务器,独立域名(可加快浏览器并发速度)。
3、分布式数据和存储:除可将传统的关系型数据库进行分布式部署外,NoSQL产品几乎都是分布式的。
4、分布式计算:目前普遍使用Hadoop及MapReduce分布式计算框架进行计算,特点是移动计算而不是移动数据,将计算程序分发到数据所在的位置以加速计算和分布式计算。
分布式同时包含:分布式配置、分布式锁、分布式文件系统等。
优点:
分层和分割主要是为了切分后的模块便于分布式部署,将不同的模块部署在不同的服务器上。
挑战:
(1)服务间的调用需要通过网络。
(2)服务器越多,宕机的概率越高。
(3)数据一致性,分布式事务也难以保证。
(4)系统更复杂,开发维护成本提升。
四、集群:
方法:
使用多台服务器部署相同应用构成一个集群,通过负载均衡对外提供服务。(并发性、可扩展、高可用)
五、缓存:
方法:
(1)CDN:内容分发
(2)反向代理:属于前端架构的一部分,部署在网站前端,当用户请求时直接访问反向代理服务器。
(3)本地缓存
(4)分布式缓存
优点:
缓存是改善系统性能的第一手段
挑战:
使用缓存有两个前提条件:一是数据访问热点不均衡;二是数据在某个时间段内有效,不会很快过期。
六、异步:
方法:
(1)在单一服务器内部可通过多线程共享内存队列的方式实现异步。
(2)在分布式系统中,多个服务器集群通过分布式消息队列实现异步。
优点:
将一个业务操作分成多个阶段,每个阶段之间通过数据共享的方式执行异步协作。
提高系统可用性
加快网站响应速度
消除并发访问高峰
七、冗余
方法:
(1)服务器冗余
(2)数据库定期备份,实现冷备份。
(3)数据库主从备份,实现热备份。
(4)数据库远程备份,实现灾被数据中心。
八、自动化
方法:
(1)发布过程自动化
(2)自动化代码管理:Git
(3)自动化测试:部署到测试环境后,进行自动化用例测试。
(4)自动化安全检测
(5)自动化部署:Jenkins、K8S。
(6)自动化监控:心跳检测,设定阈值。
(7)自动化报警:超过阈值报警。
(8)自动化失效转移;将失效的服务器从集群中隔离出去。
(9)自动化失效恢复:故障消除后系统自动同步数据保证数据一致性。
(10)自动化降级:超出网站处理能力时,通过拒绝部分请求及关闭不重要的服务,将系统负载降至一个安全水平。
(11)自动化分配资源:将空闲资源分配给重要服务器。
九、安全
方法:
(1)密码、手机校验码
(2)网络通信加密
(3)验证码
(4)XSS攻击、SQL注入、进行编码转换等响应处理。
(5)垃圾信息、敏感信息进行过滤
(6)风险控制
05-24
466
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)