springcloud微服务组件简单介绍 和 快速应用

内容介绍:简易版springcloud组件快速使用介绍springcloud微服务架构快速应用springcloud综述:使服务的提供者和消费者之间的交互变得便捷,方便相互之间的请求交互;使服务变得更可靠(高可用);使请求变得更随机(不需要写请求的具体地址,写个服务id即可)​ 总结起来就是6个字:便捷,可靠,高效一、springboot-项目的构建1.综述:​ springboot的...
摘要由CSDN通过智能技术生成

内容介绍:简易版springcloud组件快速使用介绍

springcloud微服务架构快速应用

springcloud综述:使服务的提供者和消费者之间的交互变得便捷,方便相互之间的请求交互;使服务变得更可靠(高可用);使请求变得更随机(不需要写请求的具体地址,写个服务id即可)

总结起来就是6个字:便捷,可靠,高效

一、springboot-项目的构建

1.综述:

​ springboot的出现,改变了项目的管理和配置结构(只是配置少了),但我们业务核心代码的编写不会变。

2.核心理念:约定大于配置

​ 1.在springboot中提供了一个启动器,在其中写好了大量的默认配置。引入启动器的依赖,就可以实现这些 默认配置配置自动化 。具体配置在Mate-INF/spring.factory

​ 2.所谓约定:就是指公共的,大家都相同的东西,可以约定。但是个性化的东西还是必须配置的

a.公共的配置(可以默认)例如:
	MySQL端口号:3306
	redis端口号:6379
	Tomcat端口号:8080
b.个性化的配置(必须配置)例如:
	1.数据库(使用数据库相关的启动器一定要配置):ip地址,用户名,密码
  1. 在springboot项目中,所有的组件功能开启都需要在项目启动类上加一个@Enable…注解来实现,但是Eureka客户端发现(注册)功能注解(@EnableDiscoveryClient)可以不用添加。

二、Eureka注册中心

1.综述:

​ 服务的注册、发现、监控中心,属于被动营业者。需要服务的提供者和调用者注册为Eureka客户端,提供者主动到Eureka服务端定时推送(注册)自己的服务信息、调用者主动到Eureka服务端定时拉取已经注册的服务信息

​ Eureka注册中心高可用的实现方法:多个Eureka Server之间也会互相注册为服务,当服务提供者注册到Eureka Server集群中的某个节点时,该节点会把服务的信息同步给集群中的每个节点,从而实现高可用集群。因此,无论客户端访问到Eureka Server集群中的任意一个节点,都可以获取到完整的服务列表信息。

三、ribbo负载均衡

1.所有服务都应该可以集群,既然集群了就要实现负载均衡

2.ribbon实现服务之间相互调用的负载均衡。网关、feign都通过ribbon实现负载均衡。而网关的负载均衡由Nginx实现,Nginx的负载均衡由Nginx集群内部模拟一台虚拟服务器来实现

3.ribbon默认的负载均衡策略是轮询

四、hystrix熔断器

1.简介:Hystix是Netflix开源的一个延迟和容错库,用于隔离访问远程服务、第三方库,防止出现级联失败

2.具体的应用场景:

	微服务中,服务间调用关系错综复杂,一个请求,可能需要调用多个微服务接口才能实现,会形成非常复杂的调用链路。
	例如:一次业务请求,需要调用A、B、C、D四个服务,这四个服务又可能调用其它服务。
	如果微服务D发生异常,请求阻塞,用户不会得到响应,则tomcat的这个线程不会释放,于是越来越多的用户请求到来,越来越多的线程会阻塞
	服务器支持的线程和并发数有限,请求一直阻塞,会导致服务器资源耗尽,从而导致所有其它服务都不可用,形成雪崩效应。

Hystix解决雪崩问题的手段主要是服务降级,包括:

  • 线程隔离
  • 服务熔断

五、zuul网关(或APIGateway)

1.综述:

​ Zuul作为网关的其中一个重要功能,就是实现请求的鉴权。而这个动作我们往往是通过Zuul提供的过滤器来实现的。

1.1.接收请求,解析请求
1.2.根据请求,选取请求实例  (ip:port)
1.3.重新封装请求:头、参数
1.4.请求发起

2.1解析响应(排雷,过滤敏感信息)
2.2重新封装(网管认为安全的)
2.3将响应返回给客户端

2.核心:zuul核心是一个servlet

3.应用

​ Zuul中默认就已经集成了Ribbon负载均衡Hystix熔断机制。但是所有的超时策略都是走的默认值,比如熔断超时时间只有1S,很容易就触发了。因此建议我们手动进行配置:

hystrix:
  command:
    default:
      execution:
        isolation:
          thread:
            timeoutInMilliseconds: 6000
ribbon:
  ConnectTimeout: 1000
  ReadTimeout: 2000
  MaxAutoRetries: 0
  MaxAutoRetriesNextServer: 0

六、feign(rest服务封装)

1.简介:Feign可以把Rest的请求进行隐藏,伪装成类似SpringMVC的Controller一样。你不用再自己拼接url,拼接参数等等操作,一切都交给Feign去做。

2.负载均衡:Feign中本身已经集成了Ribbon依赖和自动配置:

3.Hystix支持(了解):Feign默认也有对Hystix的集成。只不过,默认情况下是关闭的。我们需要通过下面的参数来开启:

feign:
  hystrix:
    enabled: true # 开启Feign的熔断功能

七、ConfigServer配置中心

八、构建web项目步骤

1.构建springboot父工程:例如cloud_parent

1.打包方式改成pom
  <packaging>pom</packaging>
2.引入Springboot父启动器
	<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.6.RELEASE</version>
        <relativePath/>
    </parent>
3.锁定基本要用的依赖版本
	<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.version>Finchley.SR2</spring-cloud.version>
        <mapper.starter.version>2.0.4</mapper.starter.version>
        <mysql.version>5.1.46</mysql.version>
        <pageHelper.starter.version>1.2.5</pageHelper.starter.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <!-- springCloud -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!-- 通用Mapper启动器 -->
            <dependency>
                <groupId>tk.mybatis</groupId>
                <</
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值