微服务架构之springcloud

简介: 微服务英文名称Microservice,Microservice架构模式就是将整个Web应用组织为一系列小的Web服务。这些小的Web服务可以独立地编译及部署,并通过各自暴露的API接口相互通讯。它们彼此相互协作,作为一个整体为用户提供功能,却可以独立地进行扩。

1.单体架构和微服务架构

1.单体架构

单体架构俗称一个war包打天下,缺点很多不好延伸,性能太低,一个服务维护所有的项目都无法访问。就容易部署。

2.微服务架构

每一个模块之间都可以相互的调用,每一个服务都是一个单独的模块

2.服务注册中心Eureka

1.父工程引入pom
<dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Finchley.RELEASE<version>
                <type>pom<type>
                <scope>import</scope>   //springcloud版本
</dependency>
 <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>2.0.1.RELEASE<version> //springboot版本
                <type>pom<type>
                <scope>import</scope>
 </dependency>
2.Eureka模块引入
<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency>
pom配置
server:
  port: 9001 #服务端口
eureka:
  instance:
    hostname: eureka9001  #eureka服务实例名称
  client:
    register-with-eureka: false #false表示不向注册中心注册自己
    fetch-registry: false #false 表示自己就是注册中心,职责就是维护服务实例,并不需要去检索服务
    service-url:
      defaultZone: http://127.0.0.1:${server.port}/eureka/   #单机配置服务地址

启动配置
@EnableEurekaServer

3.服务模块配置

1.Eureka模块引入
<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>  //Eureka客户端配置
</dependency>
2.客户端配置文件
eureka:
  client:
    service-url:
      defaultZone: http://localhost:9001/eureka
  instance:
    prefer-ip-address: true
    instance-id: springlcoud-eureka8002

如果配置集群则模块之间的

spring:
  application:
    name: springcloud-provider     #配置的名字要一样

Eureka自带负载均衡,我们可以修改算法

这样我们的服务模块就注册到里面了,我们就可以通过zuul在Eureka中去调用了

4.模块之间相互调用Feign

1.添加依赖,也要注册到Eureka服务注册中心里
  <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
 </dependency>
2.启动类添加注解
@EnableFeignClients     //用于feign
@EnableDiscoveryClient   //用于feign

要写一个调用模块的接口,并添加想要调用的接口

@FeignClient(value = "SPRINGCLOUD-PROVIDER",fallback = deptClientImpl.class) //指明调用模块在Eureka中的名字,如果出错就执行fallback
public interface deptClient {
    @RequestMapping("dept/name/{ids}")
    public Dept findDept(@PathVariable("ids") int ids);
}

deptClientImpl是deptClient的实现类,并交给spring管理

fallback属于hystrix熔断器,调用不了就执行deptClient避免发生雪崩效应

feign:
  hystrix:
    enabled: true

5.微服务网关Zuul

1.介绍

Zuul是Netflix开源的微服务网关,他可以和Eureka,Ribbon,Hystrix等组件配合使

用。Zuul组件的核心是一系列的过滤器,这些过滤器可以完成以下功能:

1.身份认证和安全: 识别每一个资源的验证要求,并拒绝那些不符的请求

审查与监控:

2.动态路由:动态将请求路由到不同后端集群

3.压力测试:逐渐增加指向集群的流量,以了解性能

4.负载分配:为每一种负载类型分配对应容量,并弃用超出限定值的请求

5.静态响应处理:边缘位置进行响应,避免转发到内部集群

6.多区域弹性:跨域AWS Region进行请求路由,旨在实现ELB(ElasticLoad Balancing)使

用多样化

2.依赖添加,也要注册到Eureka
 <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
 </dependency>
 <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
   </dependency>
3.基本配置
zuul:
  routes:
    springcloud-provider:
      path: /zuul/**
      serviceId: springcloud-provider          #指定注册eureka注册中心的id
  servlet-path: /
4.启动类添加
@EnableZuulProxy 
@SpringBootApplication
# 框架  架构 

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×