(一)初步认识微服务

微服务(Microservices)[翻译] 微服务架构”一词在过去几年中如雨后春笋般涌现,用来描述将软件应用程序设计为可独立部署的服务套件的特定方式。虽然这种架构风格没有精确的定义,但围绕业务能力、自动化部署、端点智能以及语言和数据的分散控制,围绕组织存在某些共同特征。2014 年 3 月 25 日詹姆斯·刘易斯James Lewis 是 Thoughtworks 的首席顾问,也是技术咨询委员会的成员。James 对从小型协作服务构建应用程序的兴趣源于大规模集成企业系统的背景。他使用微服务构建了许多系统,并且多年来一直是不断发展的社区的积极参与者。 阅读详情

目录

微服务的特征

微服务诞生背景

单体架构和微服务架构

微服务的优势和不足


微服务的特征

▶单一职责:只把紧密相关的服务放在一起,无关的业务独立出去;

▶轻量级的通信:微服务与微服务之间的通信应该使用轻量级的通信,做到平台无关和语言无关;

▶隔离性:每个微服务运行在自己的进程中,不会相互干扰;

▶有自己的数据:业务数据的独立性,每个微服务都有自己的独立的数据存储系统,以降低数据结构的复杂度;

▶技术的多样性:可以由开发人员来选择最适合的技术来实现业务需求,只要能提供出应有的API。

 

微服务诞生背景

▶ 互联网行业的快速发展(需求变化快,用户数量变化快);

▶ 敏捷开发,精益方法深入人心(用最小的代价做最快的迭代,看到有用的反馈,即频繁的修改、测试、上线);

▶ 容器技术的成熟(Docker的出现,有效解决了由于微服务数量的庞大而导致的运微瓶颈 )

 

单体架构和微服务架构

说明:上例中只是为了理解和区别单体架构和微服务架构,对于微服务的划分不一定是准确的。

 

 

微服务的优势和不足

微服务的优势:

 ▶独立性:微服务从构建-部署-扩容-缩容-容错-数据库都是单独管理的,每个服务之间都是独立的,容错上当一个微服务出现问题时,它只会影响它自己,并且很容易快速的恢复,它并不会影响整个的服务,提高了整个服务的可用性;在数据上每个微服务有独立的数据库,避免了原来修改一个数据结构要小心翼翼,生怕影响了谁,但这些小心翼翼是徒劳的,因为有时候无法预计会影响到谁,现在把数据库独立出来,表的结构会相对简单,表的数量也会相对减少。

 ▶敏捷性: 对使用者来说,微服务暴露了接口会相对简单,功能单一,有清晰的API  ,对使用者理解起来会相对简单,同时也可以非常快速的应对变化,比如有一个新需求的时候,可以很容易的找到应该修改那个微服务。

 ▶技术栈灵活:每个微服务理论上都应该有自己独立的技术栈,不会受到其他微服务的影响,只需要保证自己的API接口不变就OK了,这样的架构非常容易接收新架构,服务重构也会变得非常简单。

 ▶高效团队:微服务的团队规模一般相对较小而灵活,每个团队只负责自己的微服务,若有调整只需要几个人开个小会即可。

微服务的不足:

 ▶额外的工作:最重要的一条就是服务的拆分,如何把服务拆分成一个个微服务,这是一个非常深的学问。

 ▶数据的一致性:单体架构只有一个数据库,可以使用事务来进行多表的级联修改或删除,很容易达到数据的一致性。而在微服务架构里,每个微服务有它们自己的数据库 ,即使我们在拆分微服务的时候,保证数据库的联表操作尽量在同一个微服务里,但是也很难保证没有依赖的情况,一旦出现,就会给我们的数据一致性带来挑战。

 ▶沟通成本:因为微服务API的改变而带来。 在单体架构中,想要修改一个接口,可以把调用这个接口的方法一并修改掉。但是在微服务中想要修改的地方已经不是你负责甚至不是你们组负责,这个时候你就要推动其他人或其他组的人来完成这次修改,如果这种修改比较多的情况下,其中的沟通成本是可想而知的。

第4章 微服务框架主体搭建 mini商城后端微服务框架搭建 阅读详情

相关推荐

OpenClaw本地部署教程

