在上篇文章《服务注册与发现(Nacos)和远程调用(RestTemplate)》的基础上,集群服务提供者。
线上环境只需要修改端口即可,此处是在Idea中演示,所以端口取环境设置中的变量,application.yml文件会有所改变
1、Idea中服务提供者集群配置
1、在Idea上方下拉选择Edit Configurations
2、点击选中服务提供者cloud-demo1,修改名字(可以不修改,此处是为了方便标识)。
在Environment的VM options中输入:“-Dport=9001”,表示端口为9001
3、点击选中刚才修改服务提供者,点击复制,同理修改名字,在Environment的VM options中输入:-Dport=9002,表示端口为9002。
点击apply,Ok,到此,Idea中服务集群配置完成
2、 修改服务提供者cloud-demo1
1、修改application.yml文件
修改前
修改后,表示取环境设置中的端口(server.port: ${port:8080}),如果环境设置中不存在端口,则取端口为:8080
2、修改Controller
为了清楚的知道是调用了哪个集群中的哪一个服务,此处将端口注入并返回
import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; /** * ===================================================== * 服务提供者:对外暴露的接口 * @author 汐小旅Shiory * @date 2021/12/5 14:31 * ===================================================== */ @RestController @RequestMapping("/demo1/api") public class Demo1ApiController { @Value("${server.port}") private String port; @GetMapping("/callTest") public String callTest(@RequestParam(name = "serverName") String serverName) { String result = "我是服务提供者,我被服务" + serverName + "调用了!端口:" + port; return result; } }
3、测试
1、前提:nacos已经启动
2、在步骤1中集群配置的位置,下拉选中服务,点击启动,将两个服务提供者和一个服务消费者一一启动。
3、 登录nacos,查看服务是否注册到Nacos。可以看到cloud-demo1有 2 个实例,并且都是健康可用的。点击详情进去可以看到集群服务的信息,端口分别是9001和9002
4、发起请求(请求cloud-demo2中的接口,cloud-demo2接口中远程调用cloud-demo1中的接口)
随便访问几次,可以看到是轮询访问集群的服务提供者。cloud-demo1服务被交替访问