《后端技术面试 38 讲》学习笔记 Day 10

简介: 《后端技术面试 38 讲》学习笔记 Day 10

《后端技术面试 38 讲》学习笔记 Day 10

27 | 微服务架构:微服务究竟是灵丹还是毒药?


Dubbo 应该说是借鉴了此前更早的 SOA 架构方案,即面向服务的体系架构。

Dubbo 在借鉴 SOA 架构的基础上进行了优化,抛弃了 SOA 一些不必要的规范约束,使用二进制协议进行服务注册与调用,执行效率和使用的简洁性都得到了极大提升。

Dubbo 架构和 SOA 架构一样,最核心的组件也是 3 个,分别是服务提供者、服务消费者和服务注册中心。

阿里微服务重构成功的另外一个重要因素是,即使在单体时代,war 包内的模块关系也还是比较清晰的。所以在重构微服务的时候,只需要对这些模块进行较小的改动,进行微服务部署就可以了。

微服务本身和业务强相关,如果业务关系没梳理好,模块设计不清晰,使用微服务架构很可能得不偿失,带来各种挫折。

心得体会

  1. 小孩是耍不好大刀的,微服务这把牛刀在庖丁手里才是神器。清晰的了解牛的身体构造,就像工程师对工程业务的理解,只有烂熟于心,下刀才不会砍在骨头上。

工作体验

  1. 在单体工程中,子工程(模块)的划分,一个工程里包的划分。紧贴业务调理,不混论,后续拆分微服务才会顺理成章。另外,有术上的技巧,就是通过接口编程,抽象的隔离,不要进行实现上的依赖,对工程脉络也很有帮助。

28 | 高性能架构:除了代码,你还可以在哪些地方优化性能?

原文摘抄

系统性能指标主要有响应时间、并发数、吞吐量和性能计数器。

性能计数器,指的是服务器或者操作系统性能的一些指标数据,包括系统负载 System Load、对象和线程数、内存使用、CPU 使用、磁盘和网络 I/O 使用等指标,这些指标是系统监控的重要参数,反映系统负载和处理能力的一些关键指标,通常这些指标和性能是强相关的。这些指标很高,成为瓶颈,通常也预示着性能可能会出现问题。

具体说来,整个测试过程又可细分为性能测试、负载测试、压力测试三个阶段。

数据中心优化:大型的互联网应用基本都采用多数据中心方案,在全球各个主要区域都部署自己的数据中心,就近为区域用户提供服务,加快响应速度。

硬件优化

操作系统优化:经过分析发现,在某些版本的 Linux 中,transparent huge page 这个参数是默认打开的,导致系统占用 CPU 过高。

虚拟机优化

基础组件优化

架构优化:缓存、消息队列、集群

代码优化

心得体会

  1. 这是从架构师角度去看的架构优化,也是公司级的架构师。从数据中心一直到代码层次。
  2. 性能优化真的知识面又广又深,工作四五年的我也只能是在某些方向略知皮毛。

工作体验

  1. 先说说听说的,在一个数据中心,服务器是不是在一个机架、传输的是不是万兆网卡都很影响大数据这样的集群跑批的性能。
  2. jvm的参数调整可能是最贴近java工程师的,主要在于调整JVM内存的大小,以及GC算法的调整。工作目前来看,给不要太少的JVM,GC调整为G1垃圾回收器,正常压数个小时的压力测试,也不会出现FGC,已经很不错了。
  3. 然后是各种组件的调参,需要对我们用到的组件、中间件有足够的了解。例如tomcat连接数、线程数;redis的连接数、超时时间、空闲连接数等;feign的连接数,超时时间等配置都会影响性能。
  4. 然后是操作系统的调参,目前生产用的基本上都是redhat,也在其他公司看过centos,像ubuntu还未在生产上遇到过。操作系统的参数很多,没有听过那个参数我们可能根本没有去查看、调整他的思路。例如哪个参数限制socket连接数量,又哪个参数设置tcp自动断开的时间等等,都是需要学习+经验+遭遇才会慢慢习得的。不能急于求成,慢慢来吧。
  5. 另外,想起来以前其他吸引人的标题文章,例如“榨干服务器的每一分性能”,其实这个是一个比较可笑的做法。我们往往在机器的各种资源到达80%就进行轻微的告警,通知系统负责人,而一旦到90%,并保持一段时间,就生成一个严重的告警了。
    服务器长期处于一个高压情况是一个危险的做法,进程存在被操作系统kill掉的风险,或者操作系统本身宕机。
    这个指标指导我们在压测时,性能调优时,比较优秀的做法是将性能约束在75%-80%,可以偶尔超过85%(高峰刚过来的时候)。