本文详细介绍了在Windows 11系统上部署OpenClaw与Ollama本地模型的完整流程。主要内容包括:硬件要求说明、Node.js环境配置、Ollama模型安装与定制(重点扩展上下文窗口至32768 tokens)、OpenClaw核心框架安装与对接、常见问题解决(如模型上下文窗口过小报错)以及可选技能扩展和飞书接入方案。部署全程约需1-2小时,强调使用备用设备或虚拟机以确保安全,并提供关键配置参数和排错命令。该方案实现了"数据不出门、推理本地化"的私有化部署目标。

技术引领业务创新 2580

基于redisson的Redis分布式缓存(一)

Redisson提供了将Redis无缝整合到Spring框架的能力。Redisson依照Spring Cache标准提供了基于Redis的Spring缓存实现。 每个缓存(Cache)实例都提供了了两个重要的可配置参数:过期时间(ttl)和最长空闲时间(maxIdleTime),如果这两个参数都未指定或值为0,那么实例管理的数据将永久保存。 Jar包  <!-- JDK 1.8+ co...

zl_momomo的博客 1万+

实战指南:如何用DCCRN模型提升语音增强效果(附代码示例)

本文提供了基于DCCRN模型进行语音增强的实战指南。通过深入解析复数网络如何协同处理语音的幅度与相位信息,并附有完整的PyTorch代码实现,帮助开发者从数据准备、模型搭建到训练调优,构建高效的实时语音增强系统,有效提升嘈杂环境下的语音清晰度。

weixin_29054245的博客 479

微信公众号开发环境搭建(一)

公网映射配置 需要将本地地址映射到公网,这里我们使用natapp   注意:本地端口必须是要填8080的(这个购买后也是可以再修改的),因为微信公众平台接口的调用仅支持80 客户端下载 1.配置config.ini文件 2.获取authtoken 3.双击运行natapp.exe,出现以下信息映射成功   微信公众平台接口测试 测试号管理 登录测试号管理,...

zl_momomo的博客 5583

Arduino for ESP32-----ESP-NOW介绍及使用

ESP-NOWESP-NOW介绍ESP-NOW支持以下特性ESP-NOW技术也存在以下局限性获取ESP32的MAC地址ESP-NOW单向通信(One-way communication)ESP32单板间的双向通信一对多通信(一发多收)一对多通信(多发一收) ESP-NOW介绍 ESP-NOW是一种由Espressif开发的协议,可以让多个设备在不使用Wi-Fi的情况下相互通信。该协议类似于低功耗的2.4GHz无线连接。设备之间的配对需要在通信之前完成。配对完成后,连接是安全的、点对点的,不需要握手。这意味着

Better_man1的博客 2万+

路径搜索算法——RRT*算法

RRT算法是RRT算法的优化版本,通过引入路径优化机制实现渐进最优性。该算法在高维空间和复杂环境中表现优异,主要步骤包括随机采样、树扩展和邻近节点重新连接。相比RRT,RRT能够不断优化路径质量,但计算复杂度更高。Python实现展示了其核心逻辑:随机采样扩展树节点,检查碰撞,选择最优父节点,并通过重新连接优化路径。算法适用于机器人导航等场景,但需平衡计算效率与路径质量。

swaggytiger的博客 3062

计算机网络面试必备(一)

  OSI七层协议     OSI全称为Open System InterConnection,即开放式系统互联,国际标准化组织ISO制定了OSI模型。该模型按照功能、分工的不同,人为地将网络通信的工作分成了7层。互联网的本质就是一系列网络协议。每一层都运行不同的协议,协议就是标准。实际上这个7层是不存在的,区分出这7层的目的就是让你明白哪一层是干嘛的!另外,还有人把它划成四层、五层,具体如下...

zl_StepByStep的博客 2011

ISO26262 功能安全各个阶段测试要求

1. 开发过程说明 系统层面:包括软硬件集成测试、系统集成测试以及整车测试。 硬件层面:包括硬件集成与测试。 软件层面:单元测试、集成测试。 2. 功能安全总体要求 2.1 各项指标 2.2 诊断覆盖度举例 针对一个信号举例说明: 3. 功能安全测试要求 3.1 测试计划 核心内容应包括, 测试对象:需要测试的对象描述,以及测试的范围描...

AgingMoon的博客 1万+

(一) SpringCloud+Security+Oauth2微服务授权初步认识

