SpringCloud Alibaba 微服务实战 前言

SpringCloud  Alibaba微服务实战 前言

目录

SpringCloud-Alibaba微服务实战 前言

微服务架构介绍

微服务架构的常见问题

 微服务架构的常见概念

服务调用

微服务解决方案SpringCloud Alibaba

核心变化一:再见了,Netflix

组件替代方案

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

总结

为什么选择alibaba?

下面谈谈Srpingcloud Alibaba:

Srpingcloud Alibaba是什么?

为什么选择使用SpringCloud Alibaba ?

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

环境说明

JDK 说明

安装 node & npm

Lombok 插件

服务端代码部署

特别说明

一、项目下载

二、配置本地 hosts

三、初始化数据库

四、pig 配置修改

nacos 数据库源信息修改

Redis、MySQL 配置

前端代码部署

特别说明

下载前端代码

安装 cnpm 镜像

安装依赖

启动

访问前端

特别说明

五、启动顺序

前端代码部署

特别说明

下载前端代码

安装 cnpm 镜像

安装依赖

启动

访问前端

特别说明

系统账号说明


微服务架构介绍

微服务架构, 简单的说就是将单体应用进一步拆分,拆分成更小的服务,每个服务都是一个可以独立运行的项目。

微服务架构的常见问题

一旦采用微服务系统架构,就势必会遇到这样几个问题:

  • 这么多服务,如何管理他们?(服务治理 注册中心[服务注册 发现 剔除])
  • 这么多服务,他们之间如何通讯?(restful rpc)
  • 这么多服务,客户端怎么访问他们?(网关)
  • 这么多服务,一旦出现问题了,应该如何自处理?(容错)
  • 这么多服务,一旦出现问题了,应该如何排错? (链路追踪)

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

 微服务架构的常见概念

服务治理

服务治理就是进行服务的自动化管理,其核心是服务的自动注册与发现。

服务注册:服务实例将自身服务信息注册到注册中心。

服务发现:服务实例通过注册中心,获取到注册到其中的服务实例的信息,通过这些信息去请求它们提供的服务。

服务剔除:服务注册中心将出问题的服务自动剔除到可用列表之外,使其不会被调用到。

服务调用

在微服务架构中,通常存在多个服务之间的远程调用的需求。目前主流的远程调用技术有基于HTTP的RESTful接口以及基于TCP的RPC协议。

  • REST(Representational State Transfer):这是一种HTTP调用的格式,更标准,更通用,无论哪种语言都支持http协议

  • RPC(Remote Promote Call):一种进程间通信方式。允许像调用本地服务一样调用远程服务。RPC框架的主要目标就是让远程服务调用更简单、透明。RPC框架负责屏蔽底层的传输方式、序列化方式和通信细节。开发人员在使用的时候只需要了解谁在什么位置提供了什么样的远程服务接口即可,并不需要关心底层通信细节和调用过程。

区别与联系

比较项RESTfulRPC
通讯协议HTTP一般使用TCP
性能略低较高
灵活度较高
应用微服务架构SOA架构

微服务解决方案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 团队给我们推荐了用于替代的组件:

7.jpg

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

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?

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

下面谈谈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微服务权限管理系统部署总结

环境说明

工具版本备注
JDK1.8强制要求
MySQL5.7.8 +强制要求
Redis3.2 +
node8.0 +
npm6.0 +
IDEIDEA2019+

JDK 说明

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

mvn -v

image

安装 node & npm

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

<a name="08543f13"></a>

  • 检查安装是否正常

image

Lombok 插件

[warning] IDE 必须安装 lombok plugin

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

服务端代码部署

特别说明

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

一、项目下载

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

<a name="f7dc7c73"></a>

二、配置本地 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

<a name="7c581b54"></a>

三、初始化数据库

  • 参数说明
版本: 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)

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

<a name="8e54ddfe"></a>

启动

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

npm run dev

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

前端代码部署

<a name="4dfff12d"></a>

特别说明

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

<a name="88f22790"></a>

下载前端代码

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

image

访问前端

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

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

<a name="4dfff12d-1"></a>

特别说明

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

系统账号说明

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

用户名密码
admin123456

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

用户名密码
nacosnacos

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

用户名密码
pigpig

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

用户名密码
sentinelsentinel

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

用户名密码
admin123456

[info] pig-auth 统一认证

swagger访问地址为:

http://localhost:9999/swagger-ui/index.html 

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值