【大型网站技术架构笔记】(二)大型网站架构模式与核心要素

2019-02-28 16:13:35 浏览数 (1)

架构模式

系统朝大型系统衍变的过程中,如下几个架构模式是我们应该考虑也终将经历的。

分层

即对系统进行横向划分。比如进行MVC分层,又可分为接入层、业务层、核心数据层。应当禁止跨层调用以及逆向调用

分割

即对系统进行纵向划分。比如在业务层上拆解业务,核心数据层上划分不同类型的数据,以方便流量控制等。

分布式

分布式部署一般耳熟能详。也是SOA中重要的一环。但是在没有高效分布式事务的前提下,如何在分布式中保证数据一致性,是首当其冲需要考虑的。分布式概念衍生出很多我们生产环境中常规的一些设计思路,比如将应用和服务分布式化;静态资源分布式部署即动静分离,以方便通过反向代理,加速等手段来加速与优化;nosql、sql等方式存储数据;分布式配置;分布式权限控制;分布式封禁;分布式锁;分布式文件系统如NFS;分布式计算,如阿里的天梯系统等。

集群

到了后期,为保证服务的性能和高可用,一般都会进行集群化部署,即将服务进行虚拟化处置。这中间就需要考虑负载均衡,健康检查,自动剔除等。

缓存

缓存在大型系统中的地位极其重要。其可以充当数据层的缓冲层,通过缓存热点数据,以及不常改变的数据来达到提升性能,减少数据持久层的压力等目的。缓存从前到后可以分为:CDN加速、反向代理、本地缓存、分布式缓存。

异步化

当并发过大超过服务吞吐能力时,采用消息队列(比如RabbitMQ, ActiveMQ, Kafka)可以达到削峰的目的。

冗余

进行适当的热备、冷备也是比较重要的。比如RabbitMQ就可以通过冗余来保证数据的可靠性。

自动化

自动化部署、发布、测试、监控、报警、降级、资源分配等都是一个必须要考虑的议题。

安全

手机验证码、图形验证码、以及敏感信息过滤、防SQL注入、防XSS攻击(如CSRF)等。

核心架构要素

性能

几个tips: 浏览器端利用浏览器缓存、使用页面压缩、减少Cookie传输; 传输上采用CDN加速和反向代理服务器; 服务器端利用本地/分布式缓存;结合消息队列实现异步化;集群化虚拟化; 代码层面采用多线程,以及JVM优化,利用弱键等其他手段 数据库端,适当采用索引,利用DB缓存(默认打开),SQL优化,利用NOSQL,NEWSQL优化 性能的衡量标准一般可以看平响、吞吐量(TPS、QPS)等。

可用性

一般就三个手段、冗余、集群化、分布式。

伸缩性

服务尽量同构。DB、cache在考虑分布式时尽量提前设计好扩展方案。也可以采用一些主流的对水平伸缩支持较好的nosql、memcached、hbase等。

扩展性

这个没啥好说。扩展性依赖于前期良好的架构设计。合理业务逻辑抽象,水平/垂直切割分布式化等等。

安全性

如上。

0 人点赞