读大型网站技术架构---第一篇---第二章---架构模式

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_32924343/article/details/83060435

关于大型网站架构模式,我觉得只要看看阿里的就足够了,它成功了,所以它的架构模式就是指路明灯以及行业的正确架构模式,所以关于架构其实现在即使你没有参与进去,但是模式就是那样。

1.分层

分层是一种常见的架构模式,主要是将系统在横向维度上切分成几个部分,每个部分负责相对比较单一的职责,然后通过上层对下层的依赖和调用组成一个完整的系统。

分层好处:

可以将一个庞大系统切分成不同部分;各层之间具有一定独立性,各层可以根据具体问题独立演化而只需要保持调用接口不变即可。

分层挑战:

合理规划层次边界和接口。遵守分层架构约束,禁止跨层调用及逆向调用。

2.分割

纵向方面对系统进行切分就是分割。

具体分割:

在应用层,将不同业务进行分割,可以将购物,论坛,搜索,广告分割成不同应用;比如购物业务,可以进一步分割成机票酒店业务,3C业务,小商品业务等更细粒度。基于这些粒度还可以继续分割成首页,搜索列表,商品详情等模块。

3.分布式

分层和分割的主要目的就是便于分布式部署,即将不同模块部署在不同的服务器上,通过远程调用协同工作。

分布式带来的问题:

3.1 服务调用通过网络,可能对性能造成影响;

3.2 服务器越多,服务器宕机概率越大,可能一台宕机造成服务不可用会导致很多应用不可访问,降低网站的可用性;

3.3 分布式环境中的数据一致性问题;

3.4 分布式环境中的事务问题

常见分布式方案:

3.1 分布式应用和服务;

3.2 分布式静态资源;网站的静态资源可以独立部署,采用独立域名,就是常见的动静分离。

3.3 分布式数据和存储;

3.4 分布式计算;Hadoop相关产品;

3.5 分布式锁,分布式事务,分布式文件系统等等;

4.集群

分布式解决了分层和分割后的模块的独立部署,但是针对用户访问频率高的模块,还是需要将服务器集群化,通过负载均衡设备共同对外提供服务,提高系统的可用性。

5.缓存

缓存就是改善软件性能的第一手段,主要可以使用以下几个手段:

5.1 CDN

5.2 反向代理

5.3 本地缓存

5.4 分布式缓存

6.异步

大型系统之间解耦的手段除了之前说的分层,分割,分布式之外,还有一个手段就是异步;将一个业务操作分成多个将阶段,每个阶段之间通过共享数据的方式异步执行进行协作。

单机系统:

单机系统内考虑异步可以使用多线程共享内存队列的方式。

分布式系统:

分布式系统可以使用分布式消息队列实现异步。

异步特性:

6.1 提高系统可用性;数据会存储在消息队列中,系统整体不会产生故障,消费者服务器恢复正常后可以继续消费数据,可能带来的问题就是消息堆积怎么办。

6.2 加快网站响应速度;

6.3 消除并发访问高峰;

7.冗余

数据冗余包括两种方式:

冷备份:数据库定期备份,存档保存;

热备份:数据库进行主从分离,实时同步;

8.自动化

8.1 发布过程自动化;

8.2 代码管理自动化;

8.3 自动化测试;

8.4 自动化安全检测;

8.5 自动化部署;

8.6 自动化监控;

8.7 自动化报警;

8.8 自动化失效转移;(将失效的服务器从集群中隔离出去)

8.9 自动化失效恢复;(重新启动服务,同步数据保证数据的一致性)

8.10 自动化降级;(在高峰期时拒绝一些请求及关闭不重要的服务将系统负载降至一个安全水平)

8.11 自动化分配资源;(将空闲资源分配给重要的服务,扩大其部署规模)

9.安全

9.1 密码和手机进行身份验证,登录,交易等等;

9.2 资源加密;

9.3 XSS,SQL注入;

9.4 过略敏感信息,垃圾信息;

10.架构模式在新浪的应用

新浪微博的架构如下:

猜你喜欢

转载自blog.csdn.net/qq_32924343/article/details/83060435