天天看點

SpringCloudAlibaba之Nacos實作服務注冊與發現Maven依賴資訊

上一篇:SpringCloudAlibaba之Nacos環境搭建

SpringCloudAlibaba之Nacos實作服務注冊與發現Maven依賴資訊

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

繼續閱讀