上一篇: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