什么是微服务
我们原本的部署服务的方式就是将我们的项目打包成一个包,然后直接部署到我们的服务器上,如果有需要,再搞个负载均衡,这样来分担一下服务器的压力。但这样做的坏处就是:所有的东西都放在一个项目中,过于臃肿,而且编译和部署效率低下,如果没有热部署,一旦有更新,就需要停掉整个服务,直到更新结束,如果出现了一个小问题就有可能导致整个服务崩掉。当然也有好处:方便管理,所有代码在同一项目中,虽然部署效率低下,但是对于维护来说,只需要打一个包就够了。
微服务就是将我们的某个具体的业务模块拆分成一个小的服务,其核心就是一个字:拆。比如电商系统里,你可以将商品信息拆分成一个微服务,下订单又是一个微服务,然后支付也是一个微服务。不同的微服务都是一个独立的应用,都只做自己的事,但是当它们合在一起,就是我们需要系统了。微服务的好处就是:
- 松藕合,无论是在开发阶段或部署阶段都是独立的。
- 响应快,而且一个服务出了问题,不影响整个应用。
- 因为开发起来只需要专注于一个微服务,开发起来更简单。
- 易于第三方集成。
微服务也不止是有优点,这样做也是有其缺点的:
- 原本一个项目被拆分成多个微服务,需要部署和维护的服务增加,导致其运维成本也随之增加。
- 原本存放在一个项目的代码拆分成多个,管理复杂性也增加了。
微服务需要解决的问题
- 服务有很多,客户端该怎么访问?
- 这么多服务,它们之间如何通信?又该如何管理?
- 服务挂了该怎么办?
解决方案
常用的微服务框架选型:
- Spring Cloud Netflix
- Dubbo + Zookeeper
- Spring Cloud Alibaba
其实说到底都是为了解决网络不可靠这个问题。