读书笔记--分布式服务架构对比及优势
本篇是在上一篇的基础上,主要对共享服务平台建设所依赖的分布式服务架构进行学习,主要记录和思考如下,供大家学习参考。随着企业各业务数字化转型工作的推进,之前在传统的单一系统(或单体应用)模式中,每个系统都要做这些公共的功能或模块,比如用户管理,权限认证,日志,邮件,财务等等,随着企业各大应用系统的不断扩展,各垂直业务板块逐步沉淀形成各自的核心业务的数字化能力,提出了基于SOA理念的分布式服务架构,SOA理念主要特性有面向服务的分布式计算、服务间松散耦合、支持服务的组装、服务注册、自动发现、以服务契约方式定义服务交互方式等,本文介绍的ESB、HSF及微服务都是基于SOA理念,只是处于不同的发展阶段和不同的应用场合,目前比较流行的是部署到Docker中的微服务架构,实现一台机器计算、存储资源充分利用的同时,实现服务的解耦,提升应用的可扩展性、高效稳定性和应对变化的快速响应性等。以下重点总结了分布式架构有哪些?分布式架构带来哪些好处或优势,以及最新的去中心化微服务架构是什么,有哪些显著特征等。
一、分布式服务架构有哪些?
1.中心化服务架构:最有代表性的是传统厂商提出的ESB模式,相对于单一系统的“点对点”对接模式来说,ESB降低了系统之间的耦合性,让服务的提供者和调用者都可以通过企业服务总线(即ESB)实现服务的提供和接口的订阅及调用,为系统提供高效、稳定的集成,同时在负载均衡、服务管控方面提供了专业化能力。但这种服务架构带来一个致命缺点就是每次服务调用至少需要4次网络会话创建和数据传输(服务调用者--ESB--服务提供者--ESB--服务调用者)。如下图。
2.去中心化服务架构:最有代表性的是阿里的HSF(High Speed Framwork,戏称好舒服),他除了具备上述ESB的所有特性之外,最重要的一点就是服务提供者和调用者之间进行服务交互时不需要任何路由中介,避免了中心点带来平台能力难扩展问题,以及潜在的雪崩影响,但对不同技术接口的支持、数据格式转换、服务动态路由等功能需要服务应用本身来考虑并编写,主要以服务契约的方式保障服务接口和稳定性,大大降低了服务发生变化给服务调用者带来的影响。这种服务架构只需要2次网络会话创建和数据传输(服务调用者和服务提供者之间),同时这种架构还具备服务的线性扩展支持和容错机制支持等。如下图。
二、分布式服务架构设计带来哪些优势?
1.降低不同模块开发团队的协同成本,业务响应更加迅速:不同功能模块间进行了清晰、稳定的服务契约定义,并由不同的转正开发团队负责完成并支持迭代。
2.大大降低系统间的耦合度及整体复杂度,各个开发团队可专注于各自的业务模块:应用或服务拆分后,由不同团队负责各自领域内的最专业的业务服务,能够提供更专业和更稳定的服务,同时对于新员工尽快理解自己负责的业务,尽快投入的生产业务中,便于接续传承。
3.避免了个别模块的错误给整体带来的影响:各个服务中心独立部署,避免了个别业务的错误导致整体业务的无法开展。
4.业务拆分后解放了对单数据库集群连接数的能力依赖:拆分形成的各个服务中心,后端都有自己独立的数据库集群,原来存储的数据库连接数限制得到了较好的解决。
5.做到针对性的业务能力扩容,减少不必要的资源浪费:从之前单一的WAR包到几十个上百个WAR包的独立部署,拆分后可以精准的根据业务需要进行能力扩容,资源得到充分利用。
三、最新的去中心化服务架构--微服务架构的典型特征
应该说微服务架构也是基于SOA理念提出的,只是微服务更加聚焦、粒度更小、更专业。微服务可以说是SOA理念落地的最佳实践。同时,微服务的服务设计要从业务维度进行划分,要考虑业务的前瞻性,并考虑服务能力的通用性和扩展能力等。另外,要向让微服务真正落地并持续生效发展,原有的组织机构,特别是企业信息中心等组织架构需要进行相应的调整优化,要围绕以服务为中心的持续运营、更新演变进行调整完善。
微服务具有以下典型特征
1.分布式服务组成的系统
2.按照业务而不是技术来划分组织
3.做有生命定的产品而不是项目
4.智能化服务端点与傻瓜式服务编排
5.自动化运维
6.系统容错
7.服务快速演化
可以说,企业的微服务建设是一个持续的过程工程,不仅仅是一个技术改变,更是一个业务不断演进的结果。微服务不是通过一个项目建设形成的,而是需要在业务发展过程中不断沉淀服务能力,而且只有沉淀到一定阶段,企业才能真正感受到微服务架构带来的长远价值,从而让企业飞得更高、飞得更远。
相关文章:

