什么是微服务
在聊微服务之前,我们先说单体应用,对比着看
- 单体应用,所有的模块都包含在一个项目中,发布时打成一个包,部署在单个服务器上
- 缺点:系统耦合度过高,灵活性差
- 微服务,将每个模块拆分成独立的项目,发布时每个项目打一个包,部署在多个服务器上
- 优点:耦合度低,灵活性好。开发时每个模块可以用不同编程语言。部署的时候在多态服务器上容灾性好。维护的时候只需要维护出问题的模块。
微服务需要解决的问题
- A服务如何调用B服务的方法,就是服务之间的通信
- 我该怎么知道有哪些服务,就是服务的注册与发现
- 有个服务挂掉怎么办,总不能服务雪崩吧,就是服务熔断和服务降级
- 客户端怎么知道我使用的这个功能,该去访问哪个服务,就是服务网关
微服务框架
谁能解决以上的问题,谁就是微服务的具体实现,常见的框架有
- Dubbo + Zookeeper:只解决了服务通信和服务注册与发现,不是一站式解决方案
- SpringCloud NetFilx:一站式解决方案,但是已经停止更新
- SpringCloud alibaba:一站式解决方案,因为是大厂研发,并且仍然更新,所以当下最流行