大型网站架构技术核心要素


性能

性能是一个网站的重要指标,除非没得选,否则用户无法忍受一个响应缓慢的网站。一个打开缓慢的网站会导致严重的用户流失。很多时候网站性能是网站升级架构的触发器。

1.1前端性能

1 浏览器缓存。

2 页面压缩。

3 合理布局页面。

4 减少cookies传输。

5 使用CDN将静态资源发送到离用户最近的网络服务商机房。使用户通过最短路径获取数据。可以在网站机房部署反向代理服务器,缓存热点文件,加快响应速度,减轻负载压力。

1.2服务器端

1通过本地缓存,分布式缓存,缓存用户的热点数据,减轻数据库负载。

2 异步操作将用户请求发送给消息队列,后续处理,而当前请求及时返回响应给客户。

3 多台应用服务器组成集群,共同对外提供服务,提高整体处理能力,改善性能。

1.3代码层面

1 多线程,改善内存管理

2 减少循环嵌套,减少时间复杂度

3 在时间宝贵,空间充足的今天,可以牺牲大量的缓存,或者采用特殊的数据结构

牺牲控件,换取时间,提高用户体验

4 避免循环IO操作,减少IO的次数,循环多次的数据计算操作,尽量批量IO一次提交

1.4数据库服务端

1  创建索引

2  物化视图

3  SQL/存储过程的性能优化

4  采用特殊结构的nosql数据库

5  分库,分表

可用性

网站高可用的主要手段是冗余,应用部署在多台服务器上同时提供访问,数据存储在多台服务器上互相备份,任何一台服务器宕机都不会影响应用整体可用。也不会导致数据丢失。

对于应用服务器而且,通过负载均衡,组成一个集群共同对外提供服务,任何一台宕机都可以将请求切换到其他服务器,实现高可用。前题任何一台服务器都不能保存会话信息,否则任何一台服务器宕机,会话丢失,即使将用户请求转发到其他服务器无法完成业务处理。

除了硬件,还需要软件开发过程的质量保证,预发布验证,自动化测试,灰度发布,都将减少故障引入线上环境的可能。

伸缩性

所谓伸缩性是指不断向集群中加入服务器的手段,来缓解不断上升的用户并发访问压力和不断增加的数据存储需求。

3.1对于应用服务器集群

只要服务器上不保存数据,所有的服务器都是对等的,使用合适的负载均衡设备,就可以向集群中不断加入服务。

3.2对于缓存服务器集群

加入缓存可能导致缓存路由失败,进而导致集群中大部分缓存数据无法访问。虽然缓存的数据可以通过数据库加载,但由于应用过度依赖缓存,进而导致应用崩溃,需要改进缓存路由算法。

3.3对于关系数据库

支持数据复制主从备份。通过路由分区等手段将部署有多个数据库的服务器组成一个集群。

扩展性

目的是需求不断的增加,如何设计出扩展的架构来应付需求的变化。即在网站增加新的业务产品时。是否可以对现有产品不影响,改动最少。网站扩展性主要是事件驱动架构与分布式服务架构。

4.1网站的事件驱动架构

主要是通过消息队列来实现的,消失生产者把用户请求与消息发布到消息队列,消息消费者获取消息进行消费,通过这种方式把消息生产者与消息消费者相互分离,这样就可以透明的增加消息生产与消息消费的任务。

4.2分布式服务架构

则是将业务与可复用的服务分离,新增产品时,通过调用可复用的服务实现自身业务逻辑,而对产品没有任何影响。可复用的服务升级变更的时候,也可以通过多个版本的服务实现透明升级。通过分布式服务可以对外扩展业务,提供第三方开发者进行调用。

安全性

衡量网站的安全性主要是针对现有和潜在的各种攻击和窃密手段,是否有可靠的应对策略。

猜你喜欢

转载自blog.csdn.net/worn_xiao/article/details/80711045