后端
文章平均质量分 91
职略
这个作者很懒,什么都没留下…
展开
-
如何有效识别限界上下文?
在实施DDD的过程中,识别限界上下文是一大难点,但也并非无章可循。在本文内容中,我们将分别从业务维度、工作维度以及技术维度进行展开,讨论如何有效识别限界上下文的方法和技巧。原创 2024-05-07 11:30:46 · 828 阅读 · 0 评论 -
什么是动态代理?它在主流开源框架中有哪些应用?
在系统设计过程中,对象之间相互依赖会造成耦合度过高,我们需要引入一个中间类来消除或缓解在直接访问目标对象时所带来的问题。但是对于发起访问的对象而言,通常希望这个中间类的存在是无感知的,这时候我们就可以引入动态代理机制。那么,问题就来了,作为一种通用型的技术组件,动态代理在分布式系统构建过程中起到什么作用呢?本文内容将和你一起探讨这个话题。在系统设计领域,代理(Proxy)是一种常见的技术组件,主要目的就是在访问目标对象之前添加一层代理对象,用于消除或缓解在直接访问目标对象时带来的问题。原创 2024-04-18 15:53:03 · 921 阅读 · 0 评论 -
如何自己动手写一个基础RPC架构
任何分布式系统的开发都涉及到跨进程之间的远程过程调用,也就是所谓的RPC。前面两讲我们讨论的网络通信和序列化实际上也都属于是RPC架构的范畴,只是关注于不同的技术切入点。而RPC本身也构成一种架构体系,包含一系列相互协作的核心组件。在Dubbo、Spring Cloud等主流的分布式服务框架中,这些技术组件使用起来都非常简单,因为框架为开发人员屏蔽了底层的实现细节。那么,现在假如没有这些开源框架,而是需要你自己来设计并实现一套远程过程调用机制,你应该怎么做的?原创 2024-04-17 15:13:39 · 1014 阅读 · 0 评论 -
如何实现分布式链路跟踪
而四种注解构成了客户端和服务器对一次请求处理的闭环,对于服务A而言,cs是11:10:44, cr是11:10:55,也就说该次服务请求经由服务A的整个调用链路时间是11s(11:10:44-11:10:55),显然这个响应时间非常长。对于服务监控而言,服务调用链数据收集、分析和管理的目的是为了发现服务调用过程的问题并采取相应的优化措施。所谓跨度,就是调用链路中的其中一段时间,具有明确的开始和结束这两个节点,这样通过计算开始时间和结束时间之间的时间差,我们就能明确调用过程在这个Span上所产生的时间延迟。原创 2024-04-16 17:22:45 · 1226 阅读 · 0 评论 -
负载均衡算法有哪些?如何实现?
在分布式环境下,我们将多个服务实例集中在一起,每一次请求都可以由集群中的某一个服务实例进行响应。那么具体某一个请求到底应该是由哪个服务实例来响应最为合适呢?这个话题看上去很简单,实际上却有点复杂,涉及到服务请求的路由机制。而在分布式系统中,负载均衡就是最常见也是最具代表性的一种路由机制。为了对请求进行合理的分发,我们需要提供一组负载均衡算法,那么常见的负载均衡算法有哪些?它们又应该如何实现呢?我们先来看这些问题背后的示意图,如下图所示。原创 2024-04-12 10:06:15 · 942 阅读 · 0 评论 -
Spring是如何解决循环依赖问题
而earlySingletonObjects中存放的是那些提前暴露的对象,也就是已经创建但还没有完成属性注入的对象,属于第二级缓存。所谓的三级缓存,在Spring中表现为三个Map对象,定义在DefaultSingletonBeanRegistry类中,该类是DefaultListableBeanFactory的父类,如下所示。ClassB对象创建完成之后会放到第一级缓存中,这时候ClassA就能从第一级缓存中获取ClassB的实例,进而完成ClassA的所有初始化流程。原创 2024-04-11 16:31:13 · 1212 阅读 · 2 评论