我们在了解微服务的同时,也可以了解一下和它不一样的单体式应用以做区分
单体式应用
当我们独立开发一个网站的时候,我们的步骤是怎么样的,将代码用IDE打包成war包,然后将war包放到Tomcat上进行发布,用户就可以访问了。这种应用就是典型的单体式应用,当并发量多的时候,你也许会选择用Nginx做负载均衡,多租几台服务器将之前的war包用同样的方式在每台服务器上进行发布,其本质依然是单体式应用。当我们的项目不断发展,代码数量足够多的时候,我们就遇到了一个问题,比如我希望在用户注册时多加一个年龄信息,我需要在几百万行代码中找到相关代码并且还需要查找其他逻辑中是否有与之相关的代码需要修改,然后再花费很长很长的时间进行打包放到Tomcat中进行发布,光这个简单的修改就已经增加了很多很多维护的时间及精力成本,但对于企业来讲如果要修改一个业务逻辑,将会是十分痛苦的事情,单体式应用发展到这一步就不再适合了。
微服务
按业务拆分服务,就是水平拆分,在技术层面的前后分离,属于垂直拆分,横纵一起切,就把单体式应用拆分成了网状块的小应用,这就是微服务中“微”思想的体现。有一个词大家需要重点注意,就是“小应用”,微服务的最小单元是一个一个的小应用,每一个应用都包含了各种完备的业务逻辑、数据库、API之类,这才称为小应用。当我们要用户注册多加一个年龄信息时,只需要在与用户有关的小应用中进行单体式应用的修改和部署就可以,这就大大减少了运维的时间精力成本。