Java教程

【博学谷学习记录】超强总结,用心分享|狂野架构师springCloud常用知识(一)

本文主要是介绍【博学谷学习记录】超强总结,用心分享|狂野架构师springCloud常用知识(一),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

概念

Spring Cloud只是将各家公司开发的比较成熟、经得起实际考验的服务框架组合起来。

通过 Spring Boot 风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单

易懂、易部署和易维护的分布式系统开发工具包。

Spring Cloud 和dubbo对比

Spring Cloud 与 Dubbo 都是实现微服务有效的工具。

Dubbo 只是实现了服务治理,而 Spring Cloud 子项目分别覆盖了微服务架构下的众多部件。

Dubbo 使用 RPC 通讯协议,Spring Cloud 使用 RESTful 完成通信,Dubbo 效率略高于 Spring

Cloud。

Eureka Server搭建

引入依赖

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <project.reporting.outputEncoding>UTF- 8</project.reporting.outputEncoding> 
    <java.version>1.8</java.version> 
    <!--spring cloud 版本--> 
    <spring-cloud.version>Greenwich.RELEASE</spring-cloud.version> 
</properties> 
<!--引入Spring Cloud 依赖--> 
<dependencyManagement> 
    <dependencies> 
        <dependency> 
            <groupId>org.springframework.cloud</groupId> 
            <artifactId>spring-cloud-dependencies</artifactId> 
            <version>${spring-cloud.version}</version> 
            <type>pom</type> 
            <scope>import</scope> 
        </dependency> 
    </dependencies> 
</dependencyManagement>

配置

server: port: 8761 
# eureka 配置 
# eureka 一共有4部分 配置 
# 1. dashboard:eureka的web控制台配置 
# 2. server:eureka的服务端配置 
# 3. client:eureka的客户端配置 
# 4. instance:eureka的实例配置 
eureka: 
	instance: 
		hostname: localhost # 主机名 
	client: 
		service-url: 
			defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka 
# eureka服务端地址,将来客户端使用该地址和eureka进行通信
	register-with-eureka: false # 是否将自己的路径 注册到eureka上。eureka server 不需 要的,eureka provider client 需要 
	fetch-registry: false # 是否需要从eureka中抓取路径。eureka server 不需要的,eureka consumer client 需要

Eureka Client

<dependencies> 
<!--spring boot web--> 
<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-web</artifactId> 
    </dependency> <!-- eureka-client --> <dependency> 
    <groupId>org.springframework.cloud</groupId> 
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> 
    </dependency> 
</dependencies>

生产者配置文件

server: 
	port: 8001 
eureka: 
	instance: 
		hostname: localhost # 主机名 
	client: 
		service-url: 
			defaultZone: http://localhost:8761/eureka # eureka服务端地址,将来客户端使用该地 址和eureka进行通信 
spring: 
	application: 
		name: eureka-provider # 设置当前应用的名称。将来会在eureka中Application显示。将来需 要使用该名称来获取路径

在启动类上注解@EnableEurekaClient

@EnableEurekaClient 
@SpringBootApplication 
public class ConsumerApp {
    public static void main(String[] args) { 
        SpringApplication.run(ConsumerApp.class,args); 
    } 
}

消费者配置文件

server: 
	port: 9000 
eureka: 
	instance: 
		hostname: localhost # 主机名 
	client: 
		service-url: defaultZone: http://localhost:8761/eureka # eureka服务端地址,将来客户端使用该地 址和eureka进行通信 
spring: 
	application: 
		name: eureka-consumer # 设置当前应用的名称。将来会在eureka中Application显示。将来需 要使用该名称来获取路径

Feign

微服务之间的调用

/**** feign声明式接口。发起远程调用的。 
*String url = "http://FEIGN-PROVIDER/goods/findOne/"+id; Goods goods = restTemplate.getForObject(url, Goods.class); 
*
* 1. 定义接口 
* 2. 接口上添加注解 @FeignClient,设置value属性为 服务提供者的 应用名称 
* 3. 编写调用接口,接口的声明规则 和 提供方接口保持一致。 
* 4. 注入该接口对象,调用接口方法完成远程调用 
*/ 
@FeignClient(value = "FEIGN-PROVIDER") 
public interface GoodsFeignClient { 
    @GetMapping("/goods/findOne/{id}") 
    public Goods findGoodsById(@PathVariable("id") int id); 
}

一般设置超时时间,防止堵塞

# 设置Ribbon的超时时间 
ribbon: 
	ConnectTimeout: 1000 # 连接超时时间 默认1s 默认单位毫秒 
	ReadTimeout: 3000 # 逻辑处理的超时时间 默认1s 默认单位毫秒
# 设置当前的日志级别 debug,feign只支持记录debug级别的日志 
logging: 
	level: 
		com.itheima: debug

加日志

package com.itheima.consumer.config; 
import feign.Logger; 
import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.Configuration; 
@Configuration 
public class FeignLogConfig { 
    /* NONE,不记录 BASIC,记录基本的请求行,响应状态码数据 HEADERS,记录基本的请求行,响应状态码数据,记录响应头信息 FULL;记录完成的请求 响应数据 */ 
    @Bean public Logger.Level level(){ 
        return Logger.Level.FULL; 
    } 
}
这篇关于【博学谷学习记录】超强总结,用心分享|狂野架构师springCloud常用知识(一)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!