再前面的security专题中 我们学习了单体架构基于SpringSecurity实现的授权方案,这种在业务量较小及业务的复杂度较低时比较实用,随着业务的复杂度越来越高,微服务架构也越来越被更多的公司使用,本文就微服务中的主流授权方案及oauth2中基本概念做简要概述。CAS是一种基于Cookie实现的单点登录方案,页是一个比较老的解决方案,是 Yale 大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法,它分为 CAS Server端和CAS Client端,Server端负责用户

Instanceztt的博客 2442

AI系统架构原理与代码实战案例讲解

人工智能的概念可以追溯到上世纪50年代,图灵测试的提出标志着人工智能作为一门学科的诞生。早期的研究主要集中在符号推理、专家系统等领域,取得了一些突破,例如机器定理证明、西洋跳棋程序等。上世纪80年代,随着专家系统的兴起,人工智能进入了一个黄金时期。专家系统通过模拟人类专家的知识和经验进行推理和决策,在医疗诊断、故障诊断等领域取得了成功应用。进入90年代,由于计算能力的限制和数据量的不足,人工智能的发展陷入低谷。近年来,随着深度学习技术的突破、大数据的兴起以及计算能力的提升,人工智能迎来了第三次发展浪潮,在图

AI天才研究院 1794

YOLOv8 交通流量监测详解

本文介绍了一个基于YOLOv8的交通流量监测系统,该系统通过深度学习技术实现车辆实时检测、跟踪和分类。系统核心功能包括:1)使用YOLOv8模型检测道路车辆并进行持续跟踪;2)按方向和车型统计车流量;3)支持多区域流量监测和数据可视化。文章提供了完整的代码实现示例,涵盖基础车辆检测、视频流处理和高级数据分析功能。系统还可进一步优化性能,如使用轻量级模型、GPU加速等,并建议扩展车速估算、密度分析等功能。该方案为交通管理提供了有效的实时监测和决策支持工具。

u010117029的博客 346

【分布式微服务专题】从单体到分布式(一、SpringCloud项目初步升级)

从本节课开始,我将自己手写一个基于SpringCloud框架的web服务集群,中间会引入常用的微服务中间件。如:配置中心、网关、链路追踪、断路器等等。本节课只是简单地从原有单体项目,然后升级成SpringCloud架构。为了升级演示效果,我写了一个简单的SpringBoot单体应用,架构如下:然后实现的功能也很简单,直接list获取库里面所有的数据。会员管理模块:提供一个/user/list接口,获取数据库里面所有用户数据钱包管理模块:提供一个接口,获取数据库里面所有钱包数据。

qq_32681589的博客 2006

2026年华为od机试真题题库

OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)

面试高手的博客 19万+

微服务架构Spring Cloud 之 Spring Cloud介绍及demo项目初步搭建(一)

Spring Cloud介绍 spring cloud 是一系列框架的集合。它利用 spring boot 的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用 spring boot 的开发风格做到一键启动和部署。spring cloud 并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起...

XING_Gou的博客 589

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

微服务框架开发(一)—架构的初步需求

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34236497的博客 224

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

MQTT业务微服务重启后接收不到订阅(接收)消息

MQTT客户端(微服务) 和 客户端(人脸识别机) 正常的建立了连接,微服务可以订阅到人脸识别机的消息。zsccds-client,然后导致原本创建的客户端zsccds-client一直和人脸识别机客户端进行连接,占用中。这里就不知道为什么会生成这个clientId,我设置的clientId是zsccds-client!:使原来zsccds-client连接中的人脸识别机断掉,可能会使下发待消费的消息给清空掉。然后让微服务自动重连或者重启,之后微服务和人脸识别机又可以正常连接,正常下发和订阅。

qq_39625703的博客 1527

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

探索微服务架构的宝库:microservices-patterns 项目推荐

探索微服务架构的宝库:microservices-patterns 项目推荐 项目介绍 microservices-patterns 是一个开源项目,旨在为开发者提供一个全面的微服务架构实践指南。该项目不仅包含了 Chris Richardson 所著的《Microservices Patterns》一书的源代码,还整合了 Eventuate Tram 框架的个人学习笔记,为 Spring Boo...

gitblog_00093的博客 1892

PHP微服务新星:Jin-microservices全面解析与应用推荐

PHP微服务新星:Jin-microservices全面解析与应用推荐 随着微服务架构在软件开发界的兴起,PHP开发者也迎来了新的挑战与机遇。Jin-microservices正是在此背景下诞生,它是一个基于PHP语言和高性能的Hyperf微服务框架的实战级示例项目,旨在填补PHP微服务领域高质量示例的空白。今天,让我们深入探索这个项目,看看它是如何将PHP带入微服务的新纪元。 项目介绍 Jin-...

