学了一个月的spring cloud alibaba感觉真的是从入门到放弃-好难啊!

目录

前言

Spring Cloud Alibaba 是什么?

一、为什么要学习微服务?

1. 求职时增强技术自信。

2. 提升技术实力,增加职业转型的可能性。

3. 解决工作中软件研发难题。 

4. 保持技术的前瞻性。 

二、为什么使用spring cloud alibaba?

三、微服务有什么用?能解决实际业务场景中哪些问题?

四、注册中心Nacos

4.1更改用户名和密码

新建一个springboot的项目,引入如下的依赖:

生成密码的Java代码:

执行如下sql命令:

4.2 nacos集群配置

五、服务提供方

pom.xml依赖配置

配置

启动类

六、服务消费方

pom.xml依赖配置

配置

启动类配置

调用服务提供方

七. Ribbon负载均衡

7.1 实现负载均衡

7.2 服务消费方调用

7.3 负载均衡策略

7.4 自定义负载均衡策略

八.、Feign负载均衡

pom.xml依赖

启动类配置

服务接口配置

九、 熔断与服务降级

9.1 依赖

9.2 配置

9.3 sentinel的控制面板

实时监控

簇点链路

流量规则

降级规则

降级策略:

热点规则

系统规则

授权规则

集群流控

十、Feign与Sentinel的整合

配置

10.1 服务降级后的处理

UserServiceFallback的实现如下:

10.2 服务降级的异常处理

十一、Sentinel的持久化

11.1 sentinel-dashboard改造

未修改之前的内容

修改之后的内容

12.2 配置

13.3 测试


前言

Spring Cloud Alibaba 是什么?

Spring Cloud Alibaba 是阿里巴巴提供的微服务开发一站式解决方案,是阿里巴巴开源中间件与 Spring Cloud 体系的融合。

一、为什么要学习微服务?

1. 求职时增强技术自信。

 微服务是非常热门的话题,企业招聘中也越来越多的要求有微服务开发、架构能力,不掌握一些微服务技能找工作时也缺乏亮点,可以说微服务架构已经成为中高级后端开发人员、架构师的必备技能。

2. 提升技术实力,增加职业转型的可能性。

 长期从事局部功能开发,会导致全局掌控能力缺失。软件系统是一个复杂工程,只有从更高的角度统观全局,考虑业务的方方面面以及未来可能的演进方向,才能深刻理解一个产品或项目的内在含义,而这个话语权往往掌握在更高职级的开发者、设计师、架构师手中,如果掌握了一套微服务架构、开发理念,增加了向更高职级晋升的可能性。

3. 解决工作中软件研发难题。 

随着软件复杂度的提升,社会分工的越来越细,单体应用或者粗放式的软件服务,大量功能代码堆积在一起,显得特别臃肿繁杂,开发维护成本很高。这在日常运维、升级维护时非常不便,一个小功能的变更都有可能导致整个工程出现问题甚至宕机,如果是运行中的生产环境崩溃,由此所造成的经济损失或不好的社会影响,将是不可估量的。而引入微服务,可以更好的解决这一系列的问题。

4. 保持技术的前瞻性。 

研发技术迭代日新月异,新概念新应用也是层出不穷,云原生架构、容器化运维、中台等等,都与微服务有着微妙的关系,只有保持技术的持续性,才能更好的学习新技术,否则会很不利于新技术的落地应用。

二、为什么使用spring cloud alibaba?

很多人可能会问,有了spring cloud这个微服务的框架,为什么又要使用spring cloud alibaba这个框架了?最重要的原因在于spring cloud中的几乎所有的组件都使用Netflix公司的产品,然后在其基础上做了一层封装。然而Netflix的服务发现组件Eureka已经停止更新,我们公司在使用的时候就发现过其一个细小的Bug;而其他的众多组件预计会在明年(即2020年)停止维护。所以急需其他的一些替代产品,也就是spring cloud alibaba,目前正处于蓬勃发展的态式。

三、微服务有什么用?能解决实际业务场景中哪些问题?

将单体应用分拆成多个小体量的的高内聚低耦合的软件服务,可以采用不同的软件语言,不同的数据存储,每个小服务独立部署运行,服务间采用轻量级的通信机制,由不同的团队开发和维护,大大提高了软件的可维护性、扩展性。采用微服务架构,可以帮助我们很好的解决实际业务场景中的问题:

  • 从组织层面讲,系统的分工更加明确,责任更加清晰。

  • 按照业务来划分服务,单个服务代码量小,业务单一,更易于维护。

  • 服务能力更专一,代码重复度降低,可复用性高,使服务调用更加简便。

  • 服务之间耦合性低,可随时加入服务,剔除过时服务。

  • 单个服务也可以弹性扩展,容错能力更强,

  • 更贴合云时代背景的软件开发运维环境,高效自动化构建部署。

  • 数据存储解耦,不必将所有数据集中在一个大库中,不易拆分扩容。

四、注册中心Nacos

nacos是阿里巴巴研发的一个集注册中心与配置中心于一体的管理平台,使用其他非常的简单。下载地址为:

https://github.com/alibaba/nacos/releases,nacos的主页如下图所示:

其中默认的登录名和密码是:nacos/nacos

4.1更改用户名和密码

A. 分别执行conf目录下的nacos-mysql.sql两个脚本文件,生成的数据表如下:

B. 重新配置密码

新建一个springboot的项目,引入如下的依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

生成密码的Java代码:

// 密码加密处理
public static void main(String[] args) {
    BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder();
    // 生成的密码为:$2a$10$04MGTL.cJNZPpR3rFt/I2.43F.V75NH.5wdK.jngaO9Mc91mfonAO
    System.out.println(bCryptPasswordEncoder.encode("admin"));
}

执行如下sql命令:

insert into users values('nacos','$2a$10$04MGTL.cJNZPpR3rFt/I2.43F.V75NH.5wdK.jngaO9Mc91mfonAO', 1);
​
insert into roles values('nacos', 'ROLE_ADMIN')

C. 配置数据库的连接

在conf目录下的application.properties目录下加入如下内容:

spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://mysql:3306/cloud-alibaba?useSSL=false&serverTimezone=UTC&serverTimezone=Asia/Shanghai
db.user=root
db.password=

4.2 nacos集群配置

A. 将conf目录下的cluster.conf.example拷贝一份重命名为cluster.conf,在文件中加入所有集群节点的ip和端口号,文件内容如下:

127.0.0.1:8848
127.0.0.1:9948

B. 修改windows启动文件 startup.cmd 的配置,修改内容如下:

set MODE="standalone"  #默认的配置
set MODE="cluster"     #修改后的内容

注:如果是Linux环境不用作任何的修改。

C.启动两个nacos,界面中出现如下的内容,表示集群配置成功

五、服务提供方

pom.xml依赖配置

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
</dependencies>
​
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>0.9.0.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Greenwich.SR2</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

配置

spring:
  application:
    # 服务名
    name: alibaba-provider
  cloud:
    nacos:
      discovery:
        #必须配置ip地址
        server-addr: 172.18.96.177:8848,172.18.96.177:9948
  • 10
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值