上一篇:SpringCloudAlibaba之Nacos环境搭建
Maven依赖信息
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.0.RELEASE</version> </parent> <dependencies> <!-- springboot 整合web组件--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>0.2.2.RELEASE</version> </dependency> </dependencies> |
会员服务(生产者)
@RestController public class MemberService { @Value("${server.port}") private String serverPort; @RequestMapping("/getUser") public String getUser(Integer userId) { return "每特教育,端口号:" + serverPort; } } |
配置文件
application.yml文件
spring: cloud: nacos: discovery: ###服务注册地址 server-addr: 127.0.0.1:8848 application: name: mayikt-member server: port: 8081 |
订单服务(消费者)
@RestController public class OrderService { @Autowired private RestTemplate restTemplate; @Autowired private DiscoveryClient discoveryClient; @Autowired private LoadBalancer loadBalancer; @RequestMapping("/orderToMember") public String orderToMember() { // 从注册中心上获取该注册服务列表 List<ServiceInstance> serviceInstanceList = discoveryClient.getInstances("mayikt-member"); ServiceInstance serviceInstance = loadBalancer.getSingleAddres(serviceInstanceList); URI rpcMemberUrl = serviceInstance.getUri(); // 使用本地rest形式实现rpc调用 String result = restTemplate.getForObject(rpcMemberUrl + "/getUser", String.class); return "订单调用会员获取结果:" + result; } } |
application.yml文件
spring: cloud: nacos: discovery: ###服务注册地址 server-addr: 127.0.0.1:8848 application: name: mayikt-order server: port: 8082 |
负载均衡算法
public interface LoadBalancer { ServiceInstance getSingleAddres(List<ServiceInstance> serviceInstances); } @Component public class RotationLoadBalancer implements LoadBalancer { private AtomicInteger atomicInteger = new AtomicInteger(0); @Override public ServiceInstance getSingleAddres(List<ServiceInstance> serviceInstances) { int index = atomicInteger.incrementAndGet() % 2; ServiceInstance serviceInstance = serviceInstances.get(index); return serviceInstance; } } |
以上内容学习来源于每特教育蚂蚁课堂 http://www.mayikt.com/front/couinfo/247/0#
史上最全的SpringCloudAlibaba课程
https://pan.baidu.com/s/1OHX3B2Q97gn1K6wfZsURLw
密码:00yk