gitblog_01100的博客 994

微服务 MicroServices 学习笔记

微服务(MicroServices)架构是当前互联网业界的一个技术热点,圈里有不少同行朋友当前有计划在各自公司开展微服务化体系建设,他们都有相同的疑问:一个微服务架构有哪些技术关注点(technical concerns)?需要哪些基础框架或组件来支持微服务架构?这些框架或组件该如何选型?笔者之前在两家大型互联网公司参与和主导过大型服务化体系和框架建设,同时在这块也投入了很多时间去学习和研究,有一些经验和学习心得,可以和大家一起分享。

软件开发工程师 3796

微服务(Microservices)——Martin Flower【翻译】

微服务 “微服务架构(Microservice Architecture)”一词在过去几年里广泛的传播,它用于描述一种设计应用程序的特别方式,作为一套独立可部署的服务。目前,这种架构方式还没有准确的定义,但是在围绕业务能力的组织、自动部署(automated deployment)、端智能(intelligence in the endpoints)、语言和数据的分散控制,却有着某种共同的特征。 ...

Jason王祖龙 6346

Microservices-with-Go:构建高可用微服务架构

Microservices-with-Go:构建高可用微服务架构 项目介绍 Microservices-with-Go 是一本由 Packt Publishing 出版的书籍的代码仓库,旨在帮助开发者利用 Go 语言构建可扩展和可靠的微服务架构。本书深入浅出地介绍了微服务开发中的最佳实践和解决方案,通过实践案例让读者更好地理解和掌握微服务的关键技术。 项目技术分析 本书涵盖了微服务开发中的多个关键...

gitblog_00763的博客 1470

微服务(Microservices)—Martin Flower

微服务(Microservices)—Martin Flower 原文:Martin Flower 于 2014 年 3 月 25 日写的《Microservices》。 译文:秦疆のJava世界 微服务 “微服务架构(Microservice Architecture)”一词在过去几年里广泛的传播,它用于描述一种设计应用程序的特别方式,作为一套独立可部署的服务。目前,这种架构方式还没有准确的...

luoru的博客 4965

探索现代云原生的 Blog-Microservices:一个全面集成的微服务示例

探索现代云原生的 Blog-Microservices:一个全面集成的微服务示例 在这个数字化时代,构建可扩展、可靠且高效的 Web 应用程序是至关重要的。Blog-Microservices 是这样一个项目,它展示了如何利用最新的技术栈来实现一个基于微服务架构的博客平台。这个开源项目不仅提供了详尽的代码示例,还配备了自动化的部署脚本和全面的监控体系,为您一站式地演示了在 Kubernetes 上...

gitblog_00049的博客 3176

微服务(Microservices)。

微服务架构风格是一种将一个单一应用程序开发为一组小型服务的方法,每个服务运行在自己的进程中,服务间通信采用轻量级通信机制(通常用HTTP资源API)。这些服务围绕业务能力构建并且可通过全自动部署机制独立部署。这些服务共用一个最小型的集中式的管理,服务可用不同的语言开发,使用不同的数据存储技术。

孤芳不自赏 3389

ecommerce-microservices:构建电商平台的后端微服务架构

ecommerce-microservices:构建电商平台的后端微服务架构 在当今数字化时代,电商平台已成为企业发展的关键。而一个高效、可扩展的后端系统是电商平台成功运营的基石。今天,我们要介绍的便是 ecommerce-microservices,一个基于Java和Kotlin的微服务架构后端系统。 项目介绍 ecommerce-microservices 是一个为电商平台设计的后端服务系统。...

gitblog_00614的博客 1492

微服务实战示例:LucasChen的Microservices-Demo

微服务实战示例:LucasChen的Microservices-Demo 项目简介 是一个由开发者 LucasChen 创建的开源项目,它提供了一个完整的微服务架构示例,用于帮助开发者理解和实践微服务架构设计。该项目通过展示如何构建和部署一组相互协作的微服务,展示了微服务架构的实际应用。 技术分析 该示例项目主要采用了以下技术栈: Spring Cloud:作为Java生态系统中主流的微服务框...

gitblog_00047的博客 1683
上一篇: Java中的NIO、BIO、AIO
下一篇: (二)微服务带来的问题及解决方案
zl_StepByStep
博客等级 码龄10年 154粉丝 113原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值