SpringCloud 2020 Alibaba 微服务实战 前言

SpringCloud Alibaba微服务实战 前言

前言

2020 年 12 月 22 日深夜,Spring Cloud 2020.0.0 版本正式发布。2020.0.0 是第一个使用新版本命名方案的发命名的 Spring Cloud 发行版本。除了肉眼可见的更开发者友好的命名方式,这次发布全面抛弃了 Netflix 技术栈,并且是一个长期维护的主要版本。这对开发者来说意味着什么呢?

核心变化一:再见了,Netflix

早在 2018 年,Spring Cloud 在其 Roadmap 里就宣布将要终结的一些库/版本,其中最重要的就是指 Spring Cloud Netflix 项目进入维护模式,然后计划在 2020 年完全移除。

Spring Cloud 做出这样的决定其实也是不见得是主动的。我们知道 Spring Cloud 一直以来把 Netflix OSS 套件作为其官方默认的一站式解决方案,那时的 Netflix OSS 套件恨不得可以跟 Spring Cloud 划等号。而 Netflix 公司在 2018 年前后宣布其核心组件 Hystrix、Ribbon、Zuul、Archaius 等均进入维护状态

时至今日,Spring Cloud 2020.0 正式发布,在这个主要版本里,按既定计划终于对 spring-cloud-netflix 动刀了。

组件替代方案

 

 

Spring Cloud 既然把 Netflix 套件大刀阔斧的砍掉了,那总归得有替代方案吧。那是必然的,Spring Cloud 团队给我们推荐了用于替代的组件:

SpringCloud 2020 Alibaba 微服务实战 前言_第1张图片

SpringCloud 2020 Alibaba 微服务实战 前言_第2张图片

开发者如何面对和拥抱变化

Spring Cloud 提供了强大的封装和抽象能力,通过此类抽象底层实现组件的变化 ,对于上层使用 Spring Cloud 全家桶的用户其实影响不大,

总结

Spring Cloud 2020.0.0 是 Spring Cloud 的主要版本,是非常重要的存在,升级、改变也是巨大的。特别体现在 Netflix 模块的全部移除、Spring Cloud 启动方式变了等等。伴随着 Spring Boot 2.4.x 以及 Spring Cloud 2020.0 的发布,并且弃用 Netflix OSS 套件后,必将走入一个新的深度编程体验,满怀惊喜,很是期待。

现在非常推荐大家使用 Spring Cloud Alibaba 全家桶的,目前 Spring Cloud Alibaba 开源两年时间,已经从官方毕业,在关注度、活跃上表现抢眼。

为什么选择alibaba?

现阶段微服务已成趋势,微服务包含以下组件:

SpringCloud 2020 Alibaba 微服务实战 前言_第3张图片

 

下面谈谈Srpingcloud Alibaba:

Srpingcloud Alibaba是什么?

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

 

Springcloud和Srpingcloud Alibaba区别?

 

SpringCloud:
​
提起微服务,不得不提 Spring Cloud 全家桶系列,SpringCloud 是若干个框架的集合,包括 spring-cloud-config、spring-cloud-bus 等近 20 个子项目,提供了服务治理、服务网关、智能路由、负载均衡、断路器、监控跟踪、分布式消息队列、配置管理等领域的解决方案。
​
Spring Cloud 通过 Spring Boot 风格的封装,屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、容易部署的分布式系统开发工具包。
​
一般来说,Spring Cloud 包含以下组件,主要以 Netflix 开源为主。
​
2020年12月 ,springCloud 2020 发布,部分组件停止维护和更新,给开发带来不便;SpringCloud部分环境搭建复杂,没有完善的可视化界面,我们需要大量的二次开发和定制;SpringCloud配置复杂,难以上手,部分配置差别难以区分和合理应用
​
Srpingcloud Alibaba:同 Spring Cloud 一样,Spring Cloud Alibaba 也是一套微服务解决方案,包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。
​
依托 Spring Cloud Alibaba,您只需要添加一些注解和少量配置,就可以将 Spring Cloud 应用接入阿里微服务解决方案,通过阿里中间件来迅速搭建分布式应用系统。
​
作为 Spring Cloud 体系下的新实现,Spring Cloud Alibaba 跟官方的组件或其它的第三方实现如 Netflix, Consul,Zookeeper 等对比,具备了更多的功能。
阿里使用过的组件经历了考验,性能强悍,设计合理,现在开源出来成套的产品搭配完善的可视化界面给开发运维带来极大的便利,搭建简单,学习曲线低。

Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。

