微服务的优点及在云原生时代的合理落地方式

云计算de小白

那么,微服务到底能给业务带来什么好处?在云原生时代,如何更合理地实现微服务?

架构没有好坏之分,只有适合与不适合。然而,当我们对比微服务架构与单体架构时,可以发现微服务有以下优势:

首先,微服务独立运行,以进程的方式进行隔离,可以有效控制故障范围,使架构更加可靠。

其次,微服务架构的整体可用性更高,因为故障被有效隔离,减少了单点故障对整个系统的影响。

而且微服务的粒度更小,架构演进的影响也更小,不需要大规模重构,只需要对个别微服务进行调整。

然后,可以以服务为粒度实现微服务架构,通过接口共享和重用,具有更高的可重用性。然后,可以以服务为粒度根据服务对资源的需求进行微服务架构的扩展,扩展性更加灵活。最后,服务拆分后,每个服务可以独立开发、测试、并行部署,大大提高交付效率,加快产品更新速度,提供更好的用户体验。

图片

图片

1. 团队调整

团队需要进行重组,以服务为核心,按照业务领域划分全功能团队,同时改变原有的研发流程和决策机制。比如要倡导敏捷文化,实现快速迭代,多做自动化测试,加强代码评审等工作。另外,微服务框架可以封装和抽象一些分布式场景下的通用能力(比如负载均衡、容错、远程通信等),方便开发者快速开发出高质量的服务。因此,在采用微服务之前,应该对微服务架构进行选择、学习和试用,让整个团队储备一定的微服务相关知识。

2.基础设施建设

基础设施即代码可以通过编程来管理虚拟机或容器,无需手动配置和更新每一台硬件,让基础设施变得弹性十足,实现快速、高效、准确的可重复操作。开发者可以使用同一套代码或配置来部署和管理大量物理机。

另外,当服务数量增多,交付频繁时,故障数量可能会大幅增加,因此需要构建完善的监控体系,及时发现故障并进行处理。当生产环境出现问题时,需要对故障进行分类,评估影响范围,然后分配给相应的负责人。

微服务架构的一大优势就是交付快,既体现在服务粒度更小,也体现在整体流程更快。因此需要构建基于自动化的工具链,以流水线交付的方式串联整个 DevOps 流程,这样小团队就可以基于服务独立开发、测试、部署、运维。这两点并不是采用微服务模式的必要充分条件,但如果能满足,微服务流程就会更加顺畅,后续的维护和迭代也会变得轻松而不是困难。

还有一点需要注意的是,微服务要随着业务的发展逐渐拆分。几乎所有成功的微服务架构都是从庞大的单体架构中拆分出来的,而几乎所有从头开始构建微服务架构的案例,在后来都遇到了很大的困难。面对新的业务和领域时,我们很难在一开始就把业务梳理得非常清楚,往往是经过一段时间、经过一些挫折之后,业务的内部架构才逐渐清晰起来。从现有的模块清晰的单体架构中逐渐划分服务,比从头构建微服务要简单得多。否则,会有两个弊端:第一,第一个版本的交付时间会因为需要构建很多公共服务而大大延迟;第二,服务很容易被不合理地拆分,严重影响整个调用流程的性能,甚至可能需要花费很大的精力去处理分布式事务,最后不得不将多个微服务重新整合成一个单体。

而且只有当业务复杂度达到一定程度时,微服务架构所消耗的成本才会体现出优势。微服务设计应遵循垂直分工优先的原则,让团队自上而下专注于业务实现,端到端负责,避免跨服务多次调用带来的性能和沟通成本。

图片

图片

1. 选择正确的时间

在实际实施过程中,想要享受微服务带来的好处,需要做一些前期的准备。比如,组织架构和团队文化要适应云原生的节奏,足够敏捷和自主;打造功能齐全的团队,产品、UI、前后端研发、测试等角色配备齐全;提前构建自动化流水线,实现一键构建、发布、部署和快速扩缩容功能;服务也必须提前容器化部署,因为服务容器化更利于云原生场景下其他功能组件的集成。当以上所有准备工作都完成,业务逐渐发展到一定规模,迫切需要拆分时,就该果断进行微服务拆分和架构设计了。

2. 选择正确的微服务框架

目前主流的微服务框架主要分为两类:侵入式和非侵入式。

主流的侵入式框架有Spring Cloud、Dubbo、brpc等,这些框架功能特点不同,应用场景不同,大部分架构师都比较熟悉,社区和文档也比较成熟。虽然传统侵入式微服务框架如Spring Cloud存在版本碎片化严重、升级成本高等问题,但总体上可以满足大部分服务治理需求。

