架构师一定要看微服务设计的四个原则

每天三小时,你也可以成为java架构师 知识点:线程池、锁机制(synchronized、ReentrantLock)、并发工具类(CountDownLatch、CyclicBarrier)。知识点:服务注册与发现(Eureka)、配置中心(Config)、负载均衡(Ribbon)。知识点:JVM调优、代码优化、性能监控工具(Arthas、JProfiler)。1小时:实践(使用JVM工具如jstat、jmap分析内存)。1小时:编写并发代码(如实现线程池、模拟高并发场景)。知识点:服务拆分原则、服务治理(熔断、限流、降级)。 阅读详情

微服务的设计原则

AKF原则

  业界对于可扩展的系统架构设计有一个朴素的理念,就是:通过加机器就可以解决容量和可用性问题。(如果一台不行那就两台)。(世界上没有什么事是一顿烧烤不能解决的。如果有,那就两顿。)

  这一理念在“云计算”概念疯狂流行的今天,得到了广泛的认可!于一个规模迅速增长的系统而言,容量和性能问题当然是首当其冲的。但是随着时间的向前,系统规模的增长,除了面对性能与容量的问题外,还需要面对功能与模块数量上的增长带来的系统复杂性问题以及业务的变化带来的提供差异化服务问题。而许多系统,在架构设计时并未充分考虑到这些问题,导致系统的重构成为常态,从而影响业务交付能力,还浪费人力财力!对此,《可扩展的艺术》一书提出了一个更加系统的可扩展模型—— AKF 可扩展立方 (Scalability Cube)。这个立方体中沿着三个坐标轴设置分别为:X、Y、Z。

架构师一定要看微服务设计的四个原则

  • Y 轴(功能) —— 关注应用中功能划分,基于不同的业务拆分
  • X 轴(水平扩展) —— 关注水平扩展,也就是”加机器解决问题”
  • Z 轴(数据分区) —— 关注服务和数据的优先级划分,如按地域划分

Y轴(功能)

  Y 轴扩展会将庞大的整体应用拆分为多个服务。每个服务实现一组相关的功能,如订单管理、客户管理等。在工程上常见的方案是 服务化架构(SOA) 。比如对于一个电子商务平台,我们可以拆分成不同的服务,组成下面这样的架构:

架构师一定要看微服务设计的四个原则

  但通过观察上图容易发现,当服务数量增多时,服务调用关系变复杂。为系统添加一个新功能,要调用的服务数也变得不可控,由此引发了服务管理上的混乱。所以,一般情况下,需要采用服务注册的机制形成服务网关来进行服务治理。系统的架构将变成下图所示

架构师一定要看微服务设计的四个原则

X轴(水平扩展)

  X 轴扩展与我们前面朴素理念是一致的,通过绝对平等地复制服与数据,以解决容量和可用性的问题。其实就是将微服务运行多个实例,做集群加负载均衡的模式。为了提升单个服务的可用性和容量, 对每一个服务进行 X 轴扩展划分 。

架构师一定要看微服务设计的四个原则

Z轴数据分区

  Z 轴扩展通常是指基于请求者或用户独特的需求,进行系统划分并使得划分出来的子系统是相互隔离但又是完整的。以生产汽车的工厂来举例:福特公司为了发展在中国的业务,或者利用中国的廉价劳动力,在中国建立一个完整的子工厂,与美国工厂一样,负责完整的汽车生产。这就是一种 Z 轴扩展。

工程领域常见的 Z 轴扩展有以下两种方案

单元化架构

  在分布式服务设计领域,一个单元(Cell)就是满足某个分区所有业务操作的自包含闭环。如上面我们说到的 Y 轴扩展的 SOA 架构,客户端对服务端节点的选择一般是随机的,但是,如果在此加上 Z 轴扩展,那服务节点的选择将不再是随机的了,而是每个单元自成一体。如下图:

架构师一定要看微服务设计的四个原则

数据分区

  为了性能数据安全上的考虑,我们将一个完整的数据集按一定的度划分出不同的子集。一个分区(Shard),就是是整体数据集的一个子集。比如用尾号来划分用户,那同样尾号的那部分用户就可以认为是一个分区。数据分区为一般

包括以下几种数据划分的方式

  • 数据类型(如:业务类型)
  • 数据范围(如:时间段,用户 ID)
  • 数据热度(如:用户活跃度,商品热度)
  • 按读写分(如:商品描述,商品库存)

前后端分离

