写点什么

【架构师训练营 - week4 -2】总结

用户头像
早睡早起
关注
发布于: 2020 年 07 月 01 日
【架构师训练营 - week4 -2】总结

高性能

优化手段主要有缓存、集群、异步等。

网站数据访问通常遵循二八定律,即80%的访问落在20%的数据上,因此利用Hash表和内存的高速访问特性,将这20%的数据缓存起来,可很好地改善系统性能,提高数据读取速度,降低存储访问压力。



缓存我们可以使用当前比较主流的Redis,一方面是它的学习成本低,并且提供了丰富的数据结构。另一方面,它使用了NIO单线程模型,读取速度快,非常适合做缓存,减少服务器的压力。



集群让我们可以分布式的管理一些用户请求。通过适当的负载均衡策略,减少服务器的开销,同时加快用户的请求。



异步我们可以使用当前比较火热的kafka或者RocketMQ,能尽量晚做的事情,就尽量晚点做。这样我们可以晚点做一些不着急的操作。通过消息队列的异步,可以达到削峰的效果。



高可用

首先为了保障高可用,我们可以先对架构分层。典型的分层模型是三层,即应用层、服务层、数据层。

对于应用层,通过负载均衡进行无状态服务的失效转移。

对于服务层,我们可以使用分级管理,超时管理,幂等性等方式。

对于数据层,首先要了解CAP

数据持久性

保证数据可持久存储,在各种情况下都不会出现数据丢失的问题。为了实现数据的持久性,不但在写入数据时需要写入持久性存储,还需要将数据备份一个或多个副本,存放在不同的物理存储设备上,在某个存储故障或灾害发生时,数据不会丢失。

数据可访问性

在多份数据副本分别存放在不同存储设备的情况下,如果一个数据存储设备损坏,就需要将数据访问切换到另一个数据存储设备上,如果这个过程不能很快完成(终端用户几乎没有感知),或者在完成过程中需要停止终端用户访问数据,那么这段时间数据是不可访问的。

数据一致性

在数据有多份副本的情况下,如果网络、服务器或者软件出现故障,会导致部分副本写入成功,部分副本写入失败。这就会造成各个副本之间的数据不一致,数据内容冲突。实践中,导致数据不一致的情形有很多种,表现形式也多种多样,比如数据更新返回操作失败,事实上数据在存储服务器已经更新成功。

CAP原理认为,一个提供数据服务的存储系统无法同时满足数据一致性(Consistency)、数据可用性(Availibility)、分区耐受性(Patition Tolerance,系统具有跨网络分区的伸缩性)。

保证数据存储高可用的手段主要是数据备份和失效转移机制。数据备份是保证数据有多个副本,任意副本的失效都不会导致数据的永久丢失,从而实现数据完全的持久化。而失效转移机制则保证当一个数据副本不可访问时,可以快速切换访问数据的其他副本,保证系统可用。

伸缩性

1.不同功能进行物理分离实现伸缩

2.单一功能通过集群规模实现伸缩

可扩展

1.利用分布式消息队列降低系统耦合性

2.利用分布式服务打造可复用的业务平台

安全性

这个世界没有绝对的安全,正如没有绝对的自由一样。网站的相对安全是通过提高攻击门槛达到的。让攻击者为了获得有限的利益必须付出更大的代价,致使其得不偿失,望而却步。同时,攻击与防护技术作为一对矛盾共同体,彼此不断此消彼长,今天的高枕无忧,明天可能就成了致命的漏洞。也许网站经过一番大的重构和优化,在某一段时间不需要再处理高可用或高性能的问题,但是修补漏洞、改善安全却是每天都需要面对的课题,永远不能停歇。



用户头像

早睡早起

关注

还未添加个人签名 2019.09.05 加入

还未添加个人简介

评论

发布
暂无评论
【架构师训练营 - week4 -2】总结