读书笔记--分布式服务架构对比及优势
本篇是在上一篇的基础上,主要对共享服务平台建设所依赖的分布式服务架构进行学习,主要记录和思考如下,供大家学习参考。随着企业各业务数字化转型工作的推进,之前在传统的单一系统(或单体应用)模式中&#…...

HTML5 新的 Input 类型详解
HTML5 引入了许多新的输入类型,极大地增强了表单的功能和用户体验。这些新的输入类型不仅提供了更好的输入控制,还支持内置的验证功能,减少了开发者手动编写验证逻辑的工作量。本文将全面介绍 HTML5 中新增的输入类型,并结合代码示…...

ESP32-CAM实验集(WebServer)
WebServer 效果图 已连接 web端 platformio.ini ; PlatformIO Project Configuration File ; ; Build options: build flags, source filter ; Upload options: custom upload port, speed and extra flags ; Library options: dependencies, extra library stor…...

Case逢无意难休——深度解析JAVA中case穿透问题
Case逢无意难休——深度解析JAVA中case穿透问题~ 不作溢美之词,不作浮夸文章,此文与功名进取毫不相关也!与大家共勉!! 更多文章:个人主页 系列文章:JAVA专栏 欢迎各位大佬来访哦~互三必回&#…...

Golang笔记——常用库context和runtime
大家好,这里是Good Note,关注 公主号:Goodnote,专栏文章私信限时Free。本文详细介绍Golang的常用库context和runtime,包括库的基本概念和基本函数的使用等。 文章目录 contextcontext 包的基本概念主要类型和函数1. **…...

2000-2020年各省第二产业增加值占GDP比重数据
2000-2020年各省第二产业增加值占GDP比重数据 1、时间:2000-2020年 2、来源:国家统计局、统计年鉴 3、指标:行政区划代码、地区名称、年份、第二产业增加值占GDP比重 4、范围:31省 5、指标解释:第二产业增加值占GDP比重…...

unity商店插件A* Pathfinding Project如何判断一个点是否在导航网格上?
需要使用NavGraph.IsPointOnNavmesh(Vector3 point) 如果点位于导航网的可步行部分,则为真。 如果一个点在可步行导航网表面之上或之下,在任何距离,如果它不在更近的不可步行节点之上 / 之下,则认为它在导航网上。 使用方法 Ast…...

Day24-【13003】短文,数据结构与算法开篇,什么是数据元素?数据结构有哪些类型?什么是抽象类型?
文章目录 13003数据结构与算法全书框架考试题型的分值分布如何? 本次内容概述绪论第一节概览什么是数据、数据元素,数据项,数据项的值?什么是数据结构?分哪两种集合形式(逻辑和存储)?…...

富文本 tinyMCE Vue2 组件使用简易教程
参考官方教程 TinyMCE Vue.js integration technical reference Vue2 项目需要使用 tinyMCE Vue2 组件(tinymce/tinymce-vue)的第 3 版 安装组件 npm install --save "tinymce/tinymce-vue^3" 编写组件调用 <template><Editorref"editor"v-m…...