目录
相关文章
|
1月前
|
存储 分布式计算 大数据
HBase分布式数据库关键技术与实战:面试经验与必备知识点解析
【4月更文挑战第9天】本文深入剖析了HBase的核心技术,包括数据模型、分布式架构、访问模式和一致性保证,并探讨了其实战应用,如大规模数据存储、实时数据分析及与Hadoop、Spark集成。同时,分享了面试经验,对比了HBase与其他数据库的差异,提出了应对挑战的解决方案,展望了HBase的未来趋势。通过Java API代码示例,帮助读者巩固理解。全面了解和掌握HBase,能为面试和实际工作中的大数据处理提供坚实基础。
49 3
|
1月前
|
前端开发 JavaScript 关系型数据库
从前端到后端:构建现代化Web应用的技术探索
在当今互联网时代,Web应用的开发已成为了各行各业不可或缺的一部分。从前端到后端,这篇文章将带你深入探索如何构建现代化的Web应用。我们将介绍多种技术,包括前端开发、后端开发以及各种编程语言(如Java、Python、C、PHP、Go)和数据库,帮助你了解如何利用这些技术构建出高效、安全和可扩展的Web应用。
|
1月前
|
人工智能 运维 监控
《后端技术的未来:智能化引领下的创新与挑战》
传统的后端技术在智能化时代迎来了前所未有的转变。本文探讨了智能化技术在后端领域的应用和影响,以及智能化引领下的创新与挑战。通过分析智能化技术对后端系统架构、开发流程、运维管理等方面的影响,展望了后端技术的未来发展趋势。
11 1
|
22天前
|
缓存 NoSQL Redis
Python缓存技术(Memcached、Redis)面试题解析
【4月更文挑战第18天】本文探讨了Python面试中关于Memcached和Redis的常见问题,包括两者的基础概念、特性对比、客户端使用、缓存策略及应用场景。同时,文章指出了易错点,如数据不一致和缓存淘汰策略,并提供了实战代码示例,帮助读者掌握这两款内存键值存储系统的使用和优化技巧。通过理解其核心特性和避免常见错误,可以提升在面试中的表现。
28 2
|
2月前
|
运维 Cloud Native 云计算
未来趋势:云原生技术在后端开发中的应用
随着云计算技术的快速发展,云原生技术作为一种新兴的软件架构理念,在后端开发领域日益受到关注。本文将探讨云原生技术的基本概念、优势以及在后端开发中的应用,展望未来云原生技术对于软件开发的影响和发展趋势。
|
12天前
|
JavaScript 前端开发 IDE
【TypeScript技术专栏】TypeScript与Node.js后端开发
【4月更文挑战第30天】TypeScript在Node.js后端开发中日益重要,作为JavaScript超集,它提供静态类型检查和面向对象编程,增强代码可靠性和维护性。集成TypeScript能带来类型安全、更好的IDE体验、易于维护的代码以及增强工具支持。通过安装TypeScript编译器、编写TypeScript文件、配置TSconfig,开发者可以在Node.js项目中利用其高级特性,提高代码质量和开发效率。实践案例显示,TypeScript能确保路由处理器的类型正确,降低错误率。随着社区发展,TypeScript成为提升Node.js开发体验的推荐选择。
|
13天前
|
存储 监控 安全
21个 JVM 技术点详解(附面试解答)
以上V哥给大家详细介绍了 JVM 中涉及的21个点,全网还没有针对 JVM 这样来梳理的内容,希望对你深入了解 JVM 有一定帮助,另,V 哥给大家推荐一本《深入 JVM 虚拟机》的书籍,可以作为工具书使用,高阶的 Java 程序员几乎人手一本。今天的分享就到这里,任何疑问欢迎与 V 哥一起交流,畅谈 Java 人生。
|
13天前
|
存储 缓存 算法
后端技术优化与应用研究
后端技术优化与应用研究
15 1
|
13天前
|
机器学习/深度学习 Kubernetes 微服务
后端技术发展及其在高性能系统中的应用研究
后端技术发展及其在高性能系统中的应用研究
18 0
|
14天前
|
存储 前端开发 JavaScript
从前端到后端:构建全栈应用的关键技术探究
在当今互联网时代,全栈开发已经成为了越来越多开发者的追求目标。本文将深入探讨从前端到后端构建全栈应用所需的关键技术,涵盖了前端框架选择、后端语言与框架、数据库设计以及前后端通信等方面,帮助读者全面了解全栈开发的必备技能和工具。