微服务架构简单来说就是采用一组服务的方式来构建一个应用,服务独立部署在不同的进程中,不同服务通过一些轻量级交互机制来通信,例如 RPC、HTTP 等。

服务可独立扩展伸缩,每个服务定义了明确的边界,不同的服务甚至可以采用不同的编程语言来实现,由独立的团队来维护。

为什么要用微服务?

  1. 微服务可扩展性好

    传统的一体化应用想要扩容,需要同时部署多个示例,再通过 Nginx 甚至 DNS 的层面来配置负载均衡,但是这样的情况下,如果系统中只是某个部分需求过大(例如商城系统的订单功能)这时启动整个项目就会造成一定的资源浪费。

    如果使用微服务部署项目的话,我们可以将不同的功能拆分成不同的微服务模块。当遇到性能瓶颈的时候,我们只需要将单个服务进行性能扩展就可以了,减少资源开销。

  2. 降低业务耦合度、方便异构开发

    单体服务的缺点在于耦合度太高,例如如果系统中出现了一处故障,可能会导致整个系统不可用。而微服务在设计的时候要考虑模块的单一化职责,将业务的耦合度降到最低,也利于开发和维护。

    微服务系统下不同的模块可以使用不同的语言进行开发。例如如果使用 Consul 做服务注册和发现,那么其对 Spirng Boot 和 Golang 的支持都是比较好的。

一定要用微服务吗?

微服务