本文将介绍微服务架构和相关的组件 , 介绍他们是什么,以及为什么要使用微服务架构和这些组件 。本文侧重于简明地表达微服务架构的全局图景,因此不会涉及具体如何使用组件等细节 。
要理解微服务 , 首先要先理解不是微服务的那些 。通常跟微服务相对的是单体应用,即将所有功能都打包成在一个独立单元的应用程序 。从单体应用到微服务并不是一蹴而就的,这是一个逐渐演变的过程 。本文将以一个网上超市应用为例来说明这一过程 。
不 BB,详见目录:
文章插图
图片
01 最初的需求几年前,小明和小皮一起创业做网上超市 。小明负责程序开发,小皮负责其他事宜 。当时互联网还不发达,网上超市还是蓝海 。只要功能实现了就能随便赚钱 。所以他们的需求很简单,只需要一个网站挂在公网,用户能够在这个网站上浏览商品、购买商品;另外还需一个管理后台,可以管理商品、用户、以及订单数据 。
我们整理一下功能清单:
1)网站
- 用户注册、登录功能
- 商品展示
- 下单
- 用户管理
- 商品管理
- 订单管理
由于需求简单,小明左手右手一个慢动作,网站就做好了 。管理后台出于安全考虑 , 不和网站做在一起 , 小明右手左手慢动作重播,管理网站也做好了 。总体架构图如下:
文章插图
图片
小明挥一挥手,找了家云服务部署上去,网站就上线了 。上线后好评如潮 , 深受各类肥宅喜爱 。小明小皮美滋滋地开始躺着收钱 。
02 随着业务发展……好景不长,没过几天,各类网上超市紧跟着拔地而起 , 对小明小皮造成了强烈的冲击 。
在竞争的压力下,小明小皮决定开展一些营销手段:
- 开展促销活动 。比如元旦全场打折,春节买二送一,情人节狗粮优惠券等等 。
- 拓展渠道,新增移动端营销 。除了网站外 , 还需要开发移动端App,微信小程序等 。
- 精准营销 。利用历史数据对用户进行分析 , 提供个性化服务 。
- ……
这些活动都需要程序开发的支持 。小明拉了同学小红加入团队 。小红负责数据分析以及移动端相关开发 。小明负责促销活动相关功能的开发 。
因为开发任务比较紧迫,小明小红没有好好规划整个系统的架构,随便拍了拍脑袋 , 决定把促销管理和数据分析放在管理后台里,微信和移动端APP另外搭建 。通宵了几天后 , 新功能和新应用基本完工 。这时的架构图如下:
文章插图
图片
这一阶段存在很多不合理的地方:
- 网站和移动端应用有很多相同业务逻辑的重复代码 。
- 数据有时候通过数据库共享 , 有时候通过接口调用传输 。接口调用关系杂乱 。
- 单个应用为了给其他应用提供接口,渐渐地越改越大,包含了很多本来就不属于它的逻辑 。应用边界模糊,功能归属混乱 。
- 管理后台在一开始的设计中保障级别较低 。加入数据分析和促销管理相关功能后出现性能瓶颈,影响了其他应用 。
- 数据库表结构被多个应用依赖 , 无法重构和优化 。
- 所有应用都在一个数据库上操作,数据库出现性能瓶颈 。特别是数据分析跑起来的时候,数据库性能急剧下降 。
- 开发、测试、部署、维护愈发困难 。即使只改动一个小功能,也需要整个应用一起发布 。有时候发布会不小心带上了一些未经测试的代码,或者修改了一个功能后,另一个意想不到的地方出错了 。为了减轻发布可能产生的问题的影响和线上业务停顿的影响,所有应用都要在凌晨三四点执行发布 。发布后为了验证应用正常运行,还得盯到第二天白天的用户高峰期……
推荐阅读
- 如何实现微服务全链路灰度发布?
- 一文读懂常见的缓存策略
- 微信上,几乎不发朋友圈的男人,并不是低调,多半是这种人
- 微信昵称后面“小耳朵”是干什么用的?我也是刚知道,真的很实用
- 苹果手机微信语音无声音解决攻略
- 微信进一步规范“自媒体”:准确标注信息来源
- 苹果手机微信怎么设置拍一拍名字和文字 苹果手机微信怎么设置拍一拍名字
- 微信憨笑表情包什么意思 微信憨笑表情是啥意思
- 不锈钢可以放微波炉吗 不锈钢饭盒可以放微波炉吗
- 微波炉可以用的容器 微波炉可以用的容器有哪些