软件开发人员从0到1实现物联网项目:项目架构的思考

news2024/11/25 20:32:37

文章目录

  • 前言
  • 单体应用足矣
  • 摒弃传统的微信对接
  • 后期的维护投入
    • 上真正的“云”:云托管
    • 0服务器免运维
    • 免费的CDN和DDoS防护
  • 技术架构
  • 小结

前言

因为种种原因,《软件开发人员从0到1实现物联网项目》这个项目的进度停滞了将近一个月。

鉴于该项目的前期开发和后期的维护就我一人,为避免开发效率低下和后期维护中的潜在问题。我针对项目架构进行了初步的思考,从开发模式到后期维护进行了全面的梳理。基于这些思考,最后整理出了一份简单的技术架构图。有什么不足之处还请各位大佬不吝赐教,欢迎提出宝贵的意见和建议。

单体应用足矣

前两年的市场绝对是微服务的天下,开发个什么系统,动不动就是微服务,几乎已经成为每个项目的标配。

在我看来,微服务只适合业务规模大、团队规模庞大的项目。主要是一个大项目在单体应用下确实会存在很多问题,就像2007年的淘宝网一样:

整个淘宝网是一个几百兆字节的WAR包,大大小小的功能模块超过200个。几百人维护一个WAR包就会带来很多问题:

  1. 项目团队间协同成本太高,业务响应越来越慢。
  2. 应用复杂度超出负载认知,没有一个人能完全清除每一个功能和业务流程。
  3. 数据库连接能力很难扩展,数据库的连接数量会随着应用实例的增加而捉襟见肘。
  4. 错误难于隔离,任何一个小的问题都会造成整个实例崩溃。
  5. 应用扩展成本高,通常出现业务瓶颈时都是某几个功能模块影响的,但是需要增加一个完整的应用实例,带来的是额外的资源消耗。

每一次的功能升级都要牵一发而动全身,这种情况下就不得不拆分系统。

自助棋牌室系统或者说是无人看守门店系统,一个小小的项目,功能并不多。所以,单体架构,足矣。否则,带来的只有繁琐的开发部署流程以及高昂的运维成本。

摒弃传统的微信对接

本项目的用户终端主要包含微信小程序和后台管理Web端。其中小程序服务于用户和商家,Web端则为商家和后期维护人员提供管理工作。

App一开始就没在考虑范围。( App 下载门槛高,打开率低)

在小程序与后端服务的交互方式,我决定使用云调用,主要是为了简化代码开发流程和规避不必要的风险。

以登录功能为例,使用传统的微信对接方式,需要涉及复杂的步骤。如下图

虽然有很多SDK可以简化和微信平台的对接流程,但还是消除不了相关的工作和潜在的风险。毕竟,每增加一个处理环节,都可能会增加潜在的风险。

而在小程序端如果通过云调用向云托管服务发起请求时,后端服务会在header中获得该请求用户的全部信息,比如openid、unionid等。上图的 wx.login 获取code置换登录的流程就没有存在的必要了,也不用维护再微信接口调用凭据、token

后期的维护投入

虽说是单体应用,但也是可以具备高可用、高并发能力的。除了程序自身的性能外,还需引入很多机制来辅助。例如实施负载均衡、实现数据库的读写分离以及确保应用实例的弹性扩缩容等。

但是,这些机制的引入会消耗自身的一些精力,尤其是后期复杂的维护工作。鉴于该系统后期的维护就我一人,为了降低维护成本果断上“云”。

上真正的“云”:云托管

在了解小程序开发期间,我发现了云开发和云托管这两个强大的工具。如果说云开发是专为小程序开发量身打造的,那在我看来,云托管可以算是真正的“云”了。

简单来讲,云托管就是:把你的程序交给云管理,免去人工运维

0服务器免运维

云托管的免运维具体体现在以下几点:

  • 自带功能:云托管自带监控告警、日志服务等后期运维所需功能。
    (实现哪个功能不需要工作量?)
  • 自动扩缩容:根据流量多少和自身承载消耗动态的进行扩缩容,从而保证服务高可用、高稳定,也无需为闲置资源付费。
    (既不用自己管理计算节点又可以避免额外的资源成本,而且,高可用和高并发是不是解决了?)
  • DevOps自动化: 提供流水线能力,可以实现从代码仓库到服务发布的全自动流程。还提供灰度发布、版本回滚这样的部署能力。
    (不用自己打包部署或者自己搭建DevOps环境)

就是说,单单这三点能为我省去多少工作量。如果应用部署到云服务器上,哪一个工作量不够我喝上一壶?我还用担心半夜的服务监控告警吗?

