经过上一篇系统性的介绍 Spring Cloud 及 Spring Cloud Alibaba 项目,相信你已经对这两个项目有个整体直观的感受,本篇开始正式进入本课程的第二部分,一起进入业务的开发阶段。
服务调用问题
在分析业务需求时,其中有个简单的功能点:会员可以开通月卡,开通月卡的同时,需要增加相应的积分。开通月卡功能在会员服务模块维护,但增加积分功能在积分服务模块维护,这就涉及到两个模块间的服务调用问题。
单实例情况:可以采用点对点的 HTTP 直接调用,采用 IP + Port + 接口的形式进行。也可以对外暴露 WebService 服务供外部模块调用,但 WebService 的形式 显示比 HTTP的形式稍重一些,在实际的业务开发过程中,越来越的产品开发采用轻量级的 HTTP 协议进行数据交互。如果模块增多,将会形成蜘蛛网的形式,非常不利于开发维护。
多实例的情况:为应对服务的压力,采用多实例集群部署已成为简捷易用的解决方案。仅仅多实例部署后,直接面临一个问题,调用方如何知晓调用哪个实例,当实例运行失败后,如何转移到别的实例上去处理请求?如果采用了负载均衡,但往往是静态的,在服务不可用时,如果动态的更新负载均衡列表,保证调用者的正常调用呢?
面对以上两种情况,