构建弹性分布式系统:Java EE 中的策略与实践
在分布式系统的构建中,面临着通信、性能和组织等多方面的挑战,但分布式往往是必要的。本文将深入探讨 Java EE 中实现系统弹性和可观测性的多种策略,包括舱壁模式、握手与背压机制,以及业务和技术指标的监控等内容。
1. 舱壁模式
舱壁模式的灵感来源于船舶设计。船舶中的舱壁将船体分隔成多个区域,当船体某一处出现漏洞时,只有单个区域会进水,而整艘船仍有可能漂浮。在企业应用中,舱壁模式将这一概念引入,旨在当应用的某个组件出现故障或因工作负载达到容量限制时,应用的其他部分仍能正常运行。
例如,将业务流程的线程执行与 HTTP 端点分离。应用服务器管理单个请求线程池,如果某个业务组件失败并阻塞所有传入请求,所有可用的请求线程最终都会被占用,导致其他业务用例无法被调用。使用异步 JAX - RS 资源和专用的托管执行服务可以缓解这个问题。
以下是结合异步 JAX - RS 资源和专用执行服务的舱壁模式示例代码:
import com.airhacks.porcupine.execution.boundary.Dedicated;
import java.util.concurrent.ExecutorService;
@Path("users")
@Produces(MediaType.APPLICATION_JSON)
public class UsersResource {
@Inject
@Dedicated("custom-name")
ExecutorService executor;
@GET
超级会员免费看
订阅专栏 解锁全文
22

被折叠的 条评论
为什么被折叠?