架构师一定要看微服务设计的四个原则

  何为前后端分离?前后端本来不就分离么?这要从尴尬的 jsp 讲起。分工精细化从来都是蛋糕做大的原则,多个领域工程师最好在不需要接触其他领域知识的情况下合作,才可能使效率越来越高,维护也会变得简单。jsp 的模板技术融合了 html 和 java 代码,使得传统MVC 开发中的前后端在这里如胶似漆,前端做好页面,后端转成模板,发现问题再找前端,前端又看不懂 java 代码…前后端分离的目的就是将这尴尬局面打破。前后端分离原则,简单来讲就是前端和后端的代码分离,我们推荐的模式是最好采用物理分离的方式部署,进一步促使更彻底的分离。如果继续直接使用服务端模板技术,如:jsp,把 java、js、html、css 都堆到一个页面里,稍微复杂一点的页面就无法维护了。

架构师一定要看微服务设计的四个原则

这种分离方式有几个好处:

  1. 前后端技术分离,可以由各自的专家来对各自的领域进行优化,这样前端的用户体验优化效果更好。
  2. 分离模式下,前后端交互界面更清晰,就剩下了接口模型,后端的接口简洁明了,更容易维护。
  3. 前端多渠道集成场景更容易实现,后端服务无需变更,采用统一的数据和模型,可以支持多个前端:例如:微信 h5 前端、PC 前端、安卓前端、IOS 前端。

无状态服务

架构师一定要看微服务设计的四个原则

  对于无状态服务,首先说一下什么是状态:如果一个数据需要被多个服务共享,才能完成一笔交易,那么这个数据被称为状态。进而依赖这个“状态”数据的服务被称为有状态服务,反之称为无状态服务。那么这个无状态服务原则并不是说在微服务架构里就不允许存在状态,表达的真实意思是要把有状态的业务服务改变为无状态的计算类服务,那么状态数据也就相应的迁移到对应的“有状态数据服务”中。场景说明:例如我们以前在本地内存中建立的数据缓存、Session 缓存,到现在的微服务架构中就应该把这些数据迁移到分布式缓存中存储,让业务服务变成一个无状态的计算节点。迁移后,就可以做到按需动态伸缩,微服务应用在运行时动态增删节点,就不再需要考虑缓存数据如何同步的问题。

RestFul通讯风格

架构师一定要看微服务设计的四个原则

作为一个原则来讲本来应该是个“无状态通信原则”,在这里我们直接推荐一个实践优选的Restful 通信风格 ,因为它有很多好处:

  1. 无状态协议HTTP,具备先天优势,扩展能力很强。例如需要安全加密是,有现成的成熟方案HTTPS可用。
  2. JSON 报文序列化,轻量简单,人与机器均可读,学习成本低,搜索引擎友好。
  3. 语言无关,各大热门语言都提供成熟的Restful API框架,相对其他的一些RPC框架生态更完善。
  4. 当然在有些特殊业务场景下,也需要采用其他的RPC框架,如thrift、avro-rpc、grpc。但绝大多数情况下Restful就足够用了。
微服务架构之基本设计原则 作为系统架构师,在进行架构设计时需要遵循一系列经过实践验证的核心原则,这些原则贯穿于需求分析、模块划分、技术选型和系统演进的全流程。 阅读详情

相关推荐

架构师必须知道的架构设计原则

一、前言 如果一个技术已经存在3年,比如现在很火的前端技术react和vue等,那么我能预估这个技术大致还有3年的生命期,再久就不确定了;如果一个架构或设计原则已经存在15年,例如单一职责和依赖倒置原则,我可以预期它还有15年甚至更久的生命期。原则是比具体技术更抽象,更接近事物本质,也更经得起时间考验的东西。这些原则沉淀在架构师的脑海中,最终内化成他的mindset,以潜意识方式影响和指导他的架构...

架构师波波的专栏 2464

微服务的设计选择

微服务的设计原则 AKF原则 业界对于可扩展的系统架构设计有一个朴素的理念,就是:通过加机器就可以解决容量和可用性问题。(如果一台不行那就两台)。(世界上没有什么事是一顿烧烤不能解决的。如果有,那就两顿。) 这一理念在“云计算”概念疯狂流行的今天,得到了广泛的认可!于一个规模迅速增长的系统而言,容量和性能问题当然是首当其冲的。但是随着时间的向前,系统规模的增长,除了面对性能与容量的问题外,还需要面对功能与模块数量上的增长带来的系统复杂性问题以及业务的变化带来的提供差异化服务问题。而许多系统,在架构设计时并未

