物联网-常见的服务架构演变

news2025/1/23 3:53:29

常见的服务架构演变

背景

在互联网的发展中,后端的web服务也经历了很多的演变;在公司业务稍微简单的时候,采用简单的服务,可以提高开发效率,可以帮忙节省更多的成本。但随着用户数量的剧增,流量突增;业务越来越复杂,简单的服务也来不满足公司的发展。接下来就简单列一下服务架构。

单体服务

在很多的小公司,或者业务简单的公司,这种服务依旧是主流。这种服务就是将所有的业务代码,全都写在一个项目中,就像我们打包的一个jar。当然为了服务有更好的性能,我们的服务不会只布在一台服务器上,如下图所示。
在这里插入图片描述

当我们在终端访问服务的时候,会经过一个路由算法,比如nginx的反向代理,通过负载均衡算法,可以将终端的请求转发到其中的一个web服务中。因此这样的架构也有优点:

  • 高可用,我们可以部署多个服务器;
  • 简单,所有的功能都可以在一个服务器上处理,只需配置一下转发即可;
  • 性能也较好,所有服务器上都可以处理所有的业务逻辑,并且没有后端之间的远程调用。

以上的方式非常的简单,当把代码开发完成后,提交的远程的仓库,然后使用jenkins这种方式进行打包,使用脚本启动服务。但是当随着业务逻辑越来越多,越来越耦合,如果这是时候出现了代码bug,就会导致整个服务不可用,或者任务阻塞,导致服务器没有资源去做其他的事情。并且随着代码越来越多,代码的维护也越来越复杂,改了某个地方会导致其他业务不能用。因此,在这样一个背景下,怎样去搭建一个低耦合,高内聚的服务呢?

单节点微服务

在互联网很多的企业,已经采用了一种分布式架构的方式,其中的微服务就使用的很成功、很广泛。这种架构通过将原有的整个服务进行划分,将不同的业务划分成不同的模块,然后模块之间使用rpc进行访问。如下图所示:
在这里插入图片描述

该图中就是一个简单的物联网设备的控制服务,将定时服务和控制服务拆分出来,形成一个独立运行的服务,而服务之间通过rpc之间进行调用。通过这样划分,可以实现以下的优点:

  • 灵活性得到更大的提高,比如相应的设备逻辑,我改相应的服务,而不会影响定时,设备控制等服务。
  • 业务的独立性得到增强,开发的难点得到了降低。

但是也有缺点,在微服务中,服务之间采用了远程调用rpc,所以性能有所下降;各个服务之间交互,各自会维护自己的数据库,在相互通信的过程中,数据的一致性难以保证。

混合服务

通过借鉴,单体服务的思想,现在很多的公司采用的一种混合切分一种方式,提高系统可用性,防止因为一个节点的崩溃导致服务不可用。
在这里插入图片描述

如上图所示,在每个单独的服务,增加了像单体服务那样的路由算法,形成集群,提高了系统的可用性和稳定性。

结语

以上就是简单的梳理,在分布式架构中还有CAP原则,BASE理论。在这些理论中,主要强调,可用、性能、一致性的取舍。为了满足用户的良好体验,我们在设备的过程中,需要跟多地满足可用和性能两个要素,其中的数据一致性,我们更多地采用一种软一致性,通过一种时间换空间的方式来保证数据的一致性。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

keras-yolo3-master 项目实战cookbook

1、.h5文件转化 1.1 Error: FileNotFoundError: [Errno 2] No such file or directory: ‘yolov3.weights’ 解决办法:通过在.py文件中添加print()命令发现文件的打开路径有问题,因此在代码中手动添加.weights的绝对路径,使程序能够找到该文…

java.lang.reflect.Field 解读

java.lang.reflect.Field Java 中 Field 提供有关类或接口的单个字段的信息,以及对它的动态访问权限。反射的字段可能是一个类字段或实例字段。Field 是成员变量的意思。Field 也是一个类,该类位于 java.lang.reflect 包下。 https://docs.oracle.com/…

每天五分钟机器学习:支持向量机损失函数和互熵损失函数

本文重点 本节课程我们讲学习两个常见的损失函数,一个是支持向量机损失,也叫做hinge loss,另外一个损失函数是互熵损失函数,它常常应用于softmax分类器中。 hinge loss 单样本的hinge loss可以为: 这个意思是说样本分类错误的分数-样本分类正确的分数小于阈值▲,则损…

Spring Boot 2.7.6 正式版发布, SpringBoot 2.7.6来了

一、发布说明 11 月 25 日官方发布了 Spring Boot 2.7.6 版本,此版本包括 44 个错误修复、文档改进和依赖项升级。 二、更新内容 2.1 bug 修复 即使未启用基于注释的计划,ScheduledBeanLazyInitializationExcludeFilter 也会自动配置使用 ContextHi…

第16章-Spring AOP中的基础API

