春の雲アリババ(a)はサービス登録と発見ナコスを使用する方法

ナコスはじめに

ナコスを設定する、あなたは発見に努め、およびマイクロ管理サービス。ナコスはすぐに動的サービス発見、サービス構成、サービスのメタデータおよびトラフィック管理を実現するに役立つ機能の使いやすいセットのセットを提供します。

ナコスでは、より迅速かつ容易にマイクロサービスプラットフォームを構築、提供および管理を支援します。ナコスは、(マイクロ・サービスのパラダイム、クラウドネイティブパラダイムとして)最新のアプリケーション・アーキテクチャーサービス基盤の中心として「サービス」を構築することです。

ナコスの主要な特徴

  • サービス検出およびヘルスモニタリングサービス
  • 動的構成サービスは、管理インターフェイスで、豊富な設定寸法のためにサポートしています。
  • ダイナミックDNSサービス
  • サービスとメタデータ管理

ナコスダウンロードして展開

公式記述文書:ナコスクイックスタートまたはダウンロードzipパッケージは、展開のダウンロードを

展開のまとめ中に発生したWindows環境問題

JDKのバージョン要件

注意を払う必要があり、JDKのバージョンは64ビットJDKが必要です1.8+

実行時エラー

つかの間、STARTUP.CMD実行します。STARTUP.CMDスクリプトを開き、エラーが次のエラーメッセージを見つけ、その後、最後の行でエラーメッセージを確認するために、すぐに簡単に終わらないように一時停止を追加します。

Exception in thread "main" java.lang.UnsupportedClassVersionError: org/springfra
mework/boot/loader/PropertiesLauncher : Unsupported major.minor version 52.0
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:14
2)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
        at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)

これらの問題の原因は、私は、JDK 1.7を使用してコンピュータ上でいくつかの古いプロジェクトを持っているということなので、このプロジェクトは、jdk1.7とjdk1.8使用を交差させています。CMDのViewバージョンのjava -versionの出力は、1.8.0_211は(唯一、最高出力バージョン)があります

ソリューション

  • JAVA_HOMEを設定するには、次の投稿私のJava環境変数、Baiduのに必要な方法を、独自の環境変数を追加するには、jdk1.8環境変数を増やします
C:\Users\Administrator>set java_home
JAVA_HOME=D:\Program Files\Java\jdk1.7.0_71

C:\Users\Administrator>set java8_home
JAVA8_HOME=D:\Program Files\Java\jdk1.8.0_201

C:\Users\Administrator>
  • 調整STARTUP.CMDスクリプト、java8_home変数を使用するのではなく、それが正しいjdk1.8のjdk1.7を呼び出すことができるように、以下の調整は、コードの一部であります
if not exist "%JAVA8_HOME%\bin\java.exe" echo Please set the JAVA8_HOME variable in your environment, We need java(x64)! jdk8 or later is better! & EXIT /B 1
set "JAVA=%JAVA8_HOME%\bin\java.exe"

ここだけ交換する、JAVA8_HOMEに元JAVA_HOME計画、実行STARTUP.CMDは、この時間は、適切なサービスナコスを実行します

表示インタフェース

訪問するブラウザで正常に起動します。http:// localhost:8848 /ナコス、パスワードもナコスで、デフォルトのログインユーザ名はナコス、ログイン画面にジャンプします。

成功した着陸したら、管理インタフェースを操作することができます

ナコスサービスの登録と発見を使用します

ナコスを使用するには、我々はのpom.xmlに必要な依存関係を追加する必要があります

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Greenwich.SR3</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.1.0.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

サービスレジストリと発見のサンプルコードを作成します。

この場合、3つのサービスの利用は、サービスプロバイダアリナコス・プロバイダに対して、それぞれ、ナコスに登録し、リボン消費者アリ・ナコス消費者リボン、宣言型サービスコール装う消費者アリナコス消費者のロードバランシング-feign。

どのようなリボンで、装う、例を使用して、ここでは繰り返さ紹介されていない、あなたがすることができます知っている必要がありますの例を参照してください

サービスプロバイダアリナコスプロバイダを作成します。

ナコスはのpom.xmlを頼りに追加

    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>

application.yml設定

server:
  port: 9000  #指定为9000端口

spring:
  application:
    name: ali-nacos-provider  #服务名
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848 #服务注册地址(nacos默认为8848端口)

management:
  endpoints:
    web:
      exposure:
        include: '*'

クラス増加@EnableDiscoveryClientコメントを開始します

package com.easy.aliNacosProvider;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@EnableDiscoveryClient
@SpringBootApplication
public class AliNacosProviderApplication {

    public static void main(String[] args) {
        SpringApplication.run(AliNacosProviderApplication.class, args);
    }
}

ハローサービスインタフェースHelloController.javaを書きます

package com.easy.aliNacosProvider;

import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