当然,云托管不只是对应用程序的托管,还提供了Serverless形态的Mysql,也可自动扩缩容,避免产生瓶颈。
(又省了Mysql的运维工作)

不过,这都不是重点,重点是云托管还提供了免费的CDN和DDoS防护。

免费的CDN和DDoS防护

CDN和DDoS防护都非常重要,我对此深有体会。在我的职业生涯中被CDN和DDoS上过一课。一次是在新产品上线后,遭到竞争对手的恶意攻击引起的系统崩溃。另一次是因为抢购功能的上线,带宽被刷爆,导致页面加载不出来流失了大量用户。

得亏老板有钱,一个月几万元的DDoS的高防套餐说买就买。像我这样的情况或者一些初创公司是承担不起的。

但是,把程序交给云托管就不一样了,借助云厂商的资源,DDoS攻击者打不起、也打不挂。重要的是开发者不用为此付费。

这么看来,云托管的性价比是非常高的。

技术架构

项目依托微信云托管,所以整体的复杂度会小很多。

除了必要的MySQL外,只需引入Redis,主要是要做一个无状态服务,以便横向扩展。

在物联网方面,还是考虑接入物联网开发平台。真得会减少很多工作量和后期的维护,而且像国内的这几个云厂商都是有公共免费的额度可以使用,所以在开发阶段不会投入成本。

下面是基于云托管的技术架构图

小结

对于独立开发者和初创公司而言,微信云托管绝对算是一个得力助手。不仅简化了微信API的接入,还省了买服务器的钱。像灰度发布、监控实例、服务器规格调整这些头疼的事儿,统统都不用费心。还有那种一个月要几万块才能搞定的DDoS防护,不用理会。美哉!

(不是广告)

准备进入开发阶段…

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

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

相关文章

优化销售流程,领先市场趋势!企元数智赠送小程序合规分销系统!

在当今竞争激烈的商业环境中,企业要保持竞争力并领先市场趋势,关键在于不断优化销售流程和采用最新的营销工具。为满这一迫切需求,企元数智(假设为一家虚构公司)推出了一项创新举措:赠送小程序合规分销系统…

景联文科技:专业数据标注公司,推动AI技术革新

数据标注作为AI技术发展的重要支撑,对于训练高质量的机器学习模型以及推动应用领域的创新具有不可替代的作用。 景联文科技作为专业的数据标注公司,致力于提供专业的数据标注服务,帮助客户解决AI链条中的数据处理难题,共同推动人工…

沃尔玛活跃卖家一年内增长50%,突破15万!沃尔玛新店铺如何快速出单?

随着美国电商市场竞争日益激烈,沃尔玛正在迅速崛起成为亚马逊的强劲对手。据最新财报显示,2024年第二季度,沃尔玛的全球广告收入增长了26%,其中专注于美国市场的Walmart Connect更是取得30%的增长,这一成绩已经超越了其…

Java笔试面试题AI答之单元测试JUnit(4)

