面试时候,一个面试官问:为什么要采用微服务架构?
我说了一通网上百度到的,他还是不满意。
https://www.jianshu.com/p/b9e58893bbc0
网上很多都说了 微服务 的优点,但是都不是最关键的, 因为 很多问题,对单体应用来说,都不是致命的,都是可以接受的。
面试官说最关键最主要原因是: 高并发
没有高并发,去搞微服务架构都没有这个必要性,单体用得好好的,去搞微服务架构好处不多。
思考
开始的时候觉得很有道理,面试之后认真想了一下,其实我认为是不对的,
因为 单体架构 使用集群的方式也是可以支撑高并发的,比如淘宝使用集群也可以支撑这样的。
如果最关键是 高并发的话,肯定是 不对的。
我认为最关键是 服务之间的治理, 将 单体架构拆分之后, 可以针对 每个服务的 功能 进行相应的配置优化,
拆分之后的微服务可以都是类似人一样,是有他的个性和特色,优势,特长,天赋,短板,缺点。
当然拆分之后,微服务之间的职责也更加的明确,
比如 某个 微服务 可能有高并发, 某个微服务 IO 这块处理 很多 等等。
这样就可以 针对每个微服务给不一样的 处理和配置。
将 整个 微服务 系统的处理能力,性能达到 最高效。
虽然微服务 看起来比较麻烦,需要投入也很多。
但是 相对复杂臃肿的 单体架构来说,
治理好微服务 之后,
收益 (开发上面的收益啊,或者业务上面的支持上等)肯定完爆单体
所以微服务最难的就是 治理了, 治理不好微服务,那确实不如单体。
进一步思考
面试官为什么说 最关键原因是高并发?
其实 从他的角度来说可以说是没有错的。
因为他所在的公司就是 要处理高并发的问题, 高并发 会带来一系列问题,
重点难点也是高并发。
所以 将 单体架构 改为微服务架构 来 解决高并发这样难题。
所以这是他认为的微服务 最关键是高并发。
因此 高并发是 将单体架构改为微服务架构的原因之一,每一家公司遇到的问题都不一样。而微服务架构又可以处理很多问题
问: 什么时候适合改造为微服务架构?比如单体项目庞大到怎样的才适合改造为微服务?
- 投入产出比, 项目比较重要,有价值才改造
- 团队的人数和技术能够hold 住 分布式技术,公司不能穷,公司能够承受微服务改造的投入成本,包括时间成本
- 单体架构 有 高并发,很高的并发,或者预估未来有很高的并发
- 单体架构 数据量很大,大到了 分库的地步,多数据源,比如 写写2个数据源
- 单体项目 涉及到 挺多分布式问题的,比如分布式缓存,分布式事务,分布式锁等
- 最重要的指标: 部署 单体项目的 服务集群,比如Tomcat 集群 超过了3个 服务数以上的时候,都可以考虑了。
总结
为什么要使用微服务架构?答案是:为了服务治理
高并发问题,等其他问题 造成单体服务太难以把控和治理了,而随着时间的推移单体服务将会越来越难以维护和治理,
因此引入了 相对复杂的微服务架构 来 治理 更复杂的 服务
康威定律与微服务
微服务有一个康威定律 来支撑,是必然趋势。
其实不需要康威定律, 古人已经早就给我们准备好了 理论 支撑:
一生二,二生三,三生万物
古人的理论,多么简单的 阐述了 单体架构到 微服务架构演变的过程啊!