上一篇: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;
/**
* 会员服务提供的接口
*
* @param userId
* @return
*/
@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 {
/**
* 根据多个不同的地址 返回单个调用rpc地址
*
* @param serviceInstances
* @return
*/
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