强化学习在自动驾驶中的实现与挑战
强化学习在自动驾驶中的实现与挑战 自动驾驶技术作为当今人工智能领域的前沿之一,正通过各种方式改变我们的出行方式。而强化学习(Reinforcement Learning, RL),作为机器学习的一大分支,在自动驾驶的实现中扮演了至关重要的角色。它通过模仿人类驾驶员的决策过程,为车辆…...

记录 | MaxKB创建本地AI智能问答系统
目录 前言一、重建MaxKBStep1 复制路径Step2 删除MaxKBStep3 创建数据存储文件夹Step4 重建 二、创建知识库Step1 新建知识库Step2 下载测试所用的txtStep3 上传本地文档Step4 选择模型补充智谱的API Key如何获取 Step5 查看是否成功 三、创建应用Step1 新建应用Step2 配置AI助…...

特种作业操作之低压电工考试真题
1.下面( )属于顺磁性材料。 A. 铜 B. 水 C. 空气 答案:C 2.事故照明一般采用( )。 A. 日光灯 B. 白炽灯 C. 压汞灯 答案:B 3.人体同时接触带电设备或线路中的两相导体时,电流从一相通过人体流…...

[免费]基于Python的Django博客系统【论文+源码+SQL脚本】
大家好,我是java1234_小锋老师,看到一个不错的基于Python的Django博客系统,分享下哈。 项目视频演示 【免费】基于Python的Django博客系统 Python毕业设计_哔哩哔哩_bilibili 项目介绍 随着互联网技术的飞速发展,信息的传播与…...

Cannot resolve symbol ‘XXX‘ Maven 依赖问题的解决过程
一、问题描述 在使用 Maven 管理项目依赖时,遇到了一个棘手的问题。具体表现为:在 pom.xml 文件中导入了所需的依赖,并且在 IDE 中导入语句没有显示为红色(表示 IDE 没有提示依赖缺失),但是在实际使用这些依…...

我们需要有哪些知识体系,知识体系里面要有什么哪些内容?
01、管理知识体系的学习知识体系 主要内容: 1、知识管理框架的外部借鉴、和自身知识体系的搭建; 2、学习能力、思维逻辑能力等的塑造; 3、知识管理工具的使用; 4、学习资料的导入和查找资料的渠道; 5、深层关键的…...

什么是vue.js组件开发,我们需要做哪些准备工作?
Vue.js 是一个非常流行的前端框架,用于构建用户界面。组件开发是 Vue.js 的核心概念之一,通过将界面拆分为独立的组件,可以提高代码的可维护性和复用性。以下是一个详细的 Vue.js 组件开发指南,包括基础概念、开发流程和代码示例。 一、Vue.js 组件开发基础 1. 组件的基本…...

网络工程师 (3)指令系统基础
一、寻址方式 (一)指令寻址 顺序寻址:通过程序计数器(PC)加1,自动形成下一条指令的地址。这是计算机中最基本、最常用的寻址方式。 跳跃寻址:通过转移类指令直接或间接给出下一条指令的地址。跳…...

第4章 神经网络【1】——损失函数
4.1.从数据中学习 实际的神经网络中,参数的数量成千上万,因此,需要由数据自动决定权重参数的值。 4.1.1.数据驱动 数据是机器学习的核心。 我们的目标是要提取出特征量,特征量指的是从输入数据/图像中提取出的本质的数 …...

【Python】第五弹---深入理解函数:从基础到进阶的全面解析
✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】【MySQL】【Python】 目录 1、函数 1.1、函数是什么 1.2、语法格式 1.3、函数参数 1.4、函数返回值 1.5、变量作用域 1.6、函数…...

【MQ】如何保证消息队列的高性能?
零拷贝 Kafka 使用到了 mmap 和 sendfile 的方式来实现零拷贝。分别对应 Java 的 MappedByteBuffer 和 FileChannel.transferTo 顺序写磁盘 Kafka 采用顺序写文件的方式来提高磁盘写入性能。顺序写文件,基本减少了磁盘寻道和旋转的次数完成一次磁盘 IO࿰…...

