说起分布式,已经不是陌生的概念,分布式是相对集中式而言的,集中式是一个物理独立的个体,能够承载的资源有限,若想物理扩展,只能是做物理资源的扩充;分布式比较灵活,在软件层面实现,可将多个物理独立的个体通过逻辑方式连接起来可组成庞大的资源体系,处理海量的业务能力。
分布式体系,是通过服务能力抽象出的分布式架构,从接口、服务到数据处理,涵盖从应用接入端到数据服务的整个业务支撑。
分布式服务体系按照接入、服务、数据处理,可包含:
接入:负载均衡
服务:事务、服务、消息
数据处理:数据库、缓存、批量、对象存储、文件存储
1
负载均衡是分布式体系的接入处理层,业务请求的第一道通道,通常应具备网络四层和七层负载能力,可按照业务级别实现灵活的负载策略。
负载均衡本身是要支持应用节点横向扩展和故障自动隔离。
2
分布式服务,用于提供注册中心、服务网关、监控管理等功能,使消费者快速查找和使用服务。
应具备与传统应用架构互联互通,兼容传统架构,同时要具备较高的服务注册、接入的能力。在多数据中心,能够实现多活能力。
3
分布式事务,体现在为大规模跨服务、跨应用交易的事务最终一致性提供保障,是在应用层面实现,脱离于数据库系统,且对数据库不依赖。
分布式事务市面上常见的SAGA、TCC、可靠消息等多种事务框架。能够兼容以上事务模型的有开源的seata产品,可灵活应对转账、工作流等不同的业务场景。
以上分布式事务模型,定义为柔性事务,保证的是事务的最终一致性。对业务入侵强,对开发者技术要求高。
4
分布式消息,可为不同业务系统提供高效、可靠、持久、异步的通信服务,能够扩展进程间的统信、降低各系统间的耦合度。
分布式消息特点主要应在快速的消息传递和海量消息的处理上,在高可用上应具备多地切换消息不丢失。
5
分布式数据库,定位于面向海量数据、高并发场景,能够提供线性扩展存储和计算能力。
具备对业务透明的智能路由访问、整体集群横向扩展能力,可灵活部署多地,满足高可用和灾备需求,RPO=0,RTO在秒级。
6
分布式缓存,通过内存存储热点数据的方式来加速对数据的访问和写入,降低对数据库层面的压力
典型的软件如redis,但仍有血崩和缓存击穿的风险,应合理设计缓存使用。
7
分布式批量:为分布式业务提供批量处理能力,传统批量一般只会运行到单服务器上,无法满足多机调用联动,分布式批量是为了配合分布式应用产生的副产品。
特点是灵活的设置批量作业分片,可动态控制执行效力。
8
分布式对象存储,定位于实现海量小文件的快速读写,适用于文档类、影像类、音视频类的高并发处理。
一般为分级存储架构,可为业务提供海量非结构化数据的存储。
9
分布式文件系统,定位于解决传统共享存储高可用能力低、无法与云对接的问题。
存储卷理论上可无限扩容,能够自动数据rebalance。支持多地多中心,多副本高可用,故障域可自动隔离,保证数据的可用性。