依托 Spring Cloud Alibaba,您只需要添加一些注解和少量配置,就可以将 Spring Cloud 应用接入阿里微服务解决方案,通过阿里中间件来迅速搭建分布式应用系统。

  1. 主要功能

    服务限流降级:默认支持 WebServlet、WebFlux, OpenFeign、RestTemplate、Spring CloudGateway, Zuul, Dubbo 和 RocketMQ 限流降级功能的接入,可以在运行时通过控制台实时修改限流降级规则,还支持查看限流降级 Metrics 监控。 服务注册与发现:适配 Spring Cloud 服务注册与发现标准,默认集成了 Ribbon 的支持。 分布式配置管理:支持分布式系统中的外部化配置,配置更改时自动刷新。 消息驱动能力:基于 Spring Cloud Stream 为微服务应用构建消息驱动能力。 分布式事务:使用 @GlobalTransactional 注解, 高效并且对业务零侵入地解决分布式事务问题。 阿里云对象存储:阿里云提供的海量、安全、低成本、高可靠的云存储服务。支持在任何应用、任何时间、任何地点存储和访问任意类型的数据。 分布式任务调度:提供秒级、精准、高可靠、高可用的定时(基于 Cron 表达式)任务调度服务。同时提供分布式的任务执行模型,如网格任务。网格任务支持海量子任务均匀分配到所有Worker(schedulerx-client)上执行。 阿里云短信服务:覆盖全球的短信服务,友好、高效、智能的互联化通讯能力,帮助企业迅速搭建客户触达通道。

    组件

    Sentinel:把流量作为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。

    Nacos:一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 RocketMQ:一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务。 Dubbo:Apache Dubbo™ 是一款高性能 Java RPC 框架。 Seata:阿里巴巴开源产品,一个易于使用的高性能微服务分布式事务解决方案。 Alibaba Cloud ACM:一款在分布式架构环境中对应用配置进行集中管理和推送的应用配置中心产品。ps(收费) Alibaba Cloud OSS: 阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的海量、安全、低成本、高可靠的云存储服务。您可以在任何应用、任何时间、任何地点存储和访问任意类型的数据。ps(收费) Alibaba Cloud SchedulerX: 阿里中间件团队开发的一款分布式任务调度产品,提供秒级、精准、高可靠、高可用的定时(基于 Cron 表达式)任务调度服务。ps(收费) Alibaba Cloud SMS: 覆盖全球的短信服务,友好、高效、智能的互联化通讯能力,帮助企业迅速搭建客户触达通道。ps(收费)

为什么选择使用SpringCloud Alibaba ?

这里需要先讲述一下为什么要用 SpringCloud?

对于中小型公司而言,使用 SpringCloud 会极大的减少开发成本,只需了解原理以及如何使用,就能进行开发。对于大型公司而言,更倾向于自主研发整个体系架构,虽然人力成本会增加,但是能全面的把控技术风险。

那为什么要使用 SpringCloud Alibaba 而不使用 SpringCloud 呢?

1,因为:SpringCloud 中的组件

  • 用于服务注册与发现的 Eureka 。 用于服务限流降级的 Hystrix。 网关 Zuul。 都已经封版停止更新了。

 

所以基于这种情况,是推荐使用SpringCloud Alibaba的。

2,Spring Cloud Alibaba 开源两年时间,已经从官方毕业,在关注度、活跃上表现抢眼,并且提供微服务开发的一站式解决方案。

下面我们通过实战项目来系统学习!

学习时可参考这个项目,地址为

https://gitee.com/log4j/pig.git

 

部署步骤为:

pig微服务权限管理系统部署总结

 

环境说明

工具 版本 备注
JDK 1.8 强制要求
MySQL 5.7.8 + 强制要求
Redis 3.2 +  
node 8.0 +  
npm 6.0 +  
IDE IDEA 2019+

JDK 说明


请使用 mvn -v 命令查看关联的 jdk 版本,当开发环境存在多个版本 jdk 时候特别注意

mvn -v

SpringCloud 2020 Alibaba 微服务实战 前言_第4张图片

image

安装 node & npm

  • 官网下载 node 安装包,内置 npm
https://nodejs.org/zh-cn/

  • 检查安装是否正常

SpringCloud 2020 Alibaba 微服务实战 前言_第5张图片

image

Lombok 插件

[warning] IDE 必须安装 lombok plugin


当前你使用的 ide 未安装 lombok. lombok 能够达到的效果就是在源码中不需要写一些通用的方法,但是在编译生成的字节码文件中会帮我们生成这些方法,减少代码冗余.
IDEA 安装方法 | eclipse 安装方法

服务端代码部署

特别说明