RAG是否被取代(缓存增强生成-CAG)吗?
引言: 本文深入研究一种名为缓存增强生成(CAG)的新技术如何工作并减少/消除检索增强生成(RAG)弱点和瓶颈。 LLMs 可以根据输入给他的信息给出对应的输出,但是这样的工作方式很快就不能满足应用的需要: 因…...

用C++编写一个2048的小游戏
以下是一个简单的2048游戏的实现。这个实现使用了控制台输入和输出,适合在终端或命令行环境中运行。 2048游戏的实现 1.游戏逻辑 2048游戏的核心逻辑包括: • 初始化一个4x4的网格。 • 随机生成2或4。 • 处理玩家的移动操作(上、下、左、…...

为何SAP S4系统中要设置MRP区域?MD04中可否同时显示工厂级、库存地点级的数据?
【SAP系统PP模块研究】 一、物料主数据的MRP区域设置 SAP ECC系统中想要指定不影响MRP运算的库存地点,是针对库存地点设置MRP标识,路径为:SPRO->生产->物料需求计划->计划->定义每一个工厂的存储地点MRP,如下图所示: 另外,在给物料主数据MMSC扩充库存地点时…...

Windows10官方系统下载与安装保姆级教程【U盘-官方ISO直装】
Windows 10 官方系统安装/重装 制作启动盘的U盘微软官网下载Win10安装包创建启动盘U盘 安装Win10 本文采用U盘安装Windows10官方系统。 制作启动盘的U盘 微软官网下载Win10安装包 微软官网下载Win10安装包链接:https://www.microsoft.com/zh-cn/software-downloa…...

第05章 07 切片图等值线代码一则
绘制脑部切面图的阈值等值线是一个常见的任务,通常涉及使用VTK(Visualization Toolkit)库来处理医学图像数据。以下是一个基于VTK/C的示例代码,展示如何读取脑部DICOM图像数据,应用阈值过滤器来提取特定组织的等值线&a…...

【深度学习】线性回归的简洁实现
线性回归的简洁实现 在过去的几年里,出于对深度学习强烈的兴趣,许多公司、学者和业余爱好者开发了各种成熟的开源框架。 这些框架可以自动化基于梯度的学习算法中重复性的工作。 目前,我们只会运用: (1)通…...

渗透测试技法之口令安全
一、口令安全威胁 口令泄露途径 代码与文件存储不当:在软件开发和系统维护过程中,开发者可能会将口令以明文形式存储在代码文件、配置文件或注释中。例如,在开源代码托管平台 GitHub 上,一些开发者由于疏忽,将包含数据…...

【R语言】数学运算
一、基础运算 R语言中能实现加、减、乘、除、求模、取整、取绝对值、指数、对数等运算。 x <- 2 y <- 10 # 求模 y %% x # 整除 y %/% x # 取绝对值 abs(-x) # 指数运算 y ^x y^1/x #对数运算 log(x) #log()函数默认情况下以 e 为底 双等号“”的作用等同于identical(…...

小游戏源码开发搭建技术栈和服务器配置流程
近些年各种场景小游戏开发搭建版本层出不穷,山东布谷科技拥有多年海内外小游戏源码开发经验,现为从事小游戏源码开发或游戏运营的朋友们详细介绍小游戏开发及服务器配置流程。 一、可以对接到app的小游戏是如何开发的 1、小游戏源码开发的需求分析: 明…...

深度学习|表示学习|卷积神经网络|输出维度公式|15
如是我闻: 在卷积和池化操作中,计算输出维度的公式是关键,它们分别可以帮助我们计算卷积操作和池化操作后的输出大小。下面分别总结公式,并结合解释它们的意义: 1. 卷积操作的输出维度公式 当我们对输入图像进行卷积时…...