以择人之心择己,以恕己之心恕人。 1万+

提示工程架构师指南:如何设计可维护的微服务?

在深入技术细节前,我们需要明确什么是可维护性。可修改性:能够有效且高效地对软件进行修改可测试性:能够有效且高效地为修改后的软件进行测试可理解性:能够有效且高效地理解软件稳定性:修改软件时避免意外副作用的能力但这个定义过于技术化。从我20年的架构经验来看,可维护的软件是那些能够在业务需求变化时,以可预测的成本和时间进行调整的系统。它不是一次性的"完美设计",而是能够持续适应的架构。想象两栋房子:一栋设计精良但无法扩建的豪宅,和一栋结构灵活、可以根据家庭需求变化而改造的普通住宅。

移动开发前沿的博客 1110

推荐:微服务入坑详细指南

概念:微服务就是一些可独立运行、可协同工作的小的服务。微服务是现在特别流行的服务,微服务的字面意思是大家都很好理解,就是将系统拆分成很多小的独立系统,每个系统我们看成一个服务,从存储,缓存,部署相对独立。通过服务的小型化、原子化以及分布式架构的弹性伸缩和高可用性,可以实现业务之间的松耦合、业务的灵活调整组合以及系统的高可用性。为业务创新和业务持续提供了一个良好的基础平台。从概念中我们可以提取三个关...

欢迎来到技术宅的博客 587

Java架构师系统架构提升扩展性

目录 1 导语 2 架构扩展性-应用扩展 3 架构扩展性-数据扩展 4 组织可扩展性 5 流程可扩展性 6 多快好省-扩展性实现方案 7单体应用从数百节点到数万节点的扩展历程 8 总结

赵广陆 1491

Microservices Patterns Thierry Legrand

微服务是一个非常热门的开发模式,它的出现使得应用变得更加灵活、可扩展,降低了单个应用的复杂性,但是同时也给系统的设计、开发和维护带来了新的复杂性。本书通过描述微服务架构的模式、原则、组件及其适用场景,阐述微服务架构在分布式系统中发挥重要作用,并总结实践经验,提升架构能力,提供指导性建议,将对微服务架构的学习和使用进行到底。本书面向开发人员和架构师,从微服务架构的历史、演化、原理、模式、原则、组件及适用场景等方面,详细地介绍微服务架构设计方法论。其中包括理论知识和实践案例。

AI天才研究院 2245

[转]微服务的4个设计原则和19个解决方案

目录 一、微服务架构演进过程 二、微服务架构的好处 三、微服务应用4个设计原则 1.AKF拆分原则 2.前后端分离 3.无状态服务 4.Restful通信风格 四、微服务架构带来的问题 五、微服务平台的19个落地实践 1.企业IT建设的三大基础环境 2.微服务应用平台总体架构 3.微服务应用平台的运行视图 4.微服务平台的设计目标 5.微服务开发:前端、后端、混合 6.服务契约与API管理 7.服务契约与服务模拟 8.服务契约与服务编排 9.微服务容器 10.三方能力集

Admans的专栏 2015

DrissionPage无头模式破盾记:实战绕过CloudFlare 5秒验证

本文详细介绍了如何使用DrissionPage无头模式绕过CloudFlare 5秒盾验证,提升爬虫效率。通过关键参数配置、服务器环境问题处理及高级绕过技巧,如动态UA轮换和鼠标移动模拟,帮助开发者有效应对反爬机制。实战案例展示了如何结合最新Chrome UA和参数设置实现稳定数据采集。

weixin_29327525的博客 487

【微服务架构】微服务设计模式

这是微服务架构系列文章的第 3 篇高可用性、可扩展性、故障恢复能力和性能是微服务的特征。您可以使用微服务架构模式来构建微服务应用程序,从而降低微服务失败的风险。模式分为三层:应用模式应用程序模式解决了开发人员面临的问题,例如数据分解、数据维护、测试、用户界面和一些可观察性模式。让我们回顾一下这些应用程序模式的基础知识。分解模式选择如何将单体系统分解为服务按业务能力分解——...

全网:架构师研究会 982

告别繁琐同步:Zotero与Obsidian双向联动新方案(基于Better BibTeX与MarkDBConnect)

本文详细介绍了一套基于Better BibTeX、Bibnotes Formatter和MarkDBConnect插件的Zotero与Obsidian双向联动方案。该方案通过建立智能数据通道,实现文献信息的自动同步与笔记的增量更新,解决了手动同步的繁琐问题,并支持在两大工具间无缝跳转,极大提升了科研和知识管理的工作效率。