[warning] 请务必按照本文档部署运行章节 进行操作,减少踩坑弯路!!

一、项目下载

git clone https://gitee.com/log4j/pig.git

二、配置本地 hosts

[warning] 必须配置 hosts ,禁止修改代码中配置成 IP
win 配置方法 | mac 配置方法 | 建议使用 switchhost

127.0.0.1   pig-mysql
127.0.0.1   pig-redis
127.0.0.1   pig-gateway
127.0.0.1   pig-register
127.0.0.1   pig-sentinel
127.0.0.1   pig-job

三、初始化数据库

  • 参数说明
版本: mysql5.7.8+
默认字符集: utf8mb4
默认排序规则: utf8mb4_general_ci
  • 脚本说明
pig/db/pig.sql
pig/db/pig_config.sql
pig/db/pig_codegen.sql

四、pig 配置修改

[warning] 特别说明: host 配置不要改成 IP

nacos 数据库源信息修改

pig/pig-register/src/main/resources/application.yml
db:
  num: 1
  user: ${MYSQL-USER:root}  #修改:用户名
  password: ${MYSQL-PWD:root} #修改:密码
  url:
    0: jdbc:mysql://${MYSQL-HOST:pig-mysql}:${MYSQL-PORT:3306}/${MYSQL-DB:pig_config}?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true

Redis、MySQL 配置

-访问: http://pig-register:8848/nacos (默认账号密码 nacos/nacos)

SpringCloud 2020 Alibaba 微服务实战 前言_第6张图片

image

  • application-dev.yml
# redis 相关,无密码为空即可,不要修改成IP,修改hosts
spring:
  redis:
    password:
  • 数据库密码配置,修改以下几个文件
pig-auth-dev.yml
pig-upms-biz.yml
pig-codegen-dev.yml
# 数据源,只需要修改密码即可,不要修改成IP,修改hosts
spring:
  datasource:
    username: root
    password: lengleng

前端代码部署

特别说明

[warning] 请务必按照本文档部署运行章节 进行操作,减少踩坑弯路!!

下载前端代码

git clone https://gitee.com/log4j/pig-ui.git

安装 cnpm 镜像

[info] 切换到 pig-ui 根目录执行

npm install -g cnpm --registry=https://registry.npm.taobao.org

安装依赖

[info] 切换到 pig-ui 根目录执行

cnpm install

启动

[info] 切换到 pig-ui 根目录执行

npm run dev

SpringCloud 2020 Alibaba 微服务实战 前言_第7张图片

image

访问前端

[info] chrome 访问http://localhost:8080

默认用户名: admin
默认密码: 123456

特别说明

[info] npm install 过程中可能由于网络关系等,提示报错,请删除
pig-ui 根目录中 node_modules 重新执行 cnpm install 命令即可

五、启动顺序

1. PigNacosApplication
2. PigGatewayApplication
3. PigAuthApplication
4. PigAdminApplication
  • 使用代码生成、监控时再启动以下项目
6. PigCodeGenApplication
7. PigMonitorApplication
8. PigXxlJobAdminApplication
9. PigSentinelApplication

前端代码部署

特别说明

[warning] 请务必按照本文档部署运行章节 进行操作,减少踩坑弯路!!

下载前端代码

git clone https://gitee.com/log4j/pig-ui.git

安装 cnpm 镜像

[info] 切换到 pig-ui 根目录执行

npm install -g cnpm --registry=https://registry.npm.taobao.org

安装依赖

[info] 切换到 pig-ui 根目录执行

cnpm install

启动

[info] 切换到 pig-ui 根目录执行

npm run dev

SpringCloud 2020 Alibaba 微服务实战 前言_第8张图片

image

访问前端

[info] chrome 访问http://localhost:8080

默认用户名: admin
默认密码: 123456

特别说明

[info] npm install 过程中可能由于网络关系等,提示报错,请删除
pig-ui 根目录中 node_modules 重新执行 cnpm install 命令即可

系统账号说明

[info] 前端默认登录 http://ip:8080

用户名 密码
admin 123456

[info] pig-register 注册配置模块 http://ip:8848

用户名 密码
nacos nacos

[info] pig-monitor 监控模块 http://ip:5001

用户名 密码
pig pig

[info] pig-sentinel-dashboard 监控模块 http://ip:5003

用户名 密码
sentinel sentinel

[info] pig-xxl-job-admin 任务调度 http://ip:5004

用户名 密码
admin 123456

[info] pig-auth 统一认证

你可能感兴趣的:(sringcloud系统整理,SpringCloud,Alibaba微服务实战,java,spring)