标签:API 服务 字节 offer Spring 阿里 架构 Cloud Zuul
前言
Spring Cloud是一门提升要求的技术,特别是针对工作1~3年的Java开发人员。它现在正处于快速发展的阶段,越来越多的企业也开始使用SpringCloud。相信在不久的将来,熟练掌握Spring Cloud将会成为Java开发人员面试的门槛。本文将从从技术原理、工程实践、进阶提升3个维度详解Spring Cloud微服务的架构与开发。
重点!
本文行文流畅,由浅人深。主打的是与微服务相关的实战体系。第一部分是准备篇,可以帮助各位读者了解微服务以及Spring Cloud 的概念;第二部分是基础篇,会对Spring Cloud 中常用的模块进行详细讲解;第三部分是实战篇,开始实战性质的内容讲解;最后一部分是高级篇,也是难度比较大的一部分。
第一部分 准备
1.Spring Cloud与微服务概述
微服务架构是一种架构风格,而Spring Cloud是实现微服务架构的一系列框架的有序集合。
- 传统的单体应用
- 什么是微服务
- 什么是Spring Cloud
2.实战前的准备工作
工欲善其事,必先利其器。在开始学习之前,最重要的事情就是准备开发环境了,各位读者需要准备JDK1.8、Maven3.3.3、Spring Tools 4 for Eclipse。
- 开发环境的准备
- Spring Boot入门
- Spring Boot Starter自定义
第二部分 基础
1.Eureka 注册中心
注册中心在微服务架构中是必不可少的一部分,主要用来实现服务治理功能。
- Eureka
- 使用Eureka编写注册中心服务
- 编写服务提供者
- 编写服务消费者
- 开启 Eureka认证
- Eureka高可用搭建
- 常用配置讲解
- 扩展使用
2.客户端负载均衡 Ribbon
目前主流的负载方案分为两种:一种是集中式负载均衡,在消费者和服务提供方中间使用独立的代理方式进行负载,有硬件的(比如F5),也有软件的(比如Nginx)。另一种则是客户端自己做负载均衡,根据自己的请求情况做负载,Ribbon就属于客户端自己做负载。
- Ribboon
- RestTemplate结合Ribbon使用
- 负载均衡策略介绍
- 自定义负载策略
- 配置详解
- 重试机制
3.声明式REST客户端Feign
- 使用Feign 调用服务接口
- 自定义Feign的配置
- 脱离Spring Cloud使用Feign
4.Hystrix服务容错处理
在微服务架构中存在多个可直接调用的服务,这些服务若在调用时出现故障会导致连锁效应,也就是可能会让整个系统变得不可用,这种情况我们称之为服务雪崩效应。我们可以通过Hystrix解决服务雪崩效应。
- Hystrix
- 在Spring Cloud中使用Hystrix
- Hystrix监控
- 整合Dashboard查看监控数据
- Turbine聚合集群数据
5.API网关
API网关是对外服务的一个人口,其隐藏了内部架构的实现,是微服务架构中必不可少的一个组件。API网关可以为我们管理大量的API接口,还可以对接客户、适配协议、进行安全认证、转发路由、限制流量、监控日志、防止爬虫、进行灰度发布等。
- Zuul简介
- 使用Zuul构建微服务网关
- Zuul路由配置
- Zuul过滤器讲解
- Zuul容错和回退
- Zuul使用小经验
- Zuul高可用
第三部分 实战
1.API网关之Spring Cloud Gateway
Spring Cloud Gateway是Spring官方基于Spring 5.0、Spring Boot2.0和Project Reactor等技术开发的网关,Spring Cloud Gateway旨在为微服务架构提供一种简单有效的、统一的API路由管理方式。
- Spring Cloud Gateway介绍
- Spring Cloud Gateway工作原理
- Spring Cloud Gateway 快速上手
- Spring Cloud Gateway路由断言工厂
- Spring Cloud Gateway 过滤器工厂
- 全局过滤器
- 实战案例
2.自研分布式配置管理
Spring Cloud Config是一个用来为分布式系统提供配置集中化管理的服务,它分为客户端和服务端两个部分。客户端服务从服务端拉取配置数据,服务端负责提供配置数据。
- 自研配置管理框架Smconf简介
- Smconf工作原理
- Smconf部署
- 项目中集成 Smconf
- Smconf详细使用
- Smconf 源码解析
3.分布式配置中心Apollo
Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。
- Apollo简介
- Apollo的核心功能点
- Apollo核心概念
- Apollo本地部署
- Apollo Portal管理后台使用
- Java中使用Apollo
- Apollo的架构设计
4.Sleuth服务跟踪
- Spring Cloud集成Sleuth
- 整合Logstash
- 整合Zipkin
5.微服务之间调用的安全认证
在微服务架构下,我们的系统根据业务被拆分成了多个职责单一的微服务。每个服务都有自己的一套API提供给别的服务调用,那么如何保证安全性呢?不是说你想调用就可以调用,一定要有认证机制,即只有我们内部服务发出的请求,才可以调用我们的接口。
- 什么是JWT
- 创建统一的认证服务
- 服务提供方进行调用认证
- 服务消费方申请Token
- Feign 调用前统一申请Token传递到调用的服务中
- RestTemplate调用前统一申请Token传递到调用的服务中
- Zuul中传递 Token到路由的Zuul中传递 Token到路由的服务中
6.Spring Boot Admin
Spring Boot有一个非常好用的监控和管理的源软件,这个软件就是Spring BootAdmin。该软件能够将Actuator中的信息进行界面化的展示,也可以监控所有Spring Boot应用的健康状况,提供实时警报功能。
- Spring Boot Admin的使用方法
- 开启认证
- 集成Eureka
- 监控服务
7.服务的API文档管理
随着互联网技术的发展,现在的网站架构基本都由原来的后端渲染,演变成了前后端分离的形式,App就是典型的前后端分离。前端和后端的唯一联系变成了API接口;API文档变成了前后端开发人员联系的纽带,变得越来越重要。
- Swagger简介
- 集成Swagger管理API文档
- Swagger注解
- Eureka控制台快速查看Swagger文档
- 请求认证
- Zuul中聚合多个服务Swagger
第四部分 高级
1.API网关扩展
Spring Cloud Zuul只是为我们提供了一个构建网关的架子,各种高级操作还是得结合自身的业务去做扩展。
- 用户认证
- 服务限流
- 服务降级
- 灰度发布
2.微服务之缓存
在微服务架构下,推荐每个服务都有自己独立的数据库、缓存、搜索等,这样做的优点是能够让服务之间的耦合度降低,同时可以让不同的服务根据不同的业务需求选择自己合适的存储方式。
- Guava Cache本地缓存
- Redis缓存
- 防止缓存穿透方案
- 防止缓存雪崩方
3.服务之存储
缓存也是高并发系统的三把利器之一,这足以说明其重要性。
- 存储选型
- Mongodb
- Mysql
- Elasticsearch
4.微服务之分布式事务解决方案
事务是一组单元化的操作,这组操作可以保证要么全部成功,要么全部失败;或者只要有一个失败的操作,就会把其他已经成功的操作回滚,以此来保证数据的完整性。
- 两阶段型
- TCC补偿型
- 最终一致性
- 最大努力通知型事务
5.分布式任务调度
分布式任务调度和微服务架构紧密相关,普通的调度任务在微服务架构下变成了复杂的分布式任务,分布式任务需要有全局的调度功能,否则相同的任务在多节点同时执行,会导致数据错误。
- Elastic-Job
- 快速集成
- 任务使用
- 配置参数讲解
- 多节点并行调度
- 事件追踪
- 扩展功能
- 运维平台
- 使用经验分享
6.分库分表解决方案
随着时间和业务的发展,数据库中的表会越来越多,表中的数据也会越来越多,带来的问题就是对于数据的操作会越来越慢。由于不是分布式部署,单台服务器的资源有限,最终数据库的数量和数据处理能力会遇到瓶颈,这时采用分库分表就能解决上述的问题。
- Sharding-JDBC
- 快速集成
- 读写分离实战
- 分库分表实战
- 分布式主键
7.最佳生产实践经验
- 开发环境和测试环境共用Eureka
- Swagger和Actuator访问进行权限控制
- Spring Boot Admin监控被保护的服务
- Apollo配置中心简化版搭建分享
- Apollo使用小经验
- Apollo动态调整日志级别
最后
在互联网时代,互联网产品的最大特点就是需要快速发布新功能,支持高并发和大数据。传统的架构已经慢慢不能支撑互联网业务的发展,这时微服务架构便顺势而出。
Spring Cloud 提供一整套微服务的解决方案,基于Spring Boot可实现快速集成,且开发效率很高,堪称中小型互联网公司微服务开发的福音。而且Spring Cloud发布新功能的频率非常高,目前仅大版本就有很多个,同时还有庞大的社区支持,照这样的发展势头,我相信未来几年国内互联网公司的公布式系统开发一定是Spring Cloud 的天下。
由于篇幅限制,就不一一展示了,有需要文中资料完整版的小伙伴们注意啦:一键三连(点赞+收藏+关注)
标签:API,服务,字节,offer,Spring,阿里,架构,Cloud,Zuul 来源: https://blog.csdn.net/m0_59090040/article/details/118945515
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。