Tech 导读 分层单体架构风格是分层思想在单体架构中的应用,其关注于技术视角的职责分层。同时,基于不同层变化速率的不同,在一定程度上控制变化在系统内的传播,有助于提升系统的稳定性。但这种技术视角而非业务视角的关注点隔离,导致了问题域与工程实现之间的Gap,这种割裂会导致系统认知复杂度的提升。 01 经典单体分层架构 在今年的敏捷团队建设中,我通过Suite执行器实现了一 […]
Tech 导读 分层单体架构风格是分层思想在单体架构中的应用,其关注于技术视角的职责分层。同时,基于不同层变化速率的不同,在一定程度上控制变化在系统内的传播,有助于提升系统的稳定性。但这种技术视角而非业务视角的关注点隔离,导致了问题域与工程实现之间的Gap,这种割裂会导致系统认知复杂度的提升。 01 经典单体分层架构 在今年的敏捷团队建设中,我通过Suite执行器实现了一 […]
作者:vivo互联网技术团队 Li Guanyun、 Jessica Chen 一、背景 2021年2月,收到反馈,视频APP某核心接口高峰期响应慢,影响用户体验。 通过监控发现,接口响应慢主要是P99耗时高引起的,怀疑与该服务的GC有关,该服务典型的一个实例GC表现如下图: 可以看出,在观察周期里: 平均每10分钟Young GC次数66次,峰值为470次; […]
此篇文章只聚焦于如何配置一个比较合理的采用CMS作为垃圾回收器的JVM参数。首先要说的是,JDK8要使用CMS,那么必须显示申明,因为它采用的默认垃圾回收器是ParallelGC。如何验证它默认采用的垃圾回收器呢?非常简单,运行如下代码: package com.afei.test.main; import java.util.ArrayList; import java. […]
服务器内存问题是影响应用程序性能和稳定性的重要因素之一,需要及时排查和优化。本文介绍了某核心服务内存问题排查与解决过程。首先在JVM与大对象优化上进行了有效的实践,其次在故障转移与大对象监控上提出了可靠的落地方案。最后,总结了内存优化需要考虑的其他问题。 一、问题描述 音乐业务中,core服务主要提供歌曲、歌手等元数据与用户资产查询。随着元数据与用户资产查询量的增长,一些J […]
JVM垃圾回收器CMS原理与调优 1. JVM运行原理简介 我们写好的代码,是要通过JVM才能运行的。 JVM 想要执行一个类,首先要加载类,在加载类之前,需要先编译成字节码class文件; 然后就执行类的加载过程,JVM 加载类的话,需要类加载器; 类加载器是分层级的,遵循双亲委派机制。 最上层是Bootstrap ClassLoder,加载java的核心类库, […]
前言 日常编码中,代码的命名是个大的学问。能快速的看懂开源软件的代码结构和意图,也是一项必备的能力。那它们有什么规律呢? Java项目的代码结构,能够体现它的设计理念。Java采用长命名的方式来规范类的命名,能够自己表达它的主要意图。配合高级的IDE,可以减少编码人员的记忆负担,靠模糊的匹配就能找到自己所需要的资源。 为了让大家更好的理解命名的套路,我借鉴了最流行的Java […]
一 问题是怎么发现的 最近有个Java系统上线后不久就收到了磁盘使用率告警,磁盘使用率已经超过了90%以上,并且磁盘使用率还在不停增长。 二 问题带来的影响 由于服务器磁盘被打满,导致了系统正常的业务日志无法继续打印,严重影响了系统的可靠性。 三 排查问题的详细过程 刚开始收到磁盘告警的时候,怀疑是日志级别问题,业务日志输出过多导致磁盘打满。但是查看我们自己的业务日志文件目 […]
相信大家在日常的开发中都遇到过复杂数据处理和复杂数据校验的场景,本文从一线开发者的角度,分享了责任链模式在这种复杂数据处理场景下的实战案例,此外,作者在普通责任链模式的基础上进行了升级改造,可以适配更加复杂的应用场景;文章整体读下来,可以让读者对于设计模式-责任链模式有深刻的印象。 01 什么是责任链模式 ▐ 概念 责任链模式让多个对象都有机会处理同一个请求。它将请求的发 […]
Tech 导读 面对高并发调用的调用场景,针对不同的业务场景,处理方式往往各有不同,本文针对实际的业务场景,通过实际业务场景分析,调用量分析,最终采用合理的技术方案,完成实际的业务场景。 01 前言 在今年的敏捷团队建设中,我通过Suite执行器实现了一键自动化单元测试。Juint除了Suite执行器还有哪些执行器呢?由此我的Runner探索之旅开始了! 物流合约中心是京 […]
这是遇到的第三次升级MySQL8 Java驱动的“坑”之三。分享一些经历,希望可以帮你少掉进坑里。 之三如下: ①最近有伙伴悄悄升级了Java MySQL8驱动,上线之后业务报障:说某某功能怎么提交不了,而且还提示报错。接到消息,立马查看。排查是某个查询接口报错,于是进一步排查,发现这生产日志打印如下: 可以从上面的异常日志发现,应该是某个字段类型不匹配造成的 […]
对于一个架构师来说,在软件开发中如何降低系统复杂度是一个永恒的挑战。 01 为什么需要DDD 复杂系统设计:系统多,业务逻辑复杂,概念不清晰,有什么合适的方法帮助我们理清楚边界,逻辑和概念 多团队协同:边界不清晰,系统依赖复杂,语言不统一导致沟通和理解困难。有没有一种方式把业务和技术概念统一,大家用一种语言沟通。例如:航程是大家所理解的航程吗? 设计与实现一致 […]
大家好,我已经写代码超过10年了,我可以充满信心地说,编写干净,高效和可维护的代码对任何Java开发人员来说都是必不可少的。它不仅提高了代码的可读性,而且还帮助您避免常见的陷阱并提高软件的整体质量。 在过去,我分享了10个Spring Cloud功能,使微服务开发更容易,50+ Spring靴子面试问题以及其他几篇关于Java和Spring Boot的文章,在这篇博客文章中 […]
Spring中的@Autowired和@Inject注解有什么区别,这是Java面试中常见的Spring问题之一
Photo by Clément Hélardot on Unsplash 照片由Clément Hélardot在Unsplash上拍摄 1. Manually throw other exceptions 手动抛出其他异常 @Service public class DemoServiceImpl implements DemoService { @Autowired […]
一、基础理论 PART1.1 CAP理论 一致性(Consistency) :在分布式系统中所有的数据备份,在同一时刻都保持一致状态,如无法保证状态一致,直接返回错误。 可用性(Availability):在集群中一部分节点故障,也能保证客户端访问系统并得到正确响应,允许一定时间内数据状态不一致。 分区容错性(Partition tolerance):分 […]
COPYRIGHT © 2014-2023 verysu.com . ALL RIGHTS RESERVED.
Theme Kratos Made By Seaton Jiang