云原生微服务(1):后台基础架构发展史
后台基础架构发展史。从单体结构,垂直结构,数据库主从架构,分布式应用架构,分布式缓存架构,数据库分库分表,微服务架构,k8s容器化到云原生架构。
后台技术架构发展史:
总体上经历了单体应用,分布式系统时代,和云原生时代的发展演进过程。
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支持多种存储引擎和多种数据访问方式,例如关系型数据库、分布式事务等,可以满足不同的数据库需求。
更多推荐
所有评论(0)