微服务面试笔记(一)
一、什么是微服务?
微服务是SOA架构的一种变体,它提倡将单一的系统拆分成一组小服务,每个服务之间通过轻量级通信机制互相沟通。
相比于单体应用,微服务可以使得整个系统的耦合度降低,减少服务器资源浪费,提高系统的容错率,使得开发更加敏捷。
缺点:微服务相对于单体应用,系统的复杂度更高,对开发人员的技术要求也更高。
二、什么是服务降级?
服务降级就是去降低一个服务的能力等级,是提升系统稳定性和可用性的一种策略。当服务器压力增加的时候,根据实际业务的需求和流量情况,临时关闭一些非核心业务,释放服务器的资源,去保证核心业务的稳定运行。
服务降级有两种方式:
主动降级:
一般是人工预先有规划性的降级,比如说双十一的电商平台,核心业务是支付,所以为了保证双十一当天的支付系统的稳定性,就会把其他非核心业务的资源降低,例如把评论、退款等服务的资源降低。
被动降级:
有两种情况会触发被动降级,一种是熔断触发,另一种是限流触发。其实无论是限流还是熔断,最后都会把一个相对友好的结果返回给客户端,比如说“系统繁忙”之类的默认请求结果,这个结果就是一种降级策略。
三、如何把一个单体应用拆分成微服务?
1、保持高内聚低耦合、职责单一的原则,根据系统中的功能具体拆分,服务粒度要适中,不能太细,比如一个接口一个服务这样就是不对的;
2、根据业务模型切入,将一个或者几个功能合并成一个服务,比如订单、支付合并成一个订单支付服务;
3、演进式拆分,比如一开始像2中设计把订单和支付规划在一个服务内,但是由于后期订单和支付各自的功能越来越多,两个功能之间的耦合越来越大,这个时候就可以将订单、支付各自拆分成单独的服务。