微服务面试笔记(一)

一、什么是微服务?

微服务是SOA架构的一种变体,它提倡将单一的系统拆分成一组小服务,每个服务之间通过轻量级通信机制互相沟通。

相比于单体应用,微服务可以使得整个系统的耦合度降低,减少服务器资源浪费,提高系统的容错率,使得开发更加敏捷。

缺点:微服务相对于单体应用,系统的复杂度更高,对开发人员的技术要求也更高。

二、什么是服务降级?

服务降级就是去降低一个服务的能力等级,是提升系统稳定性和可用性的一种策略。当服务器压力增加的时候,根据实际业务的需求和流量情况,临时关闭一些非核心业务,释放服务器的资源,去保证核心业务的稳定运行。

服务降级有两种方式:

主动降级:

一般是人工预先有规划性的降级,比如说双十一的电商平台,核心业务是支付,所以为了保证双十一当天的支付系统的稳定性,就会把其他非核心业务的资源降低,例如把评论、退款等服务的资源降低。

被动降级:

有两种情况会触发被动降级,一种是熔断触发,另一种是限流触发。其实无论是限流还是熔断,最后都会把一个相对友好的结果返回给客户端,比如说“系统繁忙”之类的默认请求结果,这个结果就是一种降级策略。

三、如何把一个单体应用拆分成微服务?

1、保持高内聚低耦合、职责单一的原则,根据系统中的功能具体拆分,服务粒度要适中,不能太细,比如一个接口一个服务这样就是不对的;

2、根据业务模型切入,将一个或者几个功能合并成一个服务,比如订单、支付合并成一个订单支付服务;

3、演进式拆分,比如一开始像2中设计把订单和支付规划在一个服务内,但是由于后期订单和支付各自的功能越来越多,两个功能之间的耦合越来越大,这个时候就可以将订单、支付各自拆分成单独的服务。

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务