毕业论文
您现在的位置: 框架 >> 框架介绍 >> 正文 >> 正文

凭借这份阿里内部微服务架构笔记拿下阿里

来源:框架 时间:2022/8/22

前言

SpringCloud是一门提升要求的技术,特别是针对工作1~3年的Java开发人员。它现在正处于快速发展的阶段,越来越多的企业也开始使用SpringCloud。相信在不久的将来,熟练掌握SpringCloud将会成为Java开发人员面试的门槛。本文将从从技术原理、工程实践、进阶提升3个维度详解SpringCloud微服务的架构与开发。

重点!

本文行文流畅,由浅人深。主打的是与微服务相关的实战体系。第一部分是准备篇,可以帮助各位读者了解微服务以及SpringCloud的概念;第二部分是基础篇,会对SpringCloud中常用的模块进行详细讲解;第三部分是实战篇,开始实战性质的内容讲解;最后一部分是高级篇,也是难度比较大的一部分。

第一部分准备

1.SpringCloud与微服务概述

微服务架构是一种架构风格,而SpringCloud是实现微服务架构的一系列框架的有序集合。

传统的单体应用什么是微服务什么是SpringCloud

2.实战前的准备工作

工欲善其事,必先利其器。在开始学习之前,最重要的事情就是准备开发环境了,各位读者需要准备JDK1.8、Maven3.3.3、SpringTools4forEclipse。

开发环境的准备SpringBoot入门SpringBootStarter自定义

第二部分基础

1.Eureka注册中心

注册中心在微服务架构中是必不可少的一部分,主要用来实现服务治理功能。

Eureka使用Eureka编写注册中心服务编写服务提供者编写服务消费者开启Eureka认证Eureka高可用搭建常用配置讲解扩展使用

2.客户端负载均衡Ribbon

目前主流的负载方案分为两种:一种是集中式负载均衡,在消费者和服务提供方中间使用独立的代理方式进行负载,有硬件的(比如F5),也有软件的(比如Nginx)。另一种则是客户端自己做负载均衡,根据自己的请求情况做负载,Ribbon就属于客户端自己做负载。

RibboonRestTemplate结合Ribbon使用负载均衡策略介绍自定义负载策略配置详解机制

3.声明式REST客户端Feign

使用Feign调用服务接口自定义Feign的配置脱离SpringCloud使用Feign

4.Hystrix服务容错处理

在微服务架构中存在多个可直接调用的服务,这些服务若在调用时出现故障会导致连锁效应,也就是可能会让整个系统变得不可用,这种情况我们称之为服务雪崩效应。我们可以通过Hystrix解决服务雪崩效应。

Hystrix在SpringCloud中使用HystrixHystrix监控整合Dashboard查看监控数据Turbine聚合集群数据

5.API网关

API网关是对外服务的一个,其隐藏了内部架构的实现,是微服务架构中必不可少的一个组件。API网关可以为我们管理大量的API接口,还可以对接客户、适配协议、进行安全认证、转发路由、限制流量、监控日志、防止爬虫、进行灰度发布等。

Zuul简介使用Zuul构建微服务网关Zuul路由配置Zuul过滤器讲解Zuul容错和回退Zuul使用小经验Zuul高可用

第三部分实战

1.API网关之SpringCloudGateway

SpringCloudGateway是Spring官方基于Spring5.0、SpringBoot2.0和ProjectReactor等技术开发的网关,SpringCloudGateway旨在为微服务架构提供一种简单有效的、统一的API路由管理方式。

SpringCloudGateway介绍SpringCloudGateway工作原理SpringCloudGateway快速上手SpringCloudGateway路由断言工厂SpringCloudGateway过滤器工厂全局过滤器实战案例

2.自研分布式配置管理

SpringCloudConfig是一个用来为分布式系统提供配置集中化管理的服务,它分为客户端和服务端两个部分。客户端服务从服务端拉取配置数据,服务端负责提供配置数据。

自研配置管理框架Smconf简介Smconf工作原理Smconf部署项目中集成SmconfSmconf详细使用Smconf源码解析

3.分布式配置中心Apollo

Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。

Apollo简介Apollo的核心功能点Apollo核心概念Apollo本地部署ApolloPortal管理后台使用Java中使用ApolloApollo的架构设计

4.Sleuth服务跟踪