现在大多数人都比较关注非侵入式框架的选型,也就是近几年兴起的 Service Mesh 技术。2017 年随着 Linkerd 的推出,Service Mesh 翻译成服务网格,开始进入国内社区的视野。一些大公司也同步开发了自己的适合公司内部应用场景和依赖关系的 Service Mesh 框架,助力内部服务的快速迭代和发展。

Istio 作为一个开源的 Service Mesh 框架,自推出以来就备受关注,成为各大厂商和开发者热议的话题。很多人认为 Istio 将成为继 Kubernetes 之后的又一明星产品。有了 Istio,基本就不需要其他微服务框架了,也不需要自己去实现服务治理等功能了,只要把网络层的事情交给 Istio 就可以完成这一系列工作。简单来说,Istio 就是一个提供服务治理能力的服务网格。

此外,Istio 还具备全面的可观察性能力,包括对网格控制下的所有流量进行自动测量、日志记录和跟踪。换句话说,通过选择 Istio,单体应用无需任何修改就可以轻松接入微服务,享受云原生的福利。

3.借助云厂商产品快速落地云原生和微服务

之所以提到云厂商,是因为大部分中小型公司或者传统行业都被单体应用和传统微服务框架的种种弊端所困扰,迫切需要云原生和微服务化改造,但又缺乏足够的人力和技术去维护一套功能齐全的云原生基础和基础设施服务。以Istio框架为例,其版本更新频繁,控制面和数据面在提供强大功能的同时,其代码实现也相当复杂,当出现异常时,很多工程师往往难以定位问题所在。云厂商提供了一整套云原生应用编排和微服务管理解决方案,所有技术都已经产品化,使用简单、效果易于查看,还能避免或快速解决运行过程中可能遇到的各种问题。这在一定程度上不仅提高了服务效率,还大大降低了各种成本,让人们能够快速充分地享受到云原生带来的好处。

总体来说,任何软件或架构都有其优缺点,没有十全十美的东西。在考虑是否实施微服务时,需要思考和权衡当前的软件和系统是否满足微服务改造的前提条件,微服务改造带来的好处是否大于损失,利大于弊,团队是否各方面都准备好了。如果还没准备好,那不妨再等等,毕竟单体架构也有自己的优势。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/433516.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

8--苍穹外卖-SpringBoot项目中套餐管理 详解(二)

目录 删除套餐 需求分析和设计 代码开发 根据id查询套餐 mapper层 Service层 ServiceImpl层 Mapper层 批量删除套餐 mapper层 Service层 ServiceImpl层 Mapper层 SetmealMapper.xml 修改套餐 需求分析和设计 代码开发 起售停售套餐 需求分析和设计 代码开发…

Docker全家桶:从0到加载本地项目

安装docker,我们选择的是CentenOS 7。 目录 Docker安装 命令 命令别名 数据卷挂载 Dockerfile 容器网络互联 Docker安装 1. 先删除本机旧的或者残留的docker sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest …

前端——js基础