文章目录一、概述二、切点(Pointcut)三、通知(Advice)1. 环绕通知2. 前置通知3. 异常通知4. 后置通知四、通知者(Advisor)五、附录1. 常用接口2. 示例代码前面我们讲了基于 XML 和注解两种方式配置 AOP&…

SpringBoot SpringBoot 原理篇 2 自定义starter 2.3 定时任务报表开发

SpringBoot 【黑马程序员SpringBoot2全套视频教程,springboot零基础到项目实战(spring boot2完整版)】 SpringBoot 原理篇 文章目录SpringBootSpringBoot 原理篇2 自定义starter2.3 定时任务报表开发2.3.1 直接开干2.3.2 小结2 自定义start…

JavaScript函数进阶:闭包

变量作用域 变量根据作用域的不同分为两种:全局变量和局部变量。 1. 函数内部可以使用全局变量。 2. 函数外部不可以使用局部变量。 3. 当函数执行完毕,本作用域内的局部变量会销毁 什么是闭包 闭包(closure)指有权访问另一…

Day13--商品列表-请求并渲染商品列表的数据

1.定义请求参数对象 接口部分: 文档部分: 我的操作: 1》在goods_list.vue中: 1>初步操作: 其效果图: 2>进一步操作: 在goods_list.vue中: 情况①: 情况②&…

python高级在线题目训练-第二套·主观题

1、《Walden》 是美国作家梭罗独居瓦尔登湖畔的记录,描绘了他两年多时间里的所见、所闻和所思。该书崇尚简朴生活,热爱大自然的风光,内容丰厚,意义深远,语言生动。 请用Python统计小说《Walden》 中各单词出现的频次,…

Metabase学习教程:视图-8

漏斗图 使用漏斗图显示步骤的进度。 图1。我们将用示例数据库构建一个漏斗图。 漏斗图用一系列台阶显示了指标。通常,它们用于显示有多少人通过特定的序列(如网站上的结帐流程)完成。第一步是多少人访问你的网站。然后有多少人浏览了一个产品…

【笔记】ABAQUS弹塑性分析

1. 弹塑性分析的主要问题 1.1 elastic-plastic deform behavior abaqus 默认的塑性表现行为是金属材料经典塑性理论,采用mises屈服面定义各向同性屈服。 一般金属材料都是各向同性材料,弹塑性行为: 小应变时,材料表现为线弹性&…

【5G MAC】随机接入流程中的 Msg2 (RAR)

博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持! 博主链接 本人就职于国际知名终端厂商,负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。 博客…

FL Studio水果2023版本更新下载汉化教程

Image-Line宣布针对Win和Mac版本的数字音频工作站FL Studio的21版本更新。FL Studio2023是一个完整的软件音乐制作环境或数字音频工作站(DAW)。代表超过 23年的创新发展,它包含了您在一个包装中编排,编排,录制&#xf…

cocos creator实现浏览星球的功能,附源码

预览效果: 技术要点: 主摄像机的视场轴需要设置为水平。在场景下创建一个空节点用于挂载控制器脚本图片已进行各概念的说明 在“collisionNodeArray”属性下,放置需要点击的星球节点,系统会自己绑定碰撞器。 也可自己提前绑定。 布…

基于SSM的学籍证明打印系统设计与实现。

项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下,你想解决的问…

QT下TCP协议实现数据网络传输

QT开发框架以其跨平台的优势,在全世界IT界如雷贯耳。其封装了功能齐全的各种类,大大的提高了开发者的效率。本篇内容将介绍如何使用QT 6.4.1框架开发服务器和客户端程序,让两端能够首发消息,服务端往客户端发送文件(客…

Spark在Yarn集群的两种提交模式

目录 一.Yarn Client(yarn的客户端模式) 二.Yarn Cluster(yarn的集群节点模式) 三.两者的差异 一.Yarn Client(yarn的客户端模式) 第一步:Driver端会在提交的本地机上运行 第二步:Driver端启动后会跟ResourceManager(RM)进行通信,申请启动一个Applic…

Linux安装Samba服务,基于Fedora

Linux安装Samba服务,基于Fedora1 安装samba服务2 启动samba服务3 更改配置信息4 使用windows系统进行连接5 其他说明1 安装samba服务 1 关闭防火墙及关闭防火墙开机自启 [whs02fedora ~]$ :sudo systemctl stop firewalld.service [whs02fedora ~]$ &a…

splay树:hdu4453 Looploop

题目链接如下: Problem - 4453 主要是要对区间操作和这种splay树的性质比较清楚。 关于区间我们设立两个额外节点,用来设立最开始的左右区间。 性质方面,其实就是二叉搜索树的性质,这里的体现就是中序遍历就是顺时针访问输入数…

《统计学习方法》 第十四章 聚类方法

聚类方法 1.聚类是针对给定的样本,依据它们属性的相似度或距离,将其归并到若干个“类”或“簇”的数据分析问题。一个类是样本的一个子集。直观上,相似的样本聚集在同类,不相似的样本分散在不同类。 2.距离或相似度度量在聚类中…