SpringCloud集成Sleuth整合Logstash整合Zipkin

5.微服务之间调用的安全认证

在微服务架构下,我们的系统根据业务被拆分成了多个职责单一的微服务。每个服务都有自己的一套API提供给别的服务调用,那么如何保证安全性呢?不是说你想调用就可以调用,一定要有认证机制,即只有我们内部服务发出的请求,才可以调用我们的接口。

什么是JWT创建统一的认证服务服务提供方进行调用认证服务消费方申请TokenFeign调用前统一申请Token传递到调用的服务中RestTemplate调用前统一申请Token传递到调用的服务中Zuul中传递Token到路由的Zuul中传递Token到路由的服务中

6.SpringBootAdmin

SpringBoot有一个非常好用的监控和管理的源软件,这个软件就是SpringBootAdmin。该软件能够将Actuator中的信息进行界面化的展示,也可以监控所有SpringBoot应用的健康状况,提供实时警报功能。

SpringBootAdmin的使用方法开启认证集成Eureka监控服务

7.服务的API文档管理

随着互联网技术的发展,现在的网站架构基本都由原来的后端渲染,演变成了前后端分离的形式,App就是典型的前后端分离。前端和后端的唯一联系变成了API接口;API文档变成了前后端开发人员联系的纽带,变得越来越重要。

Swagger简介集成Swagger管理API文档Swagger注解Eureka控制台快速查看Swagger文档请求认证Zuul中聚合多个服务Swagger

第四部分高级

1.API网关扩展

SpringCloudZuul只是为我们提供了一个构建网关的架子,各种高级操作还是得结合自身的业务去做扩展。

用户认证服务限流服务降级灰度发布

2.微服务之缓存

在微服务架构下,推荐每个服务都有自己独立的数据库、缓存、搜索等,这样做的优点是能够让服务之间的耦合度降低,同时可以让不同的服务根据不同的业务需求选择自己合适的存储方式。

GuavaCache本地缓存Redis缓存防止缓存穿透方案防止缓存雪崩方

3.服务之存储

缓存也是高并发系统的三把利器之一,这足以说明其重要性。

存储选型MongodbMysqlElasticsearch

4.微服务之分布式事务解决方案

事务是一组单元化的操作,这组操作可以保证要么全部成功,要么全部失败;或者只要有一个失败的操作,就会把其他已经成功的操作回滚,以此来保证数据的完整性。

两TCC补偿型最终一致性最大努力通知型事务

5.分布式任务调度

分布式任务调度和微服务架构紧密相关,普通的调度任务在微服务架构下变成了复杂的分布式任务,分布式任务需要有全局的调度功能,否则相同的任务在多节点同时执行,会导致数据错误。

Elastic-Job快速集成任务使用配置参数讲解多节点并行调度事件追踪扩展功能运维平台使用经验分享

6.分库分表解决方案

随着时间和业务的发展,数据库中的表会越来越多,表中的数据也会越来越多,带来的问题就是对于数据的操作会越来越慢。由于不是分布式部署,单台服务器的资源有限,最终数据库的数量和数据处理能力会遇到瓶颈,这时采用分库分表就能解决上述的问题。

Sharding-JDBC快速集成读写分离实战分库分表实战分布式

7.最佳生产实践经验

开发环境和测试环境共用EurekaSwagger和Actuator访问进行权限控制SpringBootAdmin监控被保护的服务Apollo配置中心简化版搭建分享Apollo使用小经验Apollo动态调整日志级别

最后

在互联网时代,互联网产品的最大特点就是需要快速发布新功能,支持高并发和大数据。传统的架构已经慢慢不能支撑互联网业务的发展,这时微服务架构便顺势而出。

SpringCloud提供一整套微服务的解决方案,基于SpringBoot可实现快速集成,且开发效率很高,堪称中小型互联网公司微服务开发的福音。而且SpringCloud发布新功能的频率非常高,目前仅大版本就有很多个,同时还有庞大的社区支持,照这样的发展势头,我相信未来几年国内互联网公司的公布式系统开发一定是SpringCloud的天下。

由于篇幅原因不能全部给大家展示,获取文章资料,麻烦大家帮小编转发

转载请注明:http://www.0431gb208.com/sjszlfa/1507.html

  • 上一篇文章:
  • 下一篇文章: 没有了