文章目录 19. 简述JUnit org.junit.TestSuite类的作用 ?1. 组织测试类2. 简化测试执行3. 灵活配置测试环境4. 嵌套测试套件注意事项 20. 在JUnit中Test注释的作用和用法 ?作用用法 21. 简述Junit 基础注解(BeforeClass、Before、Test、After、…

Java--集合进阶 Collection,迭代器,lambda表达式

集合体系结构 Collection:单列集合 LIst系列集合:添加的元素是有序、可重复、有索引 Set系列集合:添加的元素是无序、不重复、无索引 Collection集合常用方法 | 方法名 | 说明 || :---…

双设备同时快充不再是梦:揭秘一拖二快充线PD芯片的奥秘

一拖二快充线PD芯片:充电新纪元,让生活更“电”力十足! 在这个快节奏的时代,手机、平板、耳机……我们的数字小伙伴们几乎从不离身,但它们的电量却总爱跟我们玩“躲猫猫”。每当夜幕降临,充电线就成了连接我…

【每日刷题】Day114

【每日刷题】Day114 🥕个人主页:开敲🍉 🔥所属专栏:每日刷题🍍 🌼文章目录🌼 1. LCR 166. 珠宝的最高价值 - 力扣(LeetCode) 2. 931. 下降路径最小和 - 力扣…

关于转行网络安全的一些建议

在当前就业形势下,不少朋友面临转行的困境。网络安全作为一个热门领域,自然也吸引了许多人的目光。本文将就转行网络安全这一话题,提供一些切实可行的建议。 网络安全行业概况 网络安全涵盖了从基础的脚本编写到高级的漏洞研究等多个层面。该…

【数学分析笔记】第3章第2节 连续函数(2)

3. 函数极限与连续函数 3.2 连续函数 【例3,2,4】证明 f ( x ) a x ( a > 0 , a ≠ 1 ) f(x)a^{x}(a>0,a\ne 1) f(x)ax(a>0,a1)在 ( − ∞ , ∞ ) (-\infty,\infty) (−∞,∞)上连续。 【证】 ∀ x 0 ∈ ( − ∞ , ∞ ) \forall x_{0}\in(-\infty,\infty) ∀x0…

2、PF-Net点云补全

2、PF-Net 点云补全 PF-Net论文链接:PF-Net PF-Net (Point Fractal Network for 3D Point Cloud Completion)是一种专门为三维点云补全设计的深度学习模型。 点云补全实际上和图片补全是一个逻辑,都是采用GAN模型的思想来进行补全…

Android平台播放RTSP流的几种方案探究(VLC VS ExoPlayer VS SmartPlayer)

技术背景 好多开发者需要遴选Android平台RTSP直播播放器的时候,不知道如何选的好,本文针对常用的方案,做个大概的说明: 1. 使用VLC for Android VLC Media Player(VLC多媒体播放器),最初命名…

【深度学习】LSTM模型,GRU模型计算公式及其优缺点介绍

一.LSTM介绍 LSTM(Long Short-Term Memory)也称长短时记忆结构, 它是传统RNN的变体, 与经典RNN相比能够有效捕捉长序列之间的语义关联, 缓解梯度消失或爆炸现象. 同时LSTM的结构更复杂, 它的核心结构可以分为四个部分去解析: 遗忘门输入门细胞状态输出…

基于SpringBoot的智能制造云平台系统的设计与实现计算机毕设

一、选题背景与意义(300字左右) 根据工业4.0智能制造生态链中云工厂在实际生产当中的工作流程进行充分调研和整理出来的,描述最终用户在本系统中对于生产订单的处理、排产、以及生产的完整在线处理流程和业务需求的文档。 针对制造业而言&a…

WebGL系列教程三(使用缓冲区绘制三角形)

目录 1 前言2 缓冲区介绍3 声明顶点的位置和颜色4 回忆Shader的初始化5 开始缓冲区的逻辑5.1 声明顶点坐标5.2 创建并绑定缓冲区5.3 获取顶点着色器中的变量5.4 使变量从缓冲区取值5.5 绘制5.6 完整代码 7 总结 1 前言 上一篇中我们介绍了WebGL的环境搭建及Shader的初始化&…

搭建Docker私有仓库管理本地的Docker镜像,通过harbor实现Web UI访问和管理私有仓库

要在本地搭建一个Docker私有仓库,你可以按照以下步骤进行设置: 安装Docker 确保你已经安装了Docker。如果还没有安装,可以按照官方指南进行安装: 对于Ubuntu系统,你可以运行以下命令来安装Docker: sudo ap…

区块链-P2P(八)

前言 P2P网络(Peer-to-Peer Network)是一种点对点的网络结构,它没有中心化的服务器或者管理者,所有节点都是平等的。在P2P网络中,每个节点都可以既是客户端也是服务端,这种网络结构的优点是去中心化、可扩展…

【JAVA入门】Day36 - 异常

【JAVA入门】Day36 - 异常 文章目录 【JAVA入门】Day36 - 异常一、异常结构体系综述1.1 错误(Error)1.2 异常(Exception)1.3 运行时异常(RuntimeException)1.4 其他异常 二、编译时异常和运行时异常三、异常…

WebDriver与Chrome DevTools Protocol:如何在浏览器自动化中提升效率

介绍 随着互联网数据的爆炸式增长,爬虫技术成为了获取信息的重要工具。在实际应用中,如何提升浏览器自动化的效率是开发者常常面临的挑战。Chrome DevTools Protocol(CDP)与Selenium WebDriver相结合,为浏览器自动化提…

vue中ES6的属性every使用@2@

every用于判断数组中的每一项是否均符合条件&#xff0c;并返回一个布尔值&#xff0c;都符合返回true&#xff0c;有一个不符合就返回false&#xff0c;并不再继续执行 //everyvar arr2 [1, 2, 3, 4, 5] let newArr2 arr2.every((num) > {return num < 3}) consol…

安卓13禁止声音调节对话框 删除音量调节对话框弹出 屏蔽音量对话框 android13

总纲 android13 rom 开发总纲说明 文章目录 1.前言2.问题分析3.代码分析3.1 方法13.2 方法24.代码修改4.1 代码修改方法14.2 代码修改方法25.编译6.彩蛋1.前言 客户需要,调整声音,不显示声音调节对话框了。我们在系统里面隐藏这个对话框。 2.问题分析 android在调整声音的…