微服务(一)

目录

什么是微服务?

Spring cloud

spring cloud alibaba

核心组件分析

spring cloud 依赖

Nacos注册中心介绍

依赖

面试题

负载均衡

Ribbon

@LoadBalanced

面试题


什么是微服务?

        将单个应用程序开发为一组小型独立服务,这些独立服务在自己的进程中运行,独立开发和部署。
     这些服务使用轻量级API通过明确定义的接口中进行通信,这些服务是围绕业务功能构建的,每项服务执行一项功能。由于他们是独立运行的,因此可以针对各项服务进行更新、部署和扩展,以满足对应用程序特定的功能。

        

本次项目采用的是spring cloud alibaba微服务解决方案

Spring cloud

        是一系列框架的有序集合。基于spring boot 的开发遍历性巧妙的简化了分布式系统基础设施的开发,如服务注册、配置、智能路由、消息总线、负载均衡等。

spring cloud alibaba

        是spring cloud 的一个子项目,只需要一些注解和少量的配置,就可以将spring cloud接入阿里微服务解决方案,通过阿里的中间件来迅速搭建分布式应用程序。

核心组件分析

 服务限流降级:
        默认支持 WebServlet、OpenFeign、RestTemplate、Spring Cloud Gateway, RocketMQ 限流降级功能的接入,可以在运行时通过控制台实时修改限流降级规则,还支持查看限流降级 Metrics 监控。
服务注册与发现:
        基于Spring Cloud 服务注册与发现标准,借助Nacos进行实现,默认还集成了 Ribbon 的支持。
分布式配置管理:
        基于Nacos支持分布式系统中的外部化配置,配置更改时自动刷新。
消息驱动能力:
        基于Spring Cloud Stream 为微服务应用构建消息驱动能力。
分布式事务:
        使用 @GlobalTransactional 注解, 高效并且对业务零侵入地解决分布式事务问题。。
分布式任务调度:
        提供秒级、精准、高可靠、高可用的定时(基于 Cron 表达式)任务调度服务。同时提供分布式的任务执行模型,如网格任务。网格任务支持海量子任务均匀分配到所有 Worker上执行

spring cloud 依赖

<dependencyManagement>
    <dependencies>
            <!--Spring boot 依赖(定义了微服务规范)-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>2.3.2.RELEASE</version>
                <scope>import</scope>
                <type>pom</type>
            </dependency>
            <!--Spring Cloud 依赖(定义了微服务规范)-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Hoxton.SR9</version>
                <scope>import</scope>
                <type>pom</type>
            </dependency>
            <!--Spring Cloud Alibaba依赖(基于spring微服务规范做了具体落地实现)-->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.2.6.RELEASE</version>
                <scope>import</scope>
                <type>pom</type>
            </dependency>
        </dependencies>
    </dependencyManagement>

Nacos注册中心介绍

                用来注册服务,发现服务,并且在nacos中统一管理的平台。

                作用:在不同的服务之间进行通信,更好更方便的管理应用中的每一个服务。
                如何选择注册中心:社区活跃度,稳定性,功能,性能
                 Nacos:不仅可以做注册中心,还可以作为配置中心,稳定性和性能都很好

依赖

 <!--nacos-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

面试题

    为什么要将服务注册到nacos:
    因为需要更好的查找服务,使用服务

    在Nacos中服务提供者如何向Nacos注册中心续约:
    每隔五秒向注册中心发送一个心跳包

    对于Nacos服务来讲他是如何判断服务实例的状态:
    检测心跳包,十五秒检测不到标记为不健康状态,三十秒检测不到就死掉

负载均衡

        为什么nacos可以实现负载均衡?

        因为nacos集成了Ribbon,Ribbon配合RestTemplate,可以非常轻松的实现服务间的访问。

Ribbon

        bbon是Spring Cloud核心组件之一,它提供的最重要的功能就是客户端的负载均衡(客户端可以采用一定算法,例如轮询访问,访问服务端实例信息),这个功能可以让我们轻松地将面向服务的REST模版请求自动转换成客户端负载均衡方式的服务调用。

@LoadBalanced

        当使用RestTemplate进行远程调用时,如果需要负载均衡,可以在构建RestTemplate对象时,使用@LoadBalanced对构建RestTemplate的方法进行修饰

@Bean
@LoadBalanced
public RestTemplate loadBalancedRestTemplate(){
    return new RestTemplate();
}

面试题

Ribbon是什么:
    NetFlix(网飞)提供的一个负载均衡的客户端,一般应用于服务的消费方法

Ribbon可以解决什么问题:
    基于负载均衡策略进行服务调用,所有策略都会实现IRule接口

Ribbon内置的负载策略有哪些:
    8种
    RoundRobinRule     轮询策略
    RandomRule        随机策略
    BestAvailableRule  过滤出故障服务器后,选择一个并发量最小的
    WeightedResponseTimeRule    针对响应时间加权轮询
    AvailabilityFilteringRule    可用过滤策略,先过滤出故障或并发请求大于阈值的的一部分实例,然后再以线性轮询的方式从过滤后的实例清单中选出一个
    ZoneAvoidanceRule    从最佳区域实例集合中选择一个最优性能的服务实例
    RetryRule     选择一个Server,如果失败,重新选择一个
    当系统提供的负载均衡策略不能满足我们需求时,我们还可以基于IRule接口自定义策略

@LoadBalanced的作用是什么?
    描述RestTemplate对象,用于告诉spring框架,在使用restTempalte进行服务调用时,这个调用过程会被一个拦截器进行拦截,然后在拦截器内部,启动负载均衡策略

我们可以自己定义负载均衡策略吗?
    可以,基于IRule接口进行策略定义,也可以参考NacosRule进行实现

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值