大型分布式服务框架

本文涉及的产品
应用型负载均衡 ALB,每月750个小时 15LCU
网络型负载均衡 NLB,每月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月前
|
存储 缓存 算法
分布式锁服务深度解析:以Apache Flink的Checkpointing机制为例
【10月更文挑战第7天】在分布式系统中,多个进程或节点可能需要同时访问和操作共享资源。为了确保数据的一致性和系统的稳定性,我们需要一种机制来协调这些进程或节点的访问,避免并发冲突和竞态条件。分布式锁服务正是为此而生的一种解决方案。它通过在网络环境中实现锁机制,确保同一时间只有一个进程或节点能够访问和操作共享资源。
78 3
|
26天前
|
机器学习/深度学习 自然语言处理 并行计算
DeepSpeed分布式训练框架深度学习指南
【11月更文挑战第6天】随着深度学习模型规模的日益增大,训练这些模型所需的计算资源和时间成本也随之增加。传统的单机训练方式已难以应对大规模模型的训练需求。
82 3
|
1月前
|
机器学习/深度学习 并行计算 Java
谈谈分布式训练框架DeepSpeed与Megatron
【11月更文挑战第3天】随着深度学习技术的不断发展,大规模模型的训练需求日益增长。为了应对这种需求,分布式训练框架应运而生,其中DeepSpeed和Megatron是两个备受瞩目的框架。本文将深入探讨这两个框架的背景、业务场景、优缺点、主要功能及底层实现逻辑,并提供一个基于Java语言的简单demo例子,帮助读者更好地理解这些技术。
61 2
|
2月前
|
分布式计算 Hadoop
Hadoop-27 ZooKeeper集群 集群配置启动 3台云服务器 myid集群 zoo.cfg多节点配置 分布式协调框架 Leader Follower Observer
Hadoop-27 ZooKeeper集群 集群配置启动 3台云服务器 myid集群 zoo.cfg多节点配置 分布式协调框架 Leader Follower Observer
50 1
|
3月前
|
数据采集 分布式计算 MaxCompute
MaxCompute 分布式计算框架 MaxFrame 服务正式商业化公告
MaxCompute 分布式计算框架 MaxFrame 服务于北京时间2024年09月27日正式商业化!
95 3
|
3月前
|
负载均衡 监控 Dubbo
分布式框架-dubbo
分布式框架-dubbo
|
2月前
|
存储 SQL 消息中间件
Hadoop-26 ZooKeeper集群 3台云服务器 基础概念简介与环境的配置使用 架构组成 分布式协调框架 Leader Follower Observer
Hadoop-26 ZooKeeper集群 3台云服务器 基础概念简介与环境的配置使用 架构组成 分布式协调框架 Leader Follower Observer
49 0
|
3月前
|
运维 NoSQL Java
SpringBoot接入轻量级分布式日志框架GrayLog技术分享
在当今的软件开发环境中,日志管理扮演着至关重要的角色,尤其是在微服务架构下,分布式日志的统一收集、分析和展示成为了开发者和运维人员必须面对的问题。GrayLog作为一个轻量级的分布式日志框架,以其简洁、高效和易部署的特性,逐渐受到广大开发者的青睐。本文将详细介绍如何在SpringBoot项目中接入GrayLog,以实现日志的集中管理和分析。
261 1
|
3月前
|
XML 负载均衡 监控
分布式-dubbo-简易版的RPC框架
分布式-dubbo-简易版的RPC框架
|
4月前
|
数据采集 分布式计算 并行计算
Dask与Pandas:无缝迁移至分布式数据框架
【8月更文第29天】Pandas 是 Python 社区中最受欢迎的数据分析库之一,它提供了高效且易于使用的数据结构,如 DataFrame 和 Series,以及大量的数据分析功能。然而,随着数据集规模的增大,单机上的 Pandas 开始显现出性能瓶颈。这时,Dask 就成为了一个很好的解决方案,它能够利用多核 CPU 和多台机器进行分布式计算,从而有效地处理大规模数据集。
217 1