大型分布式服务框架

本文涉及的产品
网络型负载均衡 NLB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
简介: 一个分布式框架的架构

1、首先远程服务调用有三种模式:同步、异步 Future、异步 Callback 三种调用模型,正常的都是同步调用,调用的时候阻塞当前线程,异步一般只会在特殊的情景下有用。

2、全局配置:所有服务的配置应该是需要在一个全局配置中心配置(zookeeper集群)的,而不是写死在代码里面,避免出现问题还需要修改代码、重启所有机器。尤其是流量控制、接口降级、重试次数等。

3、接口的重试:远程调用接口一般由于网络问题等问题经常会出现异常,这时候往往可以需要重试一下,但是不是所有的接口都需要重试,比如由于处理时间过长导致超时异常,其实只是处理慢了点而已,已经处理了,这时候再重试会有问题的,所以一般建议update、insert类型的接口就不要重试了,或者接口能保证幂等。(像由于接口异常问题导致的数据不一致可以通过mq实现重试,在消费mq时保证幂等。这样能最大限度的保证数据一致性)

4、服务节点的自动注册和发现:一个分布式的rpc框架肯定缺不了服务的注册与发现,注册中心有很多种实现方式,一般采用zookeeper集群来实现。
1523259730500d8330a8565_jpeg

5、负载均衡:client端对server的调用负载均衡能规避短板效应,常见的负载均衡算法有轮询、随机、最少调用、一致hash等加权的算法。

6、熔断:这个功能也是一个分布式框架必须要有的。比如服务方法级的熔断可以使得client端在短时间内发现该方法大量异常就会直接抛出异常,避免继续给server端增加压力,防止级联崩溃。合适的设置消费方服务方法熔断,既可以保护服务提供方,避免其已经处于不健康状态下时继续给压。也可以避免消费方应用大量线程因等待服务方结果返回被阻塞(在同步调用下),有效的保护服务消费方自身。还有一种是服务节点级的熔断,比如发现该节点cpu打满、节点不可用,直接将本节点踢出集群,这样client在负载均衡调用时会忽略这个节点。

7、流量控制:分client段的流量控制和server端的流量控制。
服务端的流量控制:避免请求超过系统设计的承受能力,防止服务崩溃,应该设置一个合理的阀值,超过阀值的请求可以被快速拒绝。在服务提供方维护一个线程池,该线程池负责服务接口的执行,线程池有个任务队列,一但队列满了,直接拒绝服务。
消费方的流量控制:消费方可针对某个服务设置并发阀值,也可用线程池去维护,当并发量超过该阀值时则无法执行,合理的设置消费方的并发阀值不仅能有效的保护服务方,而且也能避免消费方大量线程因等待服务方结果返回被阻塞(在同步调用下),有效的保护服务消费方自身。

8、服务路由:client端的集群调用server端的那个集群是可以配置的,集群隔离也能有效的防止某个clinet的并发暴增导致的关键链路雪崩。在server端设置服务路由也能有效的控制所有client端调用的集群,集群隔离,保护自身。

9、服务治理及监控:trace监控也是很重要的,作为大型分布式系统,一个api接口的server方可能级联高达数十个,那么监控同一链路不同层级server的性能和参数日志就很重要,也可以依赖对此设置异常告警。

延伸一个问题,在超大型分布式系统里,为了更高的响应速度,可能会部署多机房,这时候很多业务的数据库架构为了性能就会出现跨zone拒绝写入的问题,这时候就很需要服务路由去解决找到正确的机房。

