后台技术架构发展史:

总体上经历了单体应用,分布式系统时代,和云原生时代的发展演进过程。

1.单体应用:这种架构通常是基于传统的三层结构(表示层、业务逻辑层和数据访问层),并使用关系型数据库进行数据存储和管理。单体应用的性能和可扩展性开始受到限制。

2.垂直架构:服务器负载很高的情况下,拆分和单独部署应用服务器和数据库服务器。

3.数据库主从架构:数据库拥堵和慢查询的情况下,mysql主从模式,增加数据库服务器,一主多从,主库写从库读。程序修改:1是需要增加mysql的从库,2是需要把数据库实例改为读和写实例,3是数据查询的地方要改用读实例。 重点:处理好主从读写分离的同步延时,数据一致性问题。解决方法:

分布式系统:在高并发问题的情况下,后台基础架构开始向分布式系统转变,采用微服务和消息队列。

4.分布式应用架构:在每台服务器上都部署业务系统,且部署一个负载均衡服务器,比如使用Ngix作为统一的接入层。重点:本地文件存储和共享问题。解决方式:NFS,RPC,DNS

5.分布式缓存架构:在分布式应用架构的基础上,在数据库慢查询越来越多的情况下使用。重点:引入缓存,解放数据库。(下图以redis为例)例如:使用redis集群,reids服务单机可以支持10w的并发,而mysql可以支持1000,可见redis缓存比mysql数据要快100倍。可以把一些耗时几百毫秒的慢查询的结果缓存起来,缓存查询耗时只有1-2ms,性能提升了上百倍。

6.数据库拆分,分表分库:

对于数据规模越来越大的情况,重点是进行水平拆分和垂直拆分。问题:文章表和评论表的数据总量都超过千万规模时,虽然加入了分布式缓存,但是,只要涉及到数据库的查询、批量更新等操作时,又会变得很慢,再次成为整个系统的瓶颈。解决思路;单表的数据量太大,可以考虑对数据表进行分表,让单张表的数据规模控制在百万的规模。分为两种:水平拆分和垂直拆分。

​​​​​​​ 

7.微服务架构:在应用越来越多越来越复杂的情况下使用。重点:注意垂直拆分的服务边界。微服务架构就是对一个大的应用进行垂直拆分,而服务拆分的依据就是各个服务的数据尽量独立。(应用程序被拆分成多个小型服务,每个服务都专注于处理特定的业务逻辑,并通过API接口进行通信和交互。每个服务都可以独立地进行开发、部署和维护,从而提高了系统的可扩展性和可维护性)。比如:博客系统,可以考虑把文章系统、评论系统、图片文件系统、浏览收藏点赞统计系统等进行拆分。

​​​​​​​

*过去十几年比较盛行的SOA系统:面向服务的架构。SOA架构逐渐显现出一些局限性和不足之处,例如服务的粒度过大、服务间的依赖关系过于复杂、集中式管理和控制等。因此,越来越多的企业开始将SOA架构升级为微服务架构,以应对快速变化的业务需求和更高的技术要求。目前,许多银行、保险、电信等传统行业的业务系统正在进行微服务架构的转型和升级。

8.K8s容器化:在微服务太多,管理难度太大的情况下使用。重点:devOPs管理平台和持续集成和部署等能力。

 

9.云原生时代:云原生是一种基于容器、微服务和自动化管理的方式来构建和运行应用程序的方法,它可以实现更高的弹性、可靠性和可扩展性。

1)容器化技术,隔离环境、可移植、高扩展,方便实现交付标准化

2)微服务架构:松耦合式系统架构,高内聚,各个服务独立部署,独立演进,按需扩展

3)自动化管理:管理容器、监控应用程序和自动化运维。例如阿里云的EDAS,K8s和SLS等

4)云原生存储:例如分布式存储和数据库服务。阿里云采用阿里云分布式存储服务(OSS)OSS支持多种存储类型和多种数据访问方式,例如对象存储、文件存储、块存储等,可以满足不同的存储需求。阿里云云原生数据库(ApsaraDB for OceanBase),它是一种分布式、高可用、高性能的云原生数据库服务。ApsaraDB for OceanBase支持多种存储引擎和多种数据访问方式,例如关系型数据库、分布式事务等,可以满足不同的数据库需求。

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