weixin_29213827的博客 643

HR离职预测模型实战:可解释、可干预、可落地的三层架构

员工离职预测本质上是组织健康度的早期诊断技术,其核心原理在于从行为、心理与结构数据中识别稳定性衰减信号。该技术的价值不仅在于提升预测准确率,更在于将模糊的‘人才风险’转化为可归因、可干预的具体因子,如工龄阶段、满意度落差、薪酬分位数等。典型应用场景覆盖HRBP主动留任、业务部门梯队预警及HRIS系统智能升级。本文聚焦于构建具备业务可解释性与操作闭环能力的离职预警模型,深度融合HR工作流与机器学习工程实践,尤其强调逻辑回归基线、特征业务化重构及三层递进式架构设计。

赵士杰的博客 387

微服务当中的4大设计原则及19个解决方案

同时,随着微服务的不断演化,也会出现新的设计原则和解决方案,开发团队需要不断学习和更新自己的技术栈,以适应不断变化的软件开发环境。在微服务架构中,有四个重要的设计原则和一系列解决方案,可以帮助开发人员构建高效、可扩展和可维护的微服务应用。在微服务架构中,有四个重要的设计原则和一系列解决方案,可以帮助开发人员构建高效、可扩展和可维护的微服务应用。3、容错性(Resilience):容错性是微服务架构中至关重要的设计原则,因为一个微服务的故障不能影响整个系统的可用性。

竹林幽深 995

第八章 Vite4+Vue3+Vtkjs 完整demo演示

vtk.js是一个基于WebGL的开源3D可视化库,它可以在Web浏览器中呈现高质量的3D图形。vtk.js提供了一个易于使用的API,可以用于创建各种类型的3D可视化,包括科学、医学、工程和地球科学等领域。vtk.js支持多种数据格式,包括VTK、DICOM、STL等,可以轻松地将数据导入到可视化中。此外,vtk.js还支持交互式可视化,用户可以通过鼠标和键盘进行交互,探索和分析数据。采用的vite4+pinia搭建的Vue3项目。

Wait.End的博客 2234

架构师一定要看,微服务设计的四个原则

微服务的设计原则 AKF 原则   业界对于可扩展的系统架构设计有一个朴素的理念,就是:通过加机器就可以解决容量和可用性问题。(如果一台不行那就两台)。(世界上没有什么事是一顿烧烤不能解决的。如果有,那就两顿。)   这一理念在“云计算”概念疯狂流行的今天,得到了广泛的认可!于一个规模迅速增长的系统而言,容量和性能问题当然是首当其冲的。但是随着时间的向前,系统规模的增长,除了面对性能与容量的问题外,还需要面对功能与模块数量上的增长带来的系统复杂性问题以及业务的变化带来的提供差异化服务问题。而许多系统,

m0_64374605的博客 171

【推荐100个unity插件】动画重定向,快速在不同角色间共享动画,共用非人形Humanoid(泛型generic)动画——Retarget Pro

Retarget Pro是一款高效的Unity动画重定向工具,可快速在不同角色间共享动画。主要特点包括:1分钟快速设置,支持编辑器和运行时重定向;适用于人形、动物、武器等各类角色;提供基础重定向、IK重定向和FPS专用重定向三种功能模块;通过Rig组件和骨架资产实现骨骼链匹配,支持批量处理。插件包含示例项目和预设资源,操作简便且效果优于Unity原生Humanoid系统,特别适合处理手指等精细动画。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 547

PCL 使用点云创建数字高程模型DEM【2025最新版】

使用点云创建数字高程模型DEM,并将结果保存为高程图像。博客长期更新,本文最近更新时间为:2025年9月15日。

点云侠的博客 2294

你所不知道的,架构师一定要看微服务设计的四个原则

微服务的设计原则 AKF原则   业界对于可扩展的系统架构设计有一个朴素的理念,就是:通过加机器就可以解决容量和可用性问题。(如果一台不行那就两台)。(世界上没有什么事是一顿烧烤不能解决的。如果有,那就两顿。)   这一理念在“云计算”概念疯狂流行的今天,得到了广泛的认可!于一个规模迅速增长的系统而言,容量和性能问题当然是首当其冲的。但是随着时间的向前,系统规模的增长,除了面对性能与容量的问题外,还需要面对功能与模块数量上的增长带来的系统复杂性问题以及业务的变化带来的提供差异化服务问题。而许多系统,在