一、JavaScript (简称js)——js可以给网页实现一个动态效果 1.JavaScript 组成 - 核心语法 ECMScipt 简称(es): 规范js的基本语法 1.es是js的语法规范 管理者 2.js是es的实现 操作者 - DOM > 文档对象 提供js操作 (例如…

再也不用担心内容重复!在线伪原创工具,让创作更自由!

大家好,今天我们将讨论一个对网络写作非常有益的辅助工具——在线内容转换工具。不论您是需要更新您的博客,还是希望在社交平台上保持活跃,我们都频繁面临着迅速生成新内容的挑战。利用一个有效的工具来改写现有内容,可以极大地提…

什么是网络安全自动化以及优势与挑战

目录 网络安全自动化的工作原理 网络安全自动化的好处 增强的安全功能 改善表现和姿势 降低安全成本 简化的安全合规性和审计 更好的端点管理 网络安全自动化的挑战 耗时且容易出错的安全流程 可见性降低,风险和成本增加 合规管理 有用的网络安全自动化…

算法题之每日温度

每日温度 给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替。 示例 1: 输入…

基于Java的建筑节能监测系统+能源管理+公共建筑能耗监测系统+建筑能耗监测系统+节能监测系统+能源管理系统

介绍 建筑节能监测系统是基于计算机网络、物联网、大数据和数据可视化等多种技术融合形成的一套节能监测系统 系统实现了对建筑电、水、热,气等能源、资源消耗情况的实时监测和预警、动态分析和评估,为用户建立了科学、系统的节能分析方法,…

14年408-计算机网络

第一题: 解析:OSI体系结构 OSI由下至上依次是:物理层-网络链路层-网络层-运输层-会话层-表示层-应用层。 因此直接为会话层提供服务的是运输层。答案选C 第二题: 解析:数据链路层-交换机的自学习和帧转发 主机a1向交换…

webshell-HTTP常见特征

一、总体特点 二、蚁剑 数据中可以看到一些明文字符串函数,响应中可以看到响应的明文数据。 ant特征以及对数据base64可以解码 chr类别的会出现大量的chr编码 大量的百分号字符 三、哥斯拉 第一个请求包很大 响应为0 密钥被拆分到数据前后 响应包cookie带&#xf…

C#和数据库高级:虚方法

文章目录 一、抽象方法和抽象类中的思考1.1、回顾抽象方法的特点1.2、针对抽象方法问题的引出 二、虚方法的使用步骤2.1、虚方法重写方法的调用2.2、系统自带的虚方法2.3、重写Equals方法2.4、虚方法和抽象方法的比较 三、虚方法和抽象方法的联系3.1、ToString()方法的应用 一、…

Python爬虫APP程序:构建智能化数据抓取工具

在信息爆炸的时代,数据的价值日益凸显。Python作为一种强大的编程语言,与其丰富的库一起,为爬虫程序的开发提供了得天独厚的优势。本文将探讨如何使用Python构建一个爬虫APP程序,以及其背后的思维逻辑。 什么是Python爬虫APP程序&…

php thinkphp 小程序发送订阅模板消息通知

小程序需要在我的模板中先选用模板 小程序需要先订阅模板 wx.requestSubscribeMessage({tmplIds: ["XII_0By8D9WabnUjVPB_8S1itsm2d4_xxx"],success:

springboot实战学习(7)(JWT令牌的组成、JWT令牌的使用与验证)

接着上篇博客的学习。上篇博客是在基本完成用户模块的注册接口的开发以及注册时的参数合法性校验的基础上,基本完成用户模块的登录接口的主逻辑以及提到了问题:"用户未登录,需要通过登录,获取到令牌进行登录认证,…

DRF实操学习——收货地址的设计

DRF实操学习——收货地址的设计 1.行政区划表的设计2. 行政区划表接口演示1.返回所有的省份2. 查询指定上级行政区划的所有子区划,以及展示自身区划 3.行政区划表接口重写补充:前端请求逻辑4. 优化5.收货地址的设计6. 收货地址表接口重写7.优化1. 优化返…

示例说明:elasticsearch实战应用

Elasticsearch 是一个基于 Lucene 的分布式搜索和分析引擎,广泛应用于日志分析、全文搜索、数据可视化等领域。以下是 Elasticsearch 实战应用的一些关键点和步骤: 1. 环境搭建 首先,你需要在你的环境中安装和配置 Elasticsearch。 安装 E…

一个 Java 语言简化处理 PDF 的框架,提供了一套简单易用的 API 接口,满足多样化需求又能简化开发流程的处理方案(附教程)

前言 当前市面上处理 PDF 文件的工具众多,但它们往往存在一定的局限性,比如复杂交互、功能单一等问题。尤其对于那些需要频繁生成或编辑 PDF 文档的应用场景来说,找到一个既能满足多样化需求又能简化开发流程的处理方案显得尤为重要。那么&a…

中国的互联网电商,终于还是“连上了”

什么才是更好的互联网? 答案很简单:真正的互联。 9月26日,据市场消息,京东物流和菜鸟速递将分别接入淘天、京东平台。同时,京东也将在“双11”前开通支付宝支付,时隔13年再度携手阿里支付体系。 消息一出…

【x**3专享#2】编译 uboot 和 kernel 的文件结构

虚拟机交叉编译环境配置及内核编译步骤说明书 请先查看前篇文章内容 1. 获取虚拟机 IP 地址 打开虚拟机终端,执行以下命令查看虚拟机 IP 地址:ifconfig或者ip addr记录 eth0 或 ens33 等网络接口的 inet 后面的 IP 地址 2. 使用 Xftp 连接虚拟机 打开…

Springboot中yml文件不生效原因分析及解决

在Spring Boot项目中,YML文件是常用的配置文件格式。然而,有时你可能会遇到YML文件中的配置不生效的问题。本文将分析可能的原因并提供解决方案。 1. 格式错误 YML文件非常敏感,任何缩进或语法错误都可能导致配置不被解析。确保使用两个空格…

基于YOLOv5s的无人机航拍输电线瓷瓶检测(附数据集与操作步骤)

本文主要内容:详细介绍了无人机航拍输电线瓷瓶检测的整个过程,从创建数据集到训练模型再到预测结果全部可视化操作与分析。 文末有数据集获取方式,请先看检测效果 现状 输电线路绝缘瓷瓶的检测主要依赖人工巡检。巡检人员需携带专业设备,攀…