[注1]春クラウド

.Springクラウドについて

  簡単に言えば、春の雲は、現在の枠組みの中で、このようなマイクロサービスなどの分散システム、のセットにコミットしている非常に暑いです。それ自体がフレームの順序集合(複数のモジュール)のシリーズです。

  ダボに比べて多くの違いが残っています。たとえばダボは、APIのRESTfulなRPCサービスフレームワークに基づいており、春のクラウドベースのサービスフレームワークです。ダボそれはバイナリのパスですが、春の雲はようにhttpプロトコルの輸送である、そしてので。

ユーレカの二つ.Springクラウドコンポーネント

  1.Eurekaの役割

    ユーレカと同様の飼育係は、サービスレジストリの役割を果たすことができます

  2.ユーレカ

    ユーレカメインクラスを開くには、注釈春ブーツを追加@EnableEurekaServer(ノートが関連する依存関係を導入する必要があり、以下の依存関係)

<依存性> 
  <のgroupId> org.springframework.cloud </のgroupId> 
  <たartifactId>ばねクラウドスタータのNetflix、ユーレカサーバ</たartifactId> 
</依存>

  3.Eureka設定

    次の設定application.propertiesで

春cloud- = spring.application.name ユーレカ
はserver.port = 8060 
eureka.instance.hostname = localhostを
#サービスセンターがfalseに次のプロパティを表示しなければならない設定
eureka.client.registerWithEureka = falseを
eureka.client.fetchRegistry = 
#アクセスパス
eureka.client.serviceUrl.defaultZone = HTTP:// localhostを:8060 /ユーリカ/

  4.テストサービス

    春のブートプロジェクトを開始し、アクセスポートは、次のインターフェイスを見ることができます

    

  5.サービスプロバイダ

    プロジェクトの下に新しいモジュールのブート春のプロジェクトを作成し、メインカテゴリに注釈を追加@EnableEurekaClient

    設定ファイルに以下の設定を追加

spring.application.name =春-cloud- プロバイダ
はserver.port = 8061 
eureka.client.serviceUrl.defaultZone =のhttp:// localhostを:8060 /ユーリカ/

    サービスセンタープロジェクトを開始した後、サービスプロバイダより、以下に示すようにことがわかっ

    

  6.消費者向けサービス

    春の雲は、2つの方法、すなわち、リボンでサービスコンシューマを作成し、ふりを使用します

    サービスの消費者1.Ribbonの道を作成します。

    (1)最初の関連の依存関係を導入

<依存性> 
  <のgroupId> org.springframework.cloud </のgroupId> 
  <たartifactId>ばねクラウドスタータNetflixのリボン</たartifactId> 
</依存>

    (2)主要なカテゴリーに注釈を追加@EnableDiscoveryClient

    次のように(3)設定ファイルの最後に配置され

spring.application.name =春-cloud- 消費者
はserver.port = 8063 
eureka.client.serviceUrl.defaultZone =のhttp:// localhostを:8060 /ユーリカ/

    (4)サービスプロバイダにおける顧客サービスの呼び出し方法を

    例えば、次のコードは、オブジェクトを作成し、オブジェクトのgetForObjectメソッドを呼び出しRestTemplate

    サービス層

@Service 
パブリッククラスMyServiceで{ 
    @Autowired 
    プライベート; RestTemplate restTemplateを 

    公共の文字列のgetPort(){  //调用服务提供方的方法 restTemplate.getForObjectを返す( "のhttp://春-クラウドプロバイダ:のgetPort"、String.class )。 }  }

    コントローラ層

@RestController 
パブリッククラスMyController { 
    @Autowired 
    プライベートたMyService myServiceという。
( "/のgetPort" @RequestMapping パブリック文字列のgetPortを(){ 戻り)(myService.getPortします。}}

    次のように試験結果であります

    

    あなたは負荷分散ポリシーを設定する必要がある場合は、サービスコンシューマクラスコンフィギュレーションを追加し、他のサービスプロバイダはできるポートを開くことができます

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

    2.Feign的方式创建服务消费者

    (1)首先引入相关的依赖

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

    (2)然后在主类中添加 @EnableFeignClients 和 @EnableDiscoveryClient 注解,配置文件与Ribbon的方式类似

    (3)服务消费者调用服务提供者中的方法

    在service层中的代码如下

@FeignClient(value = "spring-cloud-provider")
public interface MyService {
    @RequestMapping(value = "getPort" , method = RequestMethod.GET)
    public String getPort();

}

    在controller层中的代码如下

@RestController
public class MyController {
    @Autowired
    private MyService myService;

    @RequestMapping(value = "getPort" , method = RequestMethod.GET)
    public String getPort(){
        return myService.getPort(); } }

     由于Feign的方式本身包含有了Ribbon,也实现了负载均衡,面向接口编程,写起来思路更清晰方便,实际开发中应用更广

三.Spring Cloud 熔断器

  1.Ribbon的方式添加熔断器

    (1)导入相关的依赖

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

    (2)在主类中添加 @EnableHystrix 注解开启熔断器

    (3)修改service层中的方法,在方法上添加 @HystrixCommand 注解,例如

    @HystrixCommand(fallbackMethod = "getError")//如果getPort方法执行失败,会直接熔断该方法并执行getError方法(避免浏览器一直去加载)
    public String getPort(){
        //调用服务提供方的方法
        return restTemplate.getForObject("http://spring-cloud-provider:getPort",String.class);
    }
    public String getError(){
        return String.format("获取失败");
    }

  2.Feign的方式添加熔断器

    (1)Feign自带熔断器,但默认是关闭的,可以在application.properties中开启

feign.hystrix.enabled=true

    (2)在service层的接口中添加熔断回调方法(在上面的代码的基础上,在@FeignClient 中添加熔断回调如下,如果出现熔断,则执行接口的实现类中的方法)

@FeignClient(value = "spring-cloud-provider",fallback = MyServiceImpl.class)//如果下面的方法执行失败,会熔断并去执行MyServiceImpl中的方法

    (3)创建接口实现类,例如

@Component
public class MyServiceImpl implements MyService {

    @Override
    public String getPort() {
        return String.format("获取失败");
    }
}

  3熔断监控

    如果需要监控熔断信息,可以做如下步骤

    (1)导入相关依赖

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

    (2)在主类中添加注解 @EnableHystrixDashboard 开启熔断监控,启动项目,并访问/hystrix,页面如下

    

    (3)添加配置类

@Configuration
public class MyConfig {
    @Bean
    public ServletRegistrationBean getServlet(){
        HystrixMetricsStreamServlet streamServlet = new HystrixMetricsStreamServlet();
        ServletRegistrationBean registrationBean = new ServletRegistrationBean(streamServlet);
        registrationBean.setLoadOnStartup(1);
        registrationBean.addUrlMappings("/myhystrix");
        registrationBean.setName("HystrixMetricsStreamServlet");
        return registrationBean;
    }
}

    (4)在页面中输入路径即(ip+端口号+配置类中的addUrlMappings)可查看熔断信息,例如下图

    

 

おすすめ

転載: www.cnblogs.com/ywb-articles/p/11073603.html