微服务篇——微服务架构及组件(一)

 1、微服务架构的常见问题及相应的组件

一旦采用微服务系统架构,就势必会遇到这样几个问题:
这么多小服务,如何管理他们?(服务治理 注册中心[服务注册 发现 剔除])     nacos


这么多小服务,他们之间如何通讯?(restful rpc dubbo feign)    

httpclient("url",参数),  springBoot  restTemplate("url",参数) ,   feign


这么多小服务,客户端怎么访问他们?(网关)     gateway


这么多小服务,一旦出现问题了,应该如何自处理?(容错)     sentinel


这么多小服务,一旦出现问题了,应该如何排错? (链路追踪)   skywalking

对于上面的问题,是任何一个微服务设计者都不能绕过去的,因此大部分的微服务产品都针对每一个问题提供了相应的组件来解决它们。

 当一个请求进来我们会通过gateway网关去注册中心当中去拉取我们的服务列表,然后呢,再通过我们的本地负载均衡器ribbon进行路由到对应的服务,我们也可以结合我们的sentinel,来进行一系列的容错手段,包括我们的限流啊,降级等等,然后服务之间的这个调用呢,我们通过Feigin来进行优雅的一个调用,那么在分布式这个架构当中呢,存在一个事务的一致性的问题呢,我们通过SEATA来进行解决。

2、SpringCloud Alibaba微服务解决方案

1. 概述

    Spring Cloud Alibaba 是Spring Cloud的一个子项目,致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。依托 Spring Cloud Alibaba,您只需要添加一些注解和少量配置,就可以将 Spring Cloud 应用接入阿里微服务解决方案,通过阿里中间件来迅速搭建分布式应用系统。

2. 核心组件分析

Spring Cloud Alibaba 默认提供了如下核心功能(先了解):

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

3. 解决方案架构设计

    基于Spring Cloud Alibaba实现的微服务,解决方案设计架构如图所示:

4. 构建SpringCloud 聚合项目并进行环境初始化

4.1 工程结构

cgb2106-4 (工作区/空项目)
├── 01-sca   //(微服务父工程)
     ├── sca-provider         //服务提供方
     ├── sca-consumer         //服务消费方
     ├── sca-gateway          //网关服务,这个工程后续会作为服务的访问入口

4.2 添加对应的依赖

参考网址:https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E

    在pom文件中,添加如下依赖:

<!--    maven的父工程为一个pom工程,此工程主要负责依赖版本及部分基础依赖的管理-->
    <dependencyManagement>
        <dependencies>
            <!--Spring Boot 依赖(定义了微服务规范)-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring.boot.version}</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>

5. 总结

    总之,微服务是一个架构设计方式,此架构中的每个服务(service)都是针对一组功能而设计的,并专注于解决特定的问题。如果开发人员逐渐将更多代码增加到一项服务中并且这项服务变得复杂,那么可以将其拆分成多项更小的服务。接下来进行独立的开发、测试、部署、运行、维护。进而更好,更灵活的处理客户端的请求并提高系统的可靠性,可扩展性。

猜你喜欢

转载自blog.csdn.net/m0_63270506/article/details/124459811