相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
2月前
|
Java 数据库
在Java中使用Seata框架实现分布式事务的详细步骤
通过以上步骤,利用 Seata 框架可以实现较为简单的分布式事务处理。在实际应用中,还需要根据具体业务需求进行更详细的配置和处理。同时,要注意处理各种异常情况,以确保分布式事务的正确执行。
|
2月前
|
消息中间件 Java Kafka
在Java中实现分布式事务的常用框架和方法
总之,选择合适的分布式事务框架和方法需要综合考虑业务需求、性能、复杂度等因素。不同的框架和方法都有其特点和适用场景,需要根据具体情况进行评估和选择。同时,随着技术的不断发展,分布式事务的解决方案也在不断更新和完善,以更好地满足业务的需求。你还可以进一步深入研究和了解这些框架和方法,以便在实际应用中更好地实现分布式事务管理。
|
13天前
|
存储 监控 数据可视化
常见的分布式定时任务调度框架
分布式定时任务调度框架用于在分布式系统中管理和调度定时任务,确保任务按预定时间和频率执行。其核心概念包括Job(任务)、Trigger(触发器)、Executor(执行器)和Scheduler(调度器)。这类框架应具备任务管理、任务监控、良好的可扩展性和高可用性等功能。常用的Java生态中的分布式任务调度框架有Quartz Scheduler、ElasticJob和XXL-JOB。
216 66
|
3月前
|
存储 缓存 算法
分布式锁服务深度解析:以Apache Flink的Checkpointing机制为例
【10月更文挑战第7天】在分布式系统中,多个进程或节点可能需要同时访问和操作共享资源。为了确保数据的一致性和系统的稳定性,我们需要一种机制来协调这些进程或节点的访问,避免并发冲突和竞态条件。分布式锁服务正是为此而生的一种解决方案。它通过在网络环境中实现锁机制,确保同一时间只有一个进程或节点能够访问和操作共享资源。
116 3
|
6天前
|
数据采集 人工智能 分布式计算
MaxFrame:链接大数据与AI的高效分布式计算框架深度评测与实践!
阿里云推出的MaxFrame是链接大数据与AI的分布式Python计算框架,提供类似Pandas的操作接口和分布式处理能力。本文从部署、功能验证到实际场景全面评测MaxFrame,涵盖分布式Pandas操作、大语言模型数据预处理及企业级应用。结果显示,MaxFrame在处理大规模数据时性能显著提升,代码兼容性强,适合从数据清洗到训练数据生成的全链路场景...
19 5
MaxFrame:链接大数据与AI的高效分布式计算框架深度评测与实践!
|
21天前
|
消息中间件 存储 安全
分布式系统架构3:服务容错
分布式系统因其复杂性,故障几乎是必然的。那么如何让系统在不可避免的故障中依然保持稳定?本文详细介绍了分布式架构中7种核心的服务容错策略,包括故障转移、快速失败、安全失败等,以及它们在实际业务场景中的应用。无论是支付场景的快速失败,还是日志采集的安全失败,每种策略都有自己的适用领域和优缺点。此外,文章还为技术面试提供了解题思路,助你在关键时刻脱颖而出。掌握这些策略,不仅能提升系统健壮性,还能让你的技术栈更上一层楼!快来深入学习,走向架构师之路吧!
55 11
|
20天前
|
分布式计算 大数据 数据处理
技术评测:MaxCompute MaxFrame——阿里云自研分布式计算框架的Python编程接口
随着大数据和人工智能技术的发展,数据处理的需求日益增长。阿里云推出的MaxCompute MaxFrame(简称“MaxFrame”)是一个专为Python开发者设计的分布式计算框架,它不仅支持Python编程接口,还能直接利用MaxCompute的云原生大数据计算资源和服务。本文将通过一系列最佳实践测评,探讨MaxFrame在分布式Pandas处理以及大语言模型数据处理场景中的表现,并分析其在实际工作中的应用潜力。
57 2
|
2月前
|
存储 Java 关系型数据库
在Spring Boot中整合Seata框架实现分布式事务
可以在 Spring Boot 中成功整合 Seata 框架,实现分布式事务的管理和处理。在实际应用中,还需要根据具体的业务需求和技术架构进行进一步的优化和调整。同时,要注意处理各种可能出现的问题,以保障分布式事务的顺利执行。
101 6
|
2月前
|
数据库
如何在Seata框架中配置分布式事务的隔离级别?
总的来说,配置分布式事务的隔离级别是实现分布式事务管理的重要环节之一,需要认真对待和仔细调整,以满足业务的需求和性能要求。你还可以进一步深入研究和实践 Seata 框架的配置和使用,以更好地应对各种分布式事务场景的挑战。
50 6
|
2月前
|
消息中间件 运维 数据库
Seata框架和其他分布式事务框架有什么区别
Seata框架和其他分布式事务框架有什么区别
36 1