分布式系统架构设计之分布式系统实践案例和未来展望
分布式系统在过去的几十年里经历了长足的发展,从最初的简单分布式架构到今天的微服务、云原生等先进架构,取得了丰硕的成果。本文将通过实际案例分享分布式系统的架构实践,并展望未来可能的发展方向。
一、实践案例
1、微服务化实践
背景
一位朋友创业,经营着一家游戏服务企业。在初期,他们的服务主要包括游戏用户注册管理、订单管理、支付服务等功能。整体公司内部运行着一个庞大的应用,为所有服务提供支持。
随着公司出海战略的执行,运营的游戏逐渐增多,开发人员也从最初的几个人扩展到了三十多人。每个游戏开始提出各种各样的定制需求,导致每次发布都涉及十几个分支,代码冲突、改动的连带影响、前端页面查询变慢等问题层出不穷。
实施
在朋友的请求下,经过两周的时间对他们服务的主要情况进行梳理,提出了微服务化改造的建议。由于服务线上需保持持续运行,整个优化流程必须逐步演进和重构。
在行动上,首先使用领域驱动设计(DDD)的业务分析思想对原应用进行了分析。确定了三个主要组件:用户管理服务、订单管理服务、支付管理服务。其他功能先保留在原应用中不动。除了这三块,还设计了一个统一的网关层,承担流量网关和业务网关的职责。
结果
经过两个月的实践,初步实现了这三个主要核心功能服务的自治。团队内部分拆出了三个维护小团队,提高了系统的可维护性和可扩展性。在这种模式下,不同团队可以独立进行开发、测试和部署各自的服务,显著提升了技术团队的开发和部署效率。
改造前后的架构对比示意图如下:
通过微服务化改造,成功实现了系统的模块化和团队自治,有效解决了原先存在的发布问题和开发效率低下的困扰。这套新架构为朋友公司的持续发展和新服务的迭代提供了更加稳健和灵活的基础。
2、云原生化实践
背景
在朋友的公司,进行微服务拆分的同时,也进行了云原生化的改造升级。早期采用传统的部署方式,使用自购服务器,手动打包和部署上线。随着出海战略的推进,这种方式导致了性能问题、应用打包维护等多方面的困扰,难以满足业务快速扩展的需求。
实施
在进行微服务改造的同时,公司采用了应用容器化技术,并使用容器编排工具进行自动化管理。由于公司拥有充足的财力,他们选择了阿里云的 EDAS 管理平台,将拆分后的新应用全部部署到阿里云,实现了初步的云原生化。
结果
将新服务上云后,基于EDAS平台提供的强大功能,系统的弹性和可伸缩性得到了显著提升。系统能够根据业务负载自动扩展和缩减节点(具体场景是根据不同游戏的用户使用情况),同时减少了运维成本,提高了系统的稳定性。
通过云原生化的改造,公司成功应对了业务扩展所带来的挑战,实现了更高效、更稳定的服务运行。这个案例充分展示了云原生技术在提升系统弹性和降低运维成本方面的优势。
二、未来展望
分布式系统作为当今大规模应用的基础,已经在云计算、大数据、人工智能等领域展现了强大的生命力和潜力。结合了网络资料提供的内容,做了关于分布式系统未来展望的部分,大致分为以下几个方面:
1、异构计算的整合
未来的分布式系统将更广泛地面对异构计算环境,包括量子计算、边缘计算等。系统架构设计需要更好地整合这些异构计算资源,以满足不同应用常见的需求。
量子计算
随着量子计算技术的发展,分布式系统面临更大的计算能力挑战,未来的系统需要考虑如何充分利用量子计算的优势,同时解决与传统计算环境的整合问题。
边缘计算
随着物联网的普及,边缘计算成为未来分布式系统的重要组成部分。系统需要更智能地管理分布在边缘设备上的计算和存储资源,以提供低延迟、高可用的服务。
2、无服务器架构的普及
虽然在前面的章节,我对 Serverless 架构持保守态度,但是不得不说这已经是一个新的趋势,而且确实有一定场景的便利性存在。它可以让开发者更专注于业务逻辑,无需关注底层基础设施。未来的分布式系统可能更广泛地采用无服务器架构,以实现更高的开发效率和资源利用率。
事件驱动架构
Serverless 在大型企业级应用里面的一个应用场景就是采用事件驱动的方式,未来分布式系统可能更加强调事件驱动的架构设计。这有助于实现系统的解耦和弹性扩展。
资源自动伸缩
未来的 Serverless 分布式系统将更加只能,能够根据实际负载情况自动伸缩资源,提高系统的弹性和稳定性。
3、数据驱动的架构演进
未来分布式系统更加注重数据的价值,以数据驱动的方式进行架构演进。通过只能分析和挖掘大规模数据,系统可以更好地适应业务变化和优化性能。很有幸,我现在的公司就是在数据驱动下不停地驱使我对架构进行演进,而且还是结合着 AI 的技术,并行驱动架构的演进升级。
实施数据处理
实时数据处理将成为未来系统设计的重要方向,以满足实时业务需求。流式计算和复杂事件处理技术将在分布式系统中得到更广泛地应用。
人工智能和自动化
未来分布式系统可能引入更多人工只能和自动化技术,通过智能决策和自愈能力提高系统的自管理和自适应性。
4、安全和隐私的强化
随着分布式系统在各个行业中的应用越来越广泛,安全与隐私问题将变得尤为重要。未来的系统需要更强大的安全机制和隐私保护策略。
加密和隐私计算
加强数据的加密保护,采用隐私计算技术,以确保用户数据在传输和存储过程中的安全性和隐私性。
区块链技术
区块链技术可能在分布式系统中得到更广泛的应用,以实现去中心化的身份验证和数据完整性验证。
未来的分布式系统将在异构计算、无服务器架构、数据驱动的架构演进以及安全和隐私的方面迎来更多的挑战和机遇。架构师需要保持敏锐的洞察力,不断吸收新技术,以应对不断变化的应用需求。
相关文章:
分布式系统架构设计之分布式系统实践案例和未来展望
分布式系统在过去的几十年里经历了长足的发展,从最初的简单分布式架构到今天的微服务、云原生等先进架构,取得了丰硕的成果。本文将通过实际案例分享分布式系统的架构实践,并展望未来可能的发展方向。 一、实践案例 1、微服务化实践 背景 …...
【办公软件】Excel双坐标轴图表
在工作中整理测试数据,往往需要一个图表展示两个差异较大的指标。比如共有三个数据,其中两个是要进行对比的温度值,另一个指标是两个温度的差值,这个差值可能很小。 举个实际的例子:数据如下所示,NTC检测温…...
彻底理解前端安全面试题(1)—— XSS 攻击,3种XSS攻击详解,建议收藏(含源码)
前言 前端关于网络安全看似高深莫测,其实来来回回就那么点东西,我总结一下就是 3 1 4,3个用字母描述的【分别是 XSS、CSRF、CORS】 一个中间人攻击。当然 CORS 同源策略是为了防止攻击的安全策略,其他的都是网络攻击。除了这…...
UE5.1_AI随机漫游
UE5.1_AI随机漫游 目录 UE5.1_AI随机漫游 AI随机漫游方法 方法1:AI角色蓝图直接写方法...
智慧城市新型基础设施建设综合方案:文件全文52页,附下载
关键词:智慧城市建设方案,智慧城市发展的前景和趋势,智慧城市项目方案,智慧城市管理平台,数字化城市,城市数字化转型 一、智慧城市新基建建设背景 1、城市化进程加速:随着城市化进程的加速&am…...
GitHub Copilot 终极详细介绍
编写代码通常是一项乏味且耗时的任务。现代开发人员一直在寻找新的方法来提高编程的生产力、准确性和效率。 像 GitHub Copilot 这样的自动代码生成工具可以使这成为可能。 GitHub Copilot 到底是什么? GitHub Copilot 于 2021 年 10 月推出,是 GitHub 的…...
LeetCode第63题 - 不同路径 II
题目 解答 class Solution {public int uniquePathsWithObstacles(int[][] obstacleGrid) {int m obstacleGrid.length;int n obstacleGrid[0].length;if (obstacleGrid[0][0] 1) {return 0;}if (obstacleGrid[m - 1][n - 1] 1) {return 0;}int[][] dp new int[m][n];dp…...
python+django网上银行业务综合管理系统vue_bvj8b
本课题主要研究如何用信息化技术改善传统网上银行综合管理行业的经营和管理模式,简化网上银行综合管理的难度,根据管理实际业务需求,调研、分析和编写系统需求文档,设计编写符合银行需要的系统说明书,绘制数据库结构模…...
【软件工程】走进瀑布模型:传统软件开发的经典之路
🍎个人博客:个人主页 🏆个人专栏: 软件工程 ⛳️ 功不唐捐,玉汝于成 目录 前言: 正文 主要阶段: 优点: 缺点: 应用范围: 结语 我的其他博客 前言&am…...
两个字符串间的最短路径问题 (100%用例)C卷 (JavaPythonNode.jsC语言C++)
给定两个字符串,分别为字符串A与字符串B。例如A字符串为ABCABBA,B字符串为CBABAC可以得到下图m*n的二维数组,定义原点为(0,0),终点为(m,n),水平与垂直的每一条边距离为1,映射成坐标系如下图 从原点(0,0)到(0,A)为水平边,距离为1,从(0,A)到(A,C)为垂直边,距离为1;假设两…...
通过ADB来实现脚本来控制手机
ADB 简介 adb的全称为Android Debug Bridge,安卓调试桥,可以通过调试命令来控制手机,诸如开机,关机等按键控制;或者启动,关闭应用;异或进行触摸模拟. 通过学习adb,可以实现简单的脚本控制,最大的特点是不需要root,对于普通手机都可以进行,帮助我们完成一些简单的重复性事件,…...
机器学习之K-means聚类
概念 K-means是一种常用的机器学习算法,用于聚类分析。聚类是一种无监督学习方法,它试图将数据集中的样本划分为具有相似特征的组(簇)。K-means算法的目标是将数据集划分为K个簇,其中每个样本属于与其最近的簇中心。 以下是K-means算法的基本步骤: 选择簇的数量(K值)…...
SSH 端口转发:如何将服务绑定到本地 IP 地址
在日常工作中,我们经常需要访问位于远程服务器上的服务,如数据库、Web 应用程序或其他类型的服务器。直接访问这些服务可能会因为安全限制或网络配置而变得复杂或不可能。这时,SSH 端口转发就成了我们的得力助手。在本篇博客中,我…...
回归预测 | MATLAB实ZOA-LSTM基于斑马优化算法优化长短期记忆神经网络的多输入单输出数据回归预测模型 (多指标,多图)
回归预测 | MATLAB实ZOA-LSTM基于斑马优化算法优化长短期记忆神经网络的多输入单输出数据回归预测模型 (多指标,多图) 目录 回归预测 | MATLAB实ZOA-LSTM基于斑马优化算法优化长短期记忆神经网络的多输入单输出数据回归预测模型 (…...
python实现图像的二维傅里叶变换——冈萨雷斯数字图像处理
原理 二维傅里叶变换是一种在图像处理中常用的数学工具,它将图像从空间域(我们通常看到的像素排列)转换到频率域。这种变换揭示了图像的频率成分,有助于进行各种图像分析和处理,如滤波、图像增强、边缘检测等。 在数学…...
We are a team - 华为OD统一考试
OD统一考试 题解: Java / Python / C 题目描述 总共有 n 个人在机房,每个人有一个标号 (1<标号<n) ,他们分成了多个团队,需要你根据收到的 m 条消息判定指定的两个人是否在一个团队中,具体的: 消息构成为 a b …...
NFC物联网智慧校园解决方案
近场通信(Near Field Communication,NFC)又称近距离无线通信,是一种短距离的高频无线通信技术,允许电子设备之间进行非接触式点对点数据传输交换数据。这个技术由免接触式射频识别(RFID)发展而来,并兼容 RFID,主要用于…...
鸿蒙系列--组件介绍之容器组件
一、Badge 描述:给其他组件添加标记 子组件:支持单个子组件 1.创建数字标记 Badge(value: {count: number, position?: BadgePosition, maxCount?: number, style: BadgeStyle}) 2.创建字符串标记 Badge(value: {value: string, position?: Badge…...
perl使用find函数踩坑
前言 写了一个脚本可以同时检查多个仿真log文件,并生成html表格。按照文件修改时间从新到旧排序。但是一直无法使用stat函数获取修改时间。 结论:find函数会改变程序执行的当前目录,find(\&process_files, $dir);函数是在$dir目录下运行…...
Java IDEA JUnit 单元测试
JUnit是一个开源的 Java 单元测试框架,它使得组织和运行测试代码变得非常简单,利用JUnit可以轻松地编写和执行单元测试,并且可以清楚地看到哪些测试成功,哪些失败 JUnit 还提供了生成测试报告的功能,报告不仅包含测试…...
深入理解 c++ 函数模板
函数模板是C中的一种强大特性,它允许程序员编写一个可以处理多种数据类型的函数。通过使用模板,我们可以编写一次函数,然后在多种数据类型上使用它,这大大提高了代码的复用性。 1. 基本概念 函数模板是一种参数化类型的工具&…...
系列十二、Linux中安装Zookeeper
一、Linux中安装Zookeeper 1.1、下载安装包 官网:Index of /dist/zookeeper/zookeeper-3.4.11 我分享的链接: 链接:https://pan.baidu.com/s/14Hugqxcgp89f2hqGWDwoBw?pwdyyds 提取码:yyds 1.2、上传至/opt目录 1.3、解…...
k8s之陈述式资源管理
1.kubectl命令 kubectl version 查看k8s的版本 kubectl api-resources 查看所有api的资源对象的名称 kubectl cluster-info 查看k8s的集群信息 kubectl get cs 查看master节点的状态 kubectl get pod 查看默认命名空间内的pod的信息 kubectl get ns 查看当前集群所有的命…...
7天玩转 Golang 标准库之 http/net
在构建web应用时,我们经常需要处理HTTP请求、做网页抓取或者搭建web服务器等任务,而Go语言在这方面为我们提供了强大的内置工具:net/http标准库,它为我们操作和处理HTTP协议提供了便利。 基础用法 一:处理HTTP请求 首…...
钡铼技术集IO数据采集可编程逻辑控制PLC无线4G环保物联网关
背景 数据采集传输对于环保企业进行分析和决策是十分重要的,而实时数据采集更能提升环保生产的执行力度,从而采取到更加及时高效的措施。因此实时数据采集RTU成为环保企业的必备产品之一。 产品介绍 在推进环保行业物联网升级过程中,环保RTU在…...
STM32CubeMX教程10 RTC 实时时钟 - 周期唤醒、闹钟A/B事件和备份寄存器
目录 1、准备材料 2、实验目标 3、实验流程 3.0、前提知识 3.1、CubeMX相关配置 3.1.1 、时钟树配置 3.1.2、外设参数配置 3.1.3 、外设中断配置 3.2、生成代码 3.2.1、外设初始化函数调用流程 3.2.2、外设中断函数调用流程 3.2.3、添加其他必要代码 4、常用函数 …...
HarmonyOS4.0系统性深入开发08服务卡片架构
服务卡片概述 服务卡片(以下简称“卡片”)是一种界面展示形式,可以将应用的重要信息或操作前置到卡片,以达到服务直达、减少体验层级的目的。卡片常用于嵌入到其他应用(当前卡片使用方只支持系统应用,如桌…...
002文章解读与程序——中国电机工程学报EI\CSCD\北大核心《计及源荷不确定性的综合能源生产单元运行调度与容量配置两阶段随机优化》已提供下载资源
👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆下载资源链接Ǵ…...
Typora快捷键设置详细教程
文章目录 一、快捷键设置步骤二、设置快捷键简单案例参考资料 一、快捷键设置步骤 在typora软件中,快捷键的设置步骤主要为: 打开【文件】–>【偏好设置】,找到【通用】–>【打开高级设置】,找到 conf.user.json 文件。 然…...
《异常检测——从经典算法到深度学习》25 基于深度隔离林的异常检测算法
《异常检测——从经典算法到深度学习》 0 概论1 基于隔离森林的异常检测算法 2 基于LOF的异常检测算法3 基于One-Class SVM的异常检测算法4 基于高斯概率密度异常检测算法5 Opprentice——异常检测经典算法最终篇6 基于重构概率的 VAE 异常检测7 基于条件VAE异常检测8 Donut: …...
有什么网站可以做团购/前端seo是什么
第一步: 我们写个简单的单线程程序,也就是只有程序自己创建的那个主线程,没有使用多线程. 创建一个新工程,向窗口添加一个label命名为label1;我们要让程序运行时label1就显示一个数字,假设为100;通常我们会直接在窗口加载事件中写label1.Text "100";这样…...
桃城网站建设价格/百度推广一个点击多少钱
通过前面的学习我们已经能够通过遍历所有已知的函数及其指令来达到一种基本的搜索效果,这当然很有用,不过有时候我们需要搜索一些特定的字节,比如0x48 0xff 0xc2,这3个字节代表的汇编代码为inc rdx 我们可以选中该指令后右键-》synchronized with->hex view 1,可以看到…...
互联网网站开发服务合同/网上兼职外宣推广怎么做
BZOJ放这种丝帛我也是醉了... 不过来填一下求最小循环节的坑... 以这道题为例,相同文本串粘起来的串中取一小节,可以把任意一个字符看做文本串头. 那么我们一次KMP求出next函数然后显见,最后一个字符它会与上一个循环串的尾匹配,所以减一减就好啦... /* # Last modified: 2016-…...
游戏币销售网站建设/互联网精准营销
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼程序:ORG 0000HLJMP MAINORG 000BHLJMP TIMEORG 1000HHOUR1 EQU 10hHOUR2 EQU 12hMIN1 EQU 14hMIN2 EQU 16hSEC1 EQU 18HCOUNT EQU 20HNUM1 EQU 22HNUM2 EQU 24HLL4 EQU 26Hs1 bit P1.0s2 bit P1.1s3 bit P1.2s4 bit P1.3A1 EQU 36…...
wordpress pcdotfan/百度平台推广
说明:这里仅说明单台服务器的情况.Docker Container 分别映射到不同的端口. Docker Container里通过tomcat对外提供服务. 1.如图,如果反向代理服务器发来一个请求,请求到达Nginx后,假设是匹配到Service A的Upstream,这时会根据nginx.conf里对应的分发算法,分配到端口10100或10…...
中国建设银行官网电脑版/网站关键词排名优化方法
建议:当前安装方式仅限于开发、测试等研究使用. Docker 常用命令 Docker 安装系列 Docker mongo:5.0 安装 Docker portainer(Docker管理工具) Docker 安装Reids Docker 安装 Redis的完全体版本RedisMod Docker安装 a…...