【架构设计】单体软件向微服务化演变

这篇具有很好参考价值的文章主要介绍了【架构设计】单体软件向微服务化演变。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

单体软件

假设单体软件的各模块如下,其中服务包含许多功能模块,如用户管理模块、商品模块、订单模块、仓库模块;

服务化

服务化是指对单体服务进行拆分,将一个服务软件拆分为多个相互关联的服务,他们之间相互协作,能正常完成原单体服务的所有业务。

服务化后,有如下优点:

  • 服务化后的各服务能独立提供服务,某个服务损毁后,不影响其他业务的使用,软件整体的可用性提高了。
  • 服务化后的软件代码依据各子服务管理,相对来说代码量少了,开发复杂性会成指数型减弱
  • 服务化后的软件,各子服务独立维护,因此各服务更新维护也比较简单
  • 服务化后的软件,由于各服务在不同节点独立运行,计算与网络资源成倍数形式增长。理论上来说,这使得软件的服务能力成倍提高

以下是对单体服务中的服务进行服务拆分的示意图。

部分服务分集群化

服务集群化

软件服务化后,使得软件的可用性、服务能力大大提高,然而其更多的价值在于使得软件的开发、维护更为简单。

在软件服务化后,随着软件使用的需求持续增长,依然会面临服务能力不足的问题。为了解决该问题,大家都会想到服务扩容,那么如何扩容呢?假定软件被拆分了10多个子服务,甚至更多。将所有服务都扩容一套嘛?

答案是否定的,扩容不是说说那么简单。众多子服务同时扩容,首先要面临成本问题。

一般情况下,服务扩容是根据各子服务的使用情况来指定灵活的扩容方案。对软件中服务压力大,硬件资源不足的节点进行灵活扩容。

如下是商品服务服务扩容的示意图,下图表示软件将商品服务扩增到了三个节点,这个三个节点通过负载均衡与软件中的其他服务相关协同。

商品服务以多个节点共同提供服务。这个服务群形成一个集群,即商品服务集群。

数据库集群化

随着服务的增长,对数据库的读写需求也会持续增长。其增长趋势与服务的使用趋势成正比。

当数据库服务能力遇到瓶颈时,也可以对其进行服务扩容。

因为数据层的服务扩容首先要保证扩容后所有数据服务之间的数据一致性问题 ,因此服务的集群化和数据层的集群化通常不一样。文章来源地址https://www.toymoban.com/news/detail-797726.html

  • 服务集群化后,通常各个子服务之间的关系是均等的,它们可无差别的提供服务,任何一个服务损毁,都不影响整体软件的运行,除非所有集群中的所有服务都损毁。
  • 数据层的服务集群化后,通常对服务进行主从节点划分。主节点主要负责数据写入,从节点主要负责数据读取。注意,除了主从这种模式外,还有去中心式服务模式。去中心式服务模式理论上每个服务都能进行数据读写。

到了这里,关于【架构设计】单体软件向微服务化演变的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 系统架构的演变:从单体到微服务的旅程

    随着信息技术的快速发展,系统架构也在不断演变。从早期的单体架构到现代的微服务架构,每一次的变革都带来了更高的灵活性和可扩展性。本文将通过图解和代码示例,详细介绍系统架构的演变过程,并探讨微服务架构的优势和适用性。 单体架构是最早的系统架构之一,

    2024年01月18日
    浏览(42)
  • 为什要微服务化?

    从 0 到 1 的堆砌式发展 一个服务承载所有,一个系统涵盖一切,这可能是大多数公司初创时的技术风貌。一切追求快速验证,快速响应,快速实现。 但是,伴随着业务的膨胀发展,相应的技术支撑要求也在不断提升。从最开始的一个简单的服务,不断地添枝加叶,各种各样

    2024年02月08日
    浏览(45)
  • xxl-job服务化

    xxl-job作为服务,之前使用都是每个服务配置信息,采用方法的形式,xxl-job作为服务的话,只需要进行配置 配置信息 xxl-job创建任务 xxl-job相关输入 clientClass 实现类 clientMethod 调用的方法 加参数,比如用户为张三,年龄18 ,\\\"name\\\":\\\"张三\\\",\\\"age\\\":18 JobHandler:CommonXxlJobHandler 任务参数:

    2024年02月06日
    浏览(42)
  • 为什么要将应用微服务化

    其实在十多年前,“架构师”并不是一个需求很大的职业,一来那时还没有“全民App”级别的应用,除了三大门户网站以外,其他的网上应用业务压力并不大;二来也没有现如今这么丰富的技术选型,几乎清一色的PHP(坊间一直流传着PHP是世界上最好的语言这个说法,我08年左右

    2024年01月17日
    浏览(47)
  • 为什么要将应用微服务化?

    其实在十多年前,“架构师”并不是一个需求很大的职业,一来那时还没有“全民App”级别的应用,除了三大门户网站以外,其他的网上应用业务压力并不大;二来也没有现如今这么丰富的技术选型,几乎清一色的PHP(坊间一直流传着PHP是世界上最好的语言这个说法,我08年左右

    2024年01月18日
    浏览(46)
  • springboot + activiti实现activiti微服务化

    本文介绍如何将springboot+activiti进行整合,并配合eureka,zuul和feign实现activiti的微服务化,将流程控制和业务逻辑分离. 并实现了几个比较特殊的功能,比如时间段委托(某人请假或出差,出差时间内,所有待办交给被委托人处理),比如节点的无限级加签功能(流程本身有不确定性,临时增加

    2024年02月09日
    浏览(39)
  • PaddleOCR 服务化部署(基于PaddleHub Serving)

    最近用到百度飞桨的 PaddleOCR,研究了一下PaddleOCR的服务化部署,简单记录一些部署过程和碰到的问题。 基础环境 paddlepaddle 2.5.2 python 3.7 paddlehub 2.1.0 PaddleOCR 2.6 pip 20 部署过程中也尝试多次,不同版本遇到的问题不尽相同,这里选取其中一组进行部署说明 使用 docker部署 paddl

    2024年03月09日
    浏览(42)
  • 【flask】python使用flask发布http服务对算法服务化封装

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 随着应用场景的变化,某些场景中需要调用python的算法对B/S或C/S结构的项目进行支撑,为了将算法服务化,可以使用flask框架对算法进行服务发布,避免不同系统调用算法时进行多次算法的部署以及代码

    2024年04月16日
    浏览(56)
  • PaddleOCR 使用 FastDeploy 服务化部署及postman、java调用服务的方法

    目录 服务化部署 postman调用 java调用 题外话 部署这块大部分按着官方文档来做就差不多 PaddleOCR/deploy/fastdeploy/serving/fastdeploy_serving at dygraph · PaddlePaddle/PaddleOCR · GitHub 提一下两个需要注意的点。 一、如果跟我一样选择的是cpu的版本,那么修改config.pbtxt配置文件时不仅得按官方

    2024年02月08日
    浏览(40)
  • 解析UI页面结构树的逆向解析服务化:技术探索与应用

    “限时免费赠送!人工智能测试开发资料大礼包,把握测试行业的新机遇\\\" 解析UI页面结构树的逆向解析服务化是一项具有挑战性和前景广阔的技术,它可以用于多种场景,例如网页内容分析、自动化测试、网页爬虫等。下面是一些技术探索与应用方面的讨论: 技术探索 HTM

    2024年04月16日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包