《后端技术面试 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月前
|
监控 中间件 Java
后端技术:构建高效、稳定的服务器端应用
【10月更文挑战第5天】后端技术:构建高效、稳定的服务器端应用
78 0
|
1月前
|
监控 关系型数据库 Serverless
探索后端技术:构建高效、可靠的服务器端应用
本文将深入探讨后端开发的核心概念和关键技术,从服务器架构到数据库管理,再到安全防护,为读者提供全面的后端技术指南。无论是初学者还是经验丰富的开发者,都能从中汲取灵感,提升自己的技术水平。
|
1月前
|
JavaScript 前端开发 中间件
探索后端技术:Node.js与Express框架的完美融合
【10月更文挑战第7天】 在当今数字化时代,Web应用已成为日常生活不可或缺的一部分。本文将深入探讨后端技术的两大重要角色——Node.js和Express框架,分析它们如何通过其独特的特性和优势,为现代Web开发提供强大支持。我们将从Node.js的非阻塞I/O和事件驱动机制,到Express框架的简洁路由和中间件特性,全面解析它们的工作原理及应用场景。此外,本文还将分享一些实际开发中的小技巧,帮助你更有效地利用这些技术构建高效、可扩展的Web应用。无论你是刚入门的新手,还是经验丰富的开发者,相信这篇文章都能为你带来新的启发和思考。
|
1月前
|
JavaScript 前端开发 API
探索后端技术:Node.js的优势和实际应用
【10月更文挑战第6天】 在当今数字化时代,后端开发是任何成功软件应用的关键组成部分。本文将深入探讨一种流行的后端技术——Node.js,通过分析其核心优势和实际应用案例,揭示其在现代软件开发中的重要性和潜力。
121 2
|
1月前
|
存储 安全 关系型数据库
后端技术:构建高效稳定的现代Web应用
【10月更文挑战第5天】后端技术:构建高效稳定的现代Web应用
53 1
|
1月前
|
缓存 Java 数据库
后端技术探索:从基础架构到高效开发的实践之路
【10月更文挑战第7天】 在现代软件开发中,后端技术是支撑应用运行的核心。本文将探讨如何从后端的基础架构出发,通过一系列高效的开发实践,提升系统的性能与可靠性。我们将深入分析后端框架的选择、数据库设计、接口开发等关键领域,并提供实用的代码示例和优化策略,帮助开发者构建更稳定、高效的后端系统。通过这篇文章,读者将获得关于后端开发的全面理解和实践指导,从而更好地应对复杂项目需求。
69 0
|
1月前
|
JavaScript API 微服务
探索现代后端开发:关键技术和最佳实践
【10月更文挑战第6天】探索现代后端开发:关键技术和最佳实践
|
1月前
|
存储 安全 关系型数据库
后端技术深度剖析:构建高效稳定的企业级应用
【10月更文挑战第5天】后端技术深度剖析:构建高效稳定的企业级应用
54 0
|
6天前
|
监控 API 微服务
后端技术演进:从单体架构到微服务的转变
随着互联网应用的快速增长和用户需求的不断演化,传统单体架构已难以满足现代软件开发的需求。本文深入探讨了后端技术在面对复杂系统挑战时的演进路径,重点分析了从单体架构向微服务架构转变的过程、原因及优势。通过对比分析,揭示了微服务架构如何提高系统的可扩展性、灵活性和维护效率,同时指出了实施微服务时面临的挑战和最佳实践。
25 7
|
4天前
|
存储 网络协议 安全
30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场
本文精选了 30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场。
17 2