如果你经历过快速迭代业务,经历过用户量不断上涨,经历过访问并发越来越大,你一定会遇到以下系统问题:
- 用户访问页面越来越慢
- 系统性能下降,数据库扛不住,连接数经常打满,最终数据库挂掉,重启后又快速挂掉
- 改了一个小地方,另外一个看似不相干的地方却挂了,严重耦合
业务早期,最常见的场景是什么?
虚拟一个类似于“AJK”租房买房的业务场景,这个业务的数据有两大来源:
- 用户发布的数据
- 爬虫抓取来的数据
- 普通用户,浏览与发布数据,俗称“前台用户”
- 后台用户,运营与管理数据,俗称“后台用户”
文章插图
在创业公司,为了快速迭代,系统架构如上:
- web层:前台web,后台web
- 任务层:抓取数据
- 数据层:存储数据
系统两类数据源,一类是用户发布的数据,一类是爬虫抓取的数据,两类数据的特点不一样:
- 自有数据相对结构化,变化少
- 抓取数据源很多,数据结构变化快
- 抓取数据结构变化
- 需要修改数据结构
- 影响前台用户展现
- 经常被动修改前台用户展现逻辑,配合抓取升级
耦合的根本原因,是数据层的耦合 。
应该怎么优化?
优化思路:前台展现数据,后台抓取数据分离,解耦 。
文章插图
如上图所示:
- 前台展现的稳定数据,库独立
- 后台抓取的多变数据,库独立
- 任务层新增一个异步转换的任务
- 频繁变化的抓取程序,以及抓取的异构数据存储,解耦
- 前台数据与web都不需要被动配合升级
- 即使出现问题,前台用户的发布与展现都不影响
微服务架构,服务耦合的新问题是什么?
上面解决了不同数据源写入的耦合问题,再来看看前台与后台用户访问的耦合问题 。
用户侧,前台访问的特点是:
- 访问模式有限
- 访问量较大,DAU不达到百万都不好意思说是互联网C端产品
- 对访问时延敏感,用户如果访问慢,立马就流失了
- 对服务可用性要求高,系统经常用不了,用户还会再来么
- 对数据一致性的要求高,关乎用户体验的事情就是大事
- 访问模式多种多样,运营销售各种奇形怪状的需求,大批量分页的,模糊搜索的
- 用户量小,访问量小
- 访问延时不这么敏感,大批量分页,几十秒能出结果,也能接受
- 对可用性能容忍,系统挂了,10分钟之内重启能回复,也能接受
- 对一致性的要求始终,晚个30秒的数据,也能接受
文章插图
前台和后台的模式与访问需求都不一样,但是,如果前台与后台混用同一套服务和结构化数据,会导致:
- 后台的低性能访问,对前台用户产生巨大的影响,本质还是耦合
文章插图
- 随着数据量变大,为了保证前台用户的时延,质量,做一些类似与分库分表的升级,数据库一旦变化,可能很多后台的需求难以满足
应该怎么优化?
优化思路:冗余数据,前台与后台服务与数据分离,解耦 。
文章插图
如上图所示:
- 前台和后台独立服务与数据,解耦
- 如果出现问题,相互不影响
推荐阅读
- 茶油的作用有哪些,陈年茶油的功效与作用
- 茶梅盆景怎么造型好看,宜兴壶古典造型与现代造型
- 茶多酚的功效与作用,梨山乌龙茶的功效与作用
- 陈年茶油的功效与作用,陈年铁观音茶制作及保健功效先容
- 花茶的功效与作用:春天里女性应喝4种花茶
- 法国香水茉莉,茉莉茶叶的功效与作用是什么
- 淘宝开店技巧与经验 开淘宝店的注意事项
- 陈茶翻新内幕,怎样辨别新茶与陈茶
- 岛普洱茶的冲泡,张祜凤翔西池与贾岛纳凉茶事作品鉴析
- 关于“巴旦木”的营养价值与禁忌,早知道早受益