SpringCloud学习笔记

SpringCloud学习笔记

网站架构模式

首先来记录下基本的网络架构模式

  1. 单点应用
  2. 分布式系统
  3. 微服务系统
  4. 面向服务架构

一般传统服务的都是一个系统,MVC都在一个项目中。
在这里插入图片描述
但目前基本上服务都是做成分布式系统,灵活,不容易有代码冲突,更适用于请求较多的,容易并发的项目。
那么既然是分布式系统,必然少不了远程调用的框架。
RPC框架有doubbo、SpringCloud、httpclient、soap等等。

soap:http协议+xml的方式,传输效率不高
SpringCloud:http协议+resultful风格+json,一般配合SpringBoot使用

SpringCloud主要组成部分
  1. 注册中心:eureka
  2. 接口网关:zuul
  3. 负载均衡:ribbon
  4. 远程调用:feign、restful
  5. 熔断器:Hystrix
注册中心

在这里插入图片描述
启动类中要有注解@EnableEurekaClient来启用注册中心

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

配置文件

server:
  port: 8082
eureka:
  instance:
    hostname: localhost
  client:
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
接口网关

zuul可以拦截请求,一般是用来解决跨域问题
在这里插入图片描述
@EnableZuulProxy 开启接口网关代理

如果要对拦截请求进行操作,例如未登录用户不能浏览,可以继承ZuulFilter类增加拦截请求后所需要的操作

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

配置文件

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8082/eureka/
server:
  port: 8769
spring:
  application:
    name: service-zuul
zuul:
  routes:
    api-a:
      path: /api-a/  /**访问地址*/
      service-id: a  /**注册的服务名称*/
    api-b:
      path: /api-b/
      service-id: b
负载均衡

类似于nignx,通过轮询算法,把请求分配到不同的服务器上。
在这里插入图片描述
@LoadBlanced 启用负载均衡

	@Bean
    @LoadBalanced//开启负载均衡的注解
    RestTemplate restTemplate() {
        return new RestTemplate();
    }
调用工具Feign
@EnableFeignClients(value="扫描路径") /**启用Feign*/
@EnableEurekaClient
@SpringBootApplication
public class ProductApplication {
    public static void main(String[] args) {
        SpringApplication.run(ProductApplication.class, args);
    }
}
@FeignClient(value = "feignTest")/**注册服务的名称*/
public interface feignClient {
    @RequestMapping("/addUser")/**服务的方法*/
    void save(User user);
}

配置文件

#配置eureka
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8082/eureka/
#服务名称
spring:
  application:
    name: feignTest
#feign的配置,连接超时及读取超时配置
feign:
  client:
    config:
      default:
        connectTimeout: 5000
        readTimeout: 5000
        loggerLevel: basic
断路器

雪崩效应:服务提供者的不可用”(原因)导致“服务调用者不可用”(结果),并将不可用逐渐放大的现象。
断路器可以防止雪崩效应,提高服务器响应速度

@Component
public class HystrixAppFallBack implements HystrixApp {
	public String getList() {
	    //服务降级处理
		return "服务发生异常...";
	}
}


@FeignClient(value = "feignTest",fallback=HystrixAppFallBack.class)
public interface HystrixApp {
	@RequestMapping("/getList")
	public String getList();

}

配置文件

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8082/eureka/
server:
  port: 8765
  tomcat:
    max-threads: 50
  
spring:
  application:
    name: feignTest
feign:
   hystrix:
     enabled: true
hystrix:
   command: 
     default: 
       execution: 
        isolation:
         thread: 
          timeoutInMilliseconds: 100000
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值