前言
微服务是一种服务架构模式,目标是架构师的话,当然不能放过这个知识点。
架构模式
一般的项目架构有两种形式:单体应用和微服务。
单体应用
单体应用就是用一套代码实现全部功能。
微服务
微服务就是把单体应用的代码按照功能拆分出来,形成多套独立的代码,通过某种方式让它们连接在一起,实现完整功能。
单体应用好比早期的网站开发,用 PHP 搭建的网站:
1 | <html> |
HTML 代码与 PHP 代码混合在一起。
而随着技术的发展,又推出了 MVC 模式,实现模型、视图、控制器的分离。
然而问题的本质依然没有改变,还不是要一个人去完成同样的工作?
技术从未停下发展的脚本,职业的分工越来越明确,开始出现专门写 HTML 和 JavaScript 的前端人员和专门写 PHP 代码的后端人员,前端人员通过一项技术“Ajax”调用后端人员写的接口,使他们看似分离但却紧紧的联系到一起,共同实现一个完整的项目。
这样的分工方式就叫做微服务。
微服务架构
比如有一套系统,包括如下业务:
把这些业务拆分出来,单独做成一套系统,然后以某种方式让独立的项目之前能够进行通信,这就完成了一套微服务架构。
微服务通信模式
HTTP 通信
RPC 通信
消息队列
微服务的优缺点
优点
- 大型项目解耦,提高整体性能
- 每个服务都很小,开发人员可以聚焦自己负责的功能模块。
- 只需要极少的人来维护一套代码
- 可以用不同的语言开发
缺点
- 架构需要花费一定的精力,如果架构得不好,后期反而会变成麻烦
- 由于服务分散成很多个,因此难以快速定位错误
- 管理成本提高