1.首先我们先确认一下,到底啥是微服务?
简单明了就是原来的单体服务,all-in-one的啥都放在一台机器的服务,现在进行拆分成一个个细小的服务,如下图所示:
那么拆分后对比拆分前有什么好处呢? 我们模拟一下真实开发场景
拆分前场景:
支付系统开发A:今晚上线!
评论系统开发A:好!
运维A:好的,我今晚进行部署,大家好,由于支付系统,和评论系统上线,全部服务暂停对外服务!
积分系统等其他开发A: ........,你们系统上线,凭啥我们要暂停对外服务??? 一脸懵???
拆分后场景:
支付系统开发A:今晚上线!
评论系统开发A:好!
运维A:好的,我今晚进行部署,大家好,由于支付系统,和评论系统上线,支付系统,评论系统服务暂停对外服务!
积分系统等其他开发A: 好嘞,你们上吧!
不仅仅服务的暂停, 拆分后优点还有很多,例如:
1.服务之间的技术不受限制,支付系统想用mysql 8 ,ok,你随便用, 我们评论系统MYSQL只用5.7 , 服务拆分了,互不影响.
2.支付系统由于上线接口没有写好,导致调用支付系统的接口都有故障,但是由于拆分了,不会导致整个服务不可用, 对于评论系统来说,与支付无关的接口是可以正常对外提供服务的.
3.代码重复问题.单体应用,你干你的,我干我的,以功能进行维护, 会出现本来相同的代码逻辑,别人会以为你的代码可能会改,然后单独拉出来一套.如果使用微服务,就是各自维护自己的服务,对外提供RPC接口即可.
4.人员维护问题. 单体项目按功能进行区分,代码极度容易出现冲突,维护起来极度麻烦.
5.扩容等其他问题.