通常介绍一个知识点,应该是从【是什么】→【为什么】→【怎么用】这三点,递进式说明。
今天咱们先从【为什么】开始说,为的是让大家能更生动形象的理解微服务的概念。
进入正题,我们先举个生活中的例子。
为什么要用微服务
传统单体项目
业务逻辑都是混在一个项目中。
【如左图的老王小吃】
点菜,做饭,收钱 全部由一个人一条龙服务。
生意做大点,雇个人,被雇佣的员工也是要负责点菜,做饭,收钱。
好处是:成本低。
弊端是:
1.同时来了几位客人,给第一个点完菜,还不能马上去做饭,需要给第二位客人点菜。。。然后再逐一做。。。客人等待时间较长
2.万一有点儿事,餐馆就不能正常营业了。
微服务项目
按照业务/功能拆分为多个小服务。每个小服务只负责一块业务。
这些服务间进行协作,完成整个系统功能。
【如右图的大餐厅】
服务员负责点菜,厨师负责做饭,收银员负责结账。
服务员,厨师,收银员 可以看成3个微服务。这3个微服务一起协作,完成整个流程。
好处是,
1.彼此之间各司其职。哪类员工不够就单招哪类员工。(增加某个微服务部署的数量)
如果服务员中有一个请假,最多其他服务员忙一点,分担一下服务员工作。不会影响到厨师和收银。
2.客人多了,服务员给第一位客人点完菜,交给厨师去做饭,服务员就可以去为第二位客人点餐了。
客人等候时间短。
弊端:成本高。
接下来,我们回到开发中,用术语来给微服务下个定义。
微服务是什么
我的理解
把传统的单体项目,按照功能业务划分为多个小的服务,每个服务都是独立运行的单体项目。
项目间利用HTTP API进行通信。协作完成整套业务逻辑。
各个服务可以采用不同的开发语言及数据库实现。服务间是松耦合的。
各教育平台的解说
-
把一个单独的应用程序开发为一套小服务。
-
每个小服务独立运行在自己的进程中。
-
服务间使用轻量级机制(HTTP API)通信。
-
这些服务围绕业务能力来构建。
-
通过完全自动化部署机制来独立部署。
-
各个服务可以使用不同的编程语言,不同的数据库来实现。
-
保持最低限度的集中式管理。——松耦合
补充:易混淆概念——微服务是架构设计方式,分布式是系统部署方式。集群则是物理形态。微服务是在 SOA 上做的升华。
怎么用
身为一个Java开发者,目前比较主流的是用SpringCloud实现微服务框架。
SpringCloud提供了一套微服务解决方案(很多微服务相关组件,后期逐一学习),
大大降低了创建微服务项目的门槛。