duan18888的博客 210

【Bug已解决】npm install -g @anthropic-ai/claude-code 出现 EACCES: permission denied 解决方案

方案适用场景推荐指数nvm 管理 Node长期开发环境,一次配置永久生效⭐⭐⭐⭐⭐修改 npm 全局目录不想引入 nvm,快速解决⭐⭐⭐⭐修复现有目录权限之前用过 sudo 装包,需要修复⭐⭐⭐Windows 管理员/改目录Windows 平台专用⭐⭐⭐⭐官方原生安装脚本想彻底避开 npm 权限问题⭐⭐⭐⭐报的本质是npm 全局安装目录的属主权限与当前执行用户不匹配,而不是 npm 或 Claude Code 本身有问题。不要用sudo"强行"解决。

一键难忘的博客 1万+

2024年架构师一定要看微服务设计的四个原则,java工作流面试题

正逢面试跳槽季,给大家整理了大厂问到的一些面试真题,由于文章长度限制,只给大家展示了部分题目,更多Java基础、异常、集合、并发编程、JVM、Spring全家桶、MyBatis、Redis、数据库、中间件MQ、Dubbo、Linux、Tomcat、ZooKeeper、Netty等等已整理上传,感兴趣的朋友可以看看支持一波!如上面我们说到的 Y 轴扩展的 SOA 架构,客户端对服务端节点的选择一般是随机的,但是,如果在此加上 Z 轴扩展,那服务节点的选择将不再是随机的了,而是每个单元自成一体。

2401_84002730的博客 323

华为非AI方向0603笔试真题-爆破小游戏(详细思路+多语言题解)

华为非AI方向0603笔试第二题【爆破小游戏】,提供详细思路讲解以及代码实现。

qq_45776114的博客 358

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

2024年最新架构师一定要看,微服务设计的四个原则,2024年最新c++高频面试题

面试题千万不要死记,一定要自己理解,用自己的方式表达出来,在这里预祝各位成功拿下自己心仪的offer。开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】Z 轴(数据分区) —— 关注服务和数据的优先级划分,如按地域划分Y 轴(功能)Y 轴扩展会将庞大的整体应用拆分为多个服务。每个服务实现一组相关的功能,如订单管理、客户管理等。在工程上常见的方案是 服务化架构(SOA)。

2401_84617533的博客 461

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

架构师揭秘微服务设计原则

大家好,我是沛哥儿。作为一名技术领域尤其是架构方向的老湿机,今天想和大家好好聊一聊微服务架构。在当下的软件开发领域,微服务架构堪称是一股不可忽视的潮流,已经成为众多企业构建大型复杂系统的首选方案。那么,微服务架构究竟有着怎样的设计原则和实现方法呢?接下来就为大家详细解读。在正式探讨设计原则和实现方法之前,我们有必要先明确微服务架构的概念。简单来说,微服务架构是一种将单个应用程序作为一组小型服务开发的方法,每个服务都运行在自己的进程中,并通过轻量级的机制(通常是 HTTP API)进行通信。

沛哥儿的专栏 1402

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

如何用 claude-skills Microservices Architect 设计微服务架构:从拆分到落地的完整指南

**claude-skills** 是面向全栈开发者的 Claude Code 技能库,其中内置的 **Microservices Architect(微服务架构师)** 技能,能帮你把庞大的单体应用拆分成边界清晰、通信合理、具备弹性的微服务架构。它内置了领域驱动设计(DDD)、Saga 模式、熔断器、事件溯源、CQRS 等分布式系统最佳实践,相当于给 AI 装上了一位资深架构师的大脑。 [![

gitblog_00947的博客 1048

优秀架构师必须了解的6大方面30条设计原则

架构的话题,之前就讲过许多,比如: 对呀,我就是认定架构师都是不干活,只会画PPT的! 好文 | 架构师更多的是和人打交道,说说我见到和听说到的架构师升级步骤和平时的工作内容 架构师成长之路之限流漫谈 支付宝架构师眼中的高并发架构 老板让你抗住千万级流量,如何做架构设计? 今日头条 Go 建千亿级微服务的实践 阿里云技术专家分享:现代 IM 系统中消息推送和存储架构的实现 程序员必备技能——如何画...

qf2019的博客 1187
上一篇: 为什么 Spring Boot 2.3.0 放弃Maven最终拥抱Gradle
下一篇: Java开发,内存泄漏不会排查,这下溴大了
Javaesandyou
博客等级 码龄5年 742粉丝 563原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值