今天是年的第一天,也是国人们的元旦佳节,借此节日,为大家献上一篇关于架构方面的文章。
首先大家先回想一下,生活中所接触到的网站、app,在使用时会不会有这种感觉:哇,竟然有这么秀儿的功能、这app一点都不卡,很流畅。
所以,为了满足大家的好奇心,下面号主就来讲下web应用架构的演进。
最简单开始-单机网站
一个网站,最开始的要求其实是非常简单的,只要能实现基本功能、能部署跑起来、能支持少量客户访问、而且对可靠性要求不高,这就完事了~~
示例草图如下
改进数据库性能和可靠性-数据库集群
当前阶段出现的挑战
数据库最先出现性能瓶颈
数据库单点故障
对架构的整改演进
web服务器和数据库分离
数据库主备集群,读写分离
示例草图如下
改进web服务器性能-web服务器集群
当前阶段出现的挑战
用户访问量快速增长
web服务器出现性能瓶颈
web服务器单点故障
对架构的整改演进
引进负载均衡器
nginx
haproxy
.....
引入集群软件
keepalived
RHCS
.....
示例草图如下
缓解高并发-分布式缓存服务
当前阶段出现的挑战
存在热点数据读写性能问题
应对高并发
对架构的整改演进
引进负载均衡器
Rediscluster
Memcachedcluster
.....
示例草图如下
化繁为简-微服务化
当前阶段出现的挑战
单体程序,代码体积庞大,内部依赖关系复杂,难以维护
对架构的整改演进
引进微服务公共组件
服务注册和发现
API网关
服务治理
调用链跟踪
拆分微服务
按照业务划分
除了业务逻辑层,前端、缓存、数据库也需要拆分到不同的微服务模块
示例草图如下
异步解耦-消息队列
当前阶段出现的挑战
突发访问高峰
微服务模块之间高耦合
对架构的整改演进
引入消息中间件
kafka
rabbitmq
.....
示例草图如下
最后的总结
以上演进的阶段为:单机-集群-分布式-微服务。
其实,Web应用系统架构的演进不止于此,当前很多企业都有着相同的痛点:私有基础设施维护成本高、架构水平不够弹性,所以更多的是做了应用上云改造,如容器化、SaaS化,号主这里面儿懂的也不多,就不在介绍啦
最后,祝愿大家节日快乐,也希望在新的一年都是牛气哄哄滴
-END-
扫码