微服务框架

集中式架构
优点:系统开发速度快
          维护成本底
          适用于并发要求低的系统
缺点:代码耦合性非常高
          后期维护成本高
          无法针对的不同的模块进行优化
          容错率低,并发能力差
一、微服务架构的特征:
         1、单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责,                  避免重复业务开发
         2、面向服务:微服务对外暴露业务接口
         3、自治:团队独立,技术独立,数据独立,部署独立
         4、隔离性强:服务调用做好隔离、容错、降级、避免出现级联问题
二、微服务拆分注意事项:
         1、不同微服务,不要重复开发相同业务
         2、微服务数据独立,不要访问其他微服务的数据库
         3、微服务可以将自己的业务暴露为接口,供其他微服务调用

         Eureka

一、Eureka注册中心:
         1、注册服务信息
         2、拉取服务
         3、服务每隔30秒向Eureka发起心跳,确认存活
二 、搭建EurekaServer :
         1、创建项目,引入spring-cloud-starter-eureka-server的依赖
         2、编写启动类,添加@EnableEurekaServer注解
         3、添加application.yml文件

         Ribbon
一、Ribbon负载均衡流程:
         1、发起请求——>RibbonLoadBanlancerClient
         2、获取url中的服务id——>DynamicServerListLoadBalancer
         3、拉取服务名——>eureka-server
         4、返回服务列表——>DynamicServerListLoadBalancer
         5、服务负载均衡——>IRule(每一个子接口都是一个规则)
         6、通过规则选择某个服务——>RibbonLoadBanlancerClient
         7、修改\替换url发起请求
二、负载均衡策略:
       通过定义IRule实现跨越修改负载均衡规则,有两种方式:
         1、代码方式:       在order-service中的orderApplication类中,定义一个新的irule:
                                    (作用于全局,即无论调用哪一个服务都是随机的。)
         2、配置文件方式:在 order-service的application.yml文件中添加新的配置也可以修改规则。                (服务名:ribbon:NFloadBalancerRuleClassName:com.netflix.loadbalaner.RandomRule)

三、饥饿加载:
         1、ribbon默认是采用懒加载,即第一次访问时才会去创建LoadBalanceClient,请求时间会很                长。而饥饿加载则会在项目启动时创建,降低第一次访问的耗时,通过下面配置开启饥                  饿加载:
         2、ribbon:
                eager-load: 
                   enable: true #开启饥饿加载
                   clients: userserver #指定对userservice这个服务饥饿加载
        Nacos

cluster

一、Nacos服务搭建、注册、发现:
          1、startup.cmd -m standalone  单机模式启动
          2、父pom、和服务,添加nacos依赖
          3、服务配置添加spring.cloud.nacos.server-addr: 服务地址
二、Nacos服务分级存储,配置集群属性:
          1、修改服务yml文件,添加cloud.nacos.discovery.cluster-name: 集群名称,优先选择本地                    集群,修改负载均衡配置。
三、NacosRule负载均衡策略:
        (Nacos提供了权重配置来控制访问频率,权重越大则访问频率越高。)配置权重
          (Nacos中服务存储和数据存储的最外层都是一个名为namespace的东西,用来做最外层隔              离。)环境隔离
          1、优先选择同集群服务实例列表
          2、本地集群找不到提供者,去其他服务集群找,并会报警告
          3、确定了可用实力列表后,再随机负载均衡挑选实例
四、Nacos和Eureka差别:
          1、服务提供者的健康检测:服务注册到nacos时,可以选择注册为临时或非临时实例,                              (都支持心跳方式)     非临时实例服务不会做心跳,而是nacos主动询问服务
                                                       nacos不会把非临时实例从列表中剔除,而仅仅是标记为不
                                                       健康了。等待此服务恢复健康
                                                       cloud.nacos.discovery.ephemeral: 
                                                       (临时实例和非临时实例,默认为true,所有的均为临时实例)
          2、服务消费者的拉取服务:Eureka,每隔一段时间向注册中心拉取
                 (服务的注册和拉取)       Nacos,主动推送给消费者变更信息
五、Nacos配置自动刷新:
          1、在@Value注入的变量所在类上添加注解@RefreshScope 
          2、使用@ConfigurationProperties注解注入到类里(推荐使用)

六、多环境配置共享:
          1、微服务启动时会从nacos读取多个配置文件,[spring.application.name].yaml这个文件一                  定会加载
          2、多种配置同属性的优先级,服务名-profile.yaml > 服务名.yaml > 本地配置

        Feign

一、Feign远程调用:
           (优雅的实现http请求发送)
          1、引入依赖,spring-cloud-starter-openfeign
          2、启动类添加注解开启feign功能,@EnableFeignClients
          3、编写feign客户端,服务名称,请求方式,请求路径,请求参数,返回值列表
          4、feign代替restTeplate:

                启动类注入RestTemplate;  .getForObject(url, User.class)发送请求

二、Feign的日志配置:
          1、配置文件,feign.client.config.xxx(服务名或者default).loggerLevel
          2、配置代码,Logger.Level  Bean注入;@EnableFeignClients代表全局,@FeignClient代                 表某服务

三、Feign的优化:
          1、日志级别尽量用basic
          2、使用HttpClient或OKHttp代替URLConnection
                      引入feign-httpClient依赖
                      配置文件开启httpClient功能,设置连接池参数

四、熔断:

          1、雪崩效应,如果扇出的链路上某个微服务的调用响应时间过长或者不可用,对微服务A的调用就会占用越来越多的系统资源,进而引起系统崩溃,所谓的“雪崩效应”。

          2、熔断,当扇出链路的某个微服务不可用或者响应时间太长时,会进行服务的降级,进而熔断该节点微服务的调用,快速返回错误的响应信息。当检测到该节点微服务调用响应正常后,恢复调用链路。

          3、依赖,spring-cloud-starter-netflix-hystrix

                启动类,@EnableCircuitBreaker

                远程调用,@HystrixCommand(fallbackMethod = "tishi")

       Gateway

一、网关Gateway
         1、身份认证和权限校验
         2、服务路由、负载均衡
         3、请求限流
         4、过滤请求和响应

二、网关搭建步骤:
          1、创建model,引入gateway依赖和nacos的服务发现依赖
          2、配置application.yml,包括服务基本信息、nacos地址、路由
                路由配置包括:路由id、路由目标(uri)、路由断言、路由过滤器

三、路由过滤器的作用:
          1、gatewayfilter,可以对进入网关的请求和微服务返回的响应做处理
          2、配置再路由下的过滤器只对当前路由的请求生效,defaultFilters(所有路由生效)

四、全局过滤器的作用:
          1、也是处理一切进入网关的请求和微服务响应,与gatewayFilter的作用一样。
               区别在于gatewayfilter通过配置定义,处理逻辑是固定的,
               而globalfilter的逻辑需要自己携带写代码实现。
          2、步骤,实现GlobalFilter接口,添加@Order注解或实现Ordered接口,编写处理逻辑
五、过滤器执行顺序:
         1、order值越小,优先级越高
         2、当order值一样时,defaultFilter最先,然后是局部的路由过滤器,最后全局过滤器

六、跨域问题处理:
          1、跨域:域名不一致就是跨域,主要包括:域名不同和域名相同,端口不同
          2、跨域问题:浏览器禁止请求的发起者与服务端发生跨域ajax请求,请求被浏览器拦截的                    问题。
          解决方案: CORS

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值