@RestController
@Slf4j
public class HelloController {
    @GetMapping(value = "/hello/{str}", produces = "application/json")
    public String hello(@PathVariable String str) {
        log.info("-----------收到消费者请求-----------");
        log.info("收到消费者传递的参数:" + str);
        String result = "我是服务提供者,见到你很高兴==>" + str;
        log.info("提供者返回结果:" + result);
        return result;
    }
}

サービスコンシューマリボンを作成します。

pom.xmlとリボン依存性増加のnocos

    <dependencies>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
        </dependency>

    </dependencies>

application.yml

server:
  port: 9100

spring:
  application:
    name: ali-nacos-consumer-ribbon
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848

サービスコールHomeController.java

package com.easy.ancRibbon;

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

@RestController
@Slf4j
public class HomeController {
    @Autowired
    private RestTemplate restTemplate;

    @GetMapping(value = "/", produces = "application/json")
    public String home() {
        log.info("-----------------consumer调用开始-----------------");
        String param = "云天";
        log.info("消费者传递参数:" + param);
        String result = restTemplate.getForObject("http://ali-nacos-provider/hello/" + param, String.class);
        log.info("收到提供者响应:" + result);
        return "ribbon消费者," + result;
    }
}

クラスAncRibbonConsumerApplication.javaを有効にします

package com.easy.ancRibbon;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

@SpringBootApplication
@EnableDiscoveryClient
public class AncRibbonConsumerApplication {

    @Bean
    @LoadBalanced
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }

    public static void main(String[] args) {
        SpringApplication.run(AncRibbonConsumerApplication.class, args);
    }

}

サービスの消費者のふりを作成します。

pom.xml

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
    </dependencies>

application.yml

server:
  port: 9101

spring:
  application:
    name: ali-nacos-consumer-feign
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
  main:
    allow-bean-definition-overriding: true  #允许一样的beanName

ここで許可豆精細・オーバーライドがtrueに設定されている場合、次のエラーが報告されます実行することを注意することが次のピットは、次のとおりです。

错误: Consider renaming one of the beans or enabling overriding by setting spring.main.allow-bean-definition-overriding=true

詳細に問題があり、問題の原因は、

アプリケーションサービスHelloService.java

package com.easy.ancFeign;

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

@FeignClient("ali-nacos-provider")
public interface HelloService {

    @RequestMapping(path = "hello/{str}")
    String hello(@RequestParam("str") String param);

}

サービスコールHomeController.java

package com.easy.ancFeign;

import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@Slf4j
public class HomeController {

    @Autowired
    private HelloService helloService;

    @GetMapping(value = "/", produces = "application/json")
    public String home() {
        log.info("-----------------consumer调用开始-----------------");
        String param = "云天";
        log.info("消费者传递参数:" + param);
        String result = helloService.hello(param);
        log.info("收到提供者响应:" + result);
        return "feign消费者" + result;
    }
}

クラスAncFeignConsumerApplication.javaを開始

package com.easy.ancFeign;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;

@SpringBootApplication
@EnableFeignClients(basePackages = {"com.easy.ancFeign"})
public class AncFeignConsumerApplication {
    public static void main(String[] args) {
        SpringApplication.run(AncFeignConsumerApplication.class, args);
    }
}

使用例

次のように既存の3つのプロジェクトがあります

アリナコス-プロバイダ:サービス・プロバイダー、サービス名:アリ-ナコス・プロバイダ、ポート:9000
アリ-ナコス-消費者-リボン:リボンのサービス利用者、サービス名:アリ-ナコス消費者リボン 、 ポート:9100
アリナコス-消費者装う:装うアリナコス-消費者装う:消費者、サービス名 、 ポート:9101を

テストを実行

サービスレジストリはナコス始めよ
第二に、アリ-ナコス-提供開始した、ali-ナコス-消費者リボン、アリ-ナコス-消費者装うの3つのサービスを

  • アクセスアドレスます。http:// localhost:9100 /リターン:リボン消費者、私はリボンの消費量の成功を示す、==>空をはじめまして、サービスプロバイダです。
  • アクセスアドレスます。http:// localhost:9101 /リターン:私は消費者のコストが成功を装うことを示す、==>空をはじめまして、サービスプロバイダ午前消費者を装います。
  • アクセスアドレスます。http:// localhost:9000 /こんにちは/ yuntian、リターン:私は、サービスプロバイダです、はじめましては==> yuntian、成功へのサービスプロバイダのアクセスの説明(PS:サービスプロバイダは、一般的に外国ではありませんインタフェースは、次の記事で紹介されますか微妙な公共、)
  • アクセスアドレスます。http:// localhost:8848 /ナコス/#/ログイン、ユーザーを入力します。ナコス、パスワード:ナコス。あなたは私たちが3つのサービスを実行するサービスのリストを見ることができます - サービス管理におけるサービス管理インターフェイスを入力します。

データ

おすすめ

転載: www.cnblogs.com/tqlin/p/11697670.html