李锋镝的博客

  • 首页
  • 时间轴
  • 说说
  • 每日心情
  • Now
  • 系列文章
  • AI工具集
  • 论坛
  • 左邻右舍
    • 左邻右舍
    • 博友圈
    • 游客中心
  • 留言
    • 留言
    • 走心评论
  • 关于
    • 关于本站
    • 网站地图
    • 网站统计
    • 另一个网站
    • 赞助
  • 🚇开往
!Destiny
惟坚韧者始能遂其志
  1. 首页
  2. 转载
  3. 技术
  4. 正文

再小的应用也有架构,面向架构新手的架构实践!

2019年11月11日 约 1,439 字5 分钟 182 0 0
本文最后更新于 2019年11月11日,距今已 2511 天,其中的信息可能已经发生变化,请注意甄别。

文章主人公:小明,就职于某互联网公司,从事后端开发工作。最近小明收到通知公司需要开发一款《证件照》应用,需要征集架构方案,主要功能包括:

再小的应用也有架构,面向架构新手的架构实践!

小明虽然从事后端开发工作,但是一直很关注架构这方面的知识,以往都是开发大佬们架构好的应用现在有机会自己去实践下,打算把自己学到的知识应用于实际案例中来。

小明的脑海里是回想了下架构的基本三原则:

  • 合适优于业界领先
  • 简单优于复杂
  • 演化优于一步到位

小明作为架构新手,虽然干劲十足,但是也像大部分一样开发人员一样架构经验较少,不知道如何下手去开始架构,万事开头难啊!小明请教了下公司的西踢殴(CTO),给了一句25字的架构真言:架构设计的主要目的是为了解决软件系统复杂度带来的问题

小明也算骨骼惊奇,久经沙场(996没少锻炼人~~),思考了“架构真言”既然是为了解决软件系统繁杂度的问题,那不得先找出系统的复杂点在哪里吗?

发现复杂点

小明根据“架构真言”开始思考《证件照》应用的复杂点,首先它是一款工具类应用,主要功能是进行图像处理:

再小的应用也有架构,面向架构新手的架构实践!

小明发现图像处理和图像存储可能比较复杂,公司现阶段没有专门做图像处理团队,也没有大数据团队,这两个问题是要优先解决的问题。

小明现在使用的手机是Galaxy s9一张照片大概是6m,如果初期应用日活1w,假设有20%的人会处理图片,那一天的存储量大约10g,运行一个月就需要300g的存储空间,这个配置个几T的磁盘可以跑个1年左右。不过这只是1w日活还要考虑到十万、百万级别的时候怎么办。

经过讨论小明列出了一些复杂的地方并按优先级做了排序:

  1. 图像存储
  2. 图像处理
  3. 订单处理
  4. 物流处理

设计架构方案

对于图像存储复杂性,小明第一个想到的是一个分布式文件存储方案,这样数据容量、可用性都可以得到很好的保障。他首先将这个想法和西踢殴交流了下,西踢殴也没有否认这个方案只是让小明考虑下成本方面的因素,小明回头一想确认引入"分布式文件存储"首先会带来以下几点问题:

  • 系统复杂性提高
  • 运维成本提高
  • 系统可用性降低
  • ...

小明思考了下简单优于复杂原则,决定使用最简单的本地磁盘存储图像文件,但是使用本地磁盘的方案一定要考虑扩展性,将来随时都可能扩容、迁移数据,于是小明对图像存储做了个简单的抽象层:

再小的应用也有架构,面向架构新手的架构实践!

小明对于存储复杂性应用了架构原则中的原则简单优于复杂、演化优于一步到位,同时对于存储的可变性,通过引入抽像层能够有效合理的应对未来的变化。

初步定下来图像存储后,小明开始对图像处理复杂性的问题进行设计,一张证件照的制作流程大致如下:

  • 用户提交图片
  • 检测人脸
  • 人像与背景切割
  • 将切割后的图交给客户处理
  • 客户端合成背影、正装生成证件照

检测人脸、头像分割这类技术公司也没有使用过,基本上自研是不可能的,再说人力成本也不够,首先合适的方案就是用第三方的服务,一番调研发现百度AI有人像处理的能力,小明开始考虑使用百度AI的服务,于是引入百度AI的服务:

再小的应用也有架构,面向架构新手的架构实践!

对于图像处理小明考虑合适优于业界领先原则,考虑人力、物力的成本选择合适的方案,而不是一开始就说要自研一套图像处理系统,投入大量的时间和人力去做最后得不偿失。经过一番操作,小明最后整理出一张基础架构图交给了西踢殴,等待西踢殴的转身~~

再小的应用也有架构,面向架构新手的架构实践!

总结

