一、初始阶段

二、应用和数据服务器分离

三、使用缓存

本地缓存和分布式缓存,这一步主要还是使用本地缓存的多点,一般不会一下子就用到分布式缓存,当然有些系统会直接使用分布式缓存。将一些配置信息、热点数据缓存本地,降低数据库压力。
引申:缓存穿透、雪崩,缓存失效,一致性hash。
四、集群

使用负载均衡通过集群减轻应用服务器的访问压力。
引申:会话管理。需要关注session是统一管理还是分配到集群中的某台机器。如果是某台那就可能有会话粘滞,如果随机一台,就可能需要需要会话统一管理。
五、数据库读写分离

这一步应该细分下为主备-分离,我们现在的系统就是也只是主从备份,没做分离。现在的系统开发,上面这几步都会一步到位,不会慢慢来了。
引申:分离后数据的一致性。
六、cdn和反向代理

做这一步主要还是把一些请求资源如图片和js往客户端推。缓解后端压力的同时,加速客户端响应。
七、使用分布式文件系统和分布式数据库系统

感觉使用分布式文件系统主要是处理一些小文件存储。数据库数据量大了后一般都会对业务分库,服务器独立部署,各业务库再独立演化拆分分库分表等。
引申:数据库分布式后,就需要统一的数据访问组件隔离底层,其实在数据库主从后就需要,只是到这一步后需求更迫切。
八、使用nosql和搜索引擎

搜索功能对于互联网系统尤其电商业务重要性不言而喻。使用nosql做离线分析和日志等,我们之前是利用hbase做订单的二次营销。
九、业务拆分

不同的业务,不同产品线,然后应用的独立部署。从系统的新建到后期的数据库的读写分离等过程,业务的拆分应该是一直都存在的,只不过到一定时期后,这个需求更加迫切而已。
引申:系统间,走消息还是rpc等。
十、分布式服务

可以看到,随着互联网行业的发展,网站系统越来越复杂,想要学习架构,就必然离不开分布式服务的学习!
分布式架构学习要点:
√介绍服务化和微服务架构的背景和演化。
√介绍微服务中的常见问题和解决模式。
√提出解决分布式系统一致性问题的有效方案和设计模式。
√介绍酸碱平衡和至终一致性等理论,对分布式服务间出现的服务超时问题给出解决办法。
√提出非功能质量架构设计的方法论,举例说明系统的性能和容量的预估,并介绍压测的方法论和至佳实践。
√提出服务化的日志系统的技术选型依据和大数据日志系统建设的原理、设计与实战,包括ELK等流行框架的介绍与使用。
√详细介绍基于调用的APM系统的设计与实现,并给出实现的至佳实践。
√介绍线上应急和技术攻关的流程和重点,并总结Java服务化系统应急中需要使用的Java虚拟机命令、Linux命令和定制化开发的命令等。
√服务化系统容器化的过程分析和至佳实践。
√服务化系统中敏捷开发的过程和工具。
网友评论