根据架构设计的主要目的是为了解决软件系统复杂度带来的问题的综指,小明首先找出系统的复杂点,然后经过优先级排序,一步步的解决复杂性的问题,最后结合实际情况设计出一套可行的架构方案。架构设计也是有套路可寻的,虽然案例架构比较简单没有大规模的分布式、高可用、高并发场景,再小的应用也是有架构,也要经过深思熟虑再去实行不然会是满地的技术债,后期要花更多的成本去维护重构。

 

原文地址:https://www.cnblogs.com/xwgblog/p/11812244.html

参考链接

1
  1. 1www.cnblogs.comwww.cnblogs.com
除非注明,否则均为李锋镝的博客原创文章,转载必须以链接形式标明本文链接

本文链接:https://www.lifengdi.com/transport/1519

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可
分享到

再小的应用也有架构,面向架构新手的架构实践!

也可使用浏览器菜单中的「分享」功能

微信扫一扫分享

标签: 架构
最后更新:2019年11月11日

岁月同一天 9 月 27 日

回望过去的今天,你在写什么

  • 6 年前 2020年9月27日
    jmap命令(jdk1.8)

    命令格式 jmap [ options ] pid jmap [ options ] executable core j…

  • 7 年前 2019年9月27日
    Eclipse反编译插件Jad安装

    1.下载jadclipse的jar包、jad.exe可执行文件 2.jar包放在eclipse的plugins目录下,然…

相关文章
  • Redis 不只是缓存:8 大实战场景 + 深度避坑指南,从入门到架构师级应用2025年10月13日
  • 微服务架构梳理总结(二)2019年6月13日
  • 缓存架构实战指南:6大核心缓存技术深度解析与落地方案2025年12月23日
  • 微服务架构梳理总结2019年6月13日
  • 一文详解微服务架构2019年10月9日

李锋镝

既然选择了远方,便只顾风雨兼程。

打赏 点赞
< 上一篇
下一篇 >
1234567891112131415161718192021222324252627282930313233343536373839404142434446474849505152535455575859606162636465666769727476777879808182858687909293949596979899
取消回复
…

文章评论

还没有评论,快来抢沙发吧~

文章合为时而著,歌诗合为事而作。

听点儿音乐吧 朋友~
文章目录
最新 热点 随机
最新 热点 随机
祝大家中秋安康 游本昌去世 Redis7+&8.X 全新进阶系列(02):Redis Functions 详解——替代Lua脚本的官方轻量化函数方案 Redis7.x&8.x 全新进阶系列(01):划时代升级总览——从6.x到7.x/8.x全版本变革全景 让WordPress静态化之Rocket‑Nginx WordPress下一代默认主题Ipsum预览
关于主题加载速度优化的一点儿小演进给主题增加了Now、每日心情、年度回顾、岁月同一天、随机漫步等功能WordPress缓存插件WP Fastest Cache、WP Rocket 、FlyingPress对比关于使用AI的一些思考WordPress下一代默认主题Ipsum预览Kratos+ v1.1.16版本更新说明
了解一下Spring中用了哪些设计模式 TCP的三次握手与四次挥手 免费开源的在线手绘风格白板工具——Excalidraw 这个域名注册整整十年了,十年时间,真快啊 @Valid 和 @Validated 的区别 Ollama:重新定义本地大模型运行的开源革命
最近评论
obaby 发布于 1 天前(09月25日) 中秋快乐
Huo 发布于 2 天前(09月25日) 中秋快乐哦
彬红茶 发布于 2 天前(09月25日) 前几天在班里电脑刷到了,节哀
彬红茶 发布于 2 天前(09月25日) 中秋安康!
不凡 发布于 2 天前(09月25日) 小学的时候是配了个助听器,它是带耳机线的,但是听不太清楚,就好比原本32bit的声音,戴了后变成了8...
标签聚合
K8s IDEA AI编程 Spring MQ Claude 架构 数据库 JAVA SQL 分布式 SpringBoot JVM 日常 ElasticSearch MySQL 多线程 AI WordPress Redis
友情链接
  • lijie blog
  • Serendipity
  • 若梦博客
  • 彬红茶日记
  • 搬砖日记
  • 九仞之行
  • 懋和道人
  • sssr7844的博客
  • 林羽凡
  • 蜗牛工作室
  • 志文工作室
  • 瓦匠个人小站
  • 老张博客
  • Honesty
  • 知向前端
  • 皮皮社
  • 韩情脉脉
  • 临窗旋墨
  • 韩小韩博客
  • Mr.Sun的博客

COPYRIGHT © 2016-2026 lifengdi.com. ALL RIGHTS RESERVED.

lifengdi.com

Domain age badge for lifengdi.com

Theme Kratos-plus By Dylan Li

津ICP备2024022503号-3

京公网安备11011502039375号