springcloud分布式事务_阿里P8根据企业需求讲解微服务分布式系统开发527页进阶笔记...

开篇必水

分布式系统比单机系统复杂得多,但经过多年的发展,业界已经有了丰富的分布式系统理论,也有了许多优秀的组件。在分布式系统理论里,最近流行的微服务架构理论成了佼佼者,微服务的概念也成了当前分布式系统实现方案中的主流,显然,微服务架构成了分布式系统的一种形式。优秀的分布式系统组件早期主要以国内阿里巴巴的Dubbo(现今已经被Apache归纳进入其孵化器)为主,后来从国外引入了Spring Boot和Spring Cloud,它们现在是微服务实现的主流方案。

为顺应技术的发展趋势,我对微服务进行了深入的学习和研究,并且于2018年创作出版了《深入浅出Spring Boot 2.x》。免费分享完整文档共441页私信【学习】即可获取这两份学习资料哦。

3e63562992891bd4aa97d7910a7d3ae1.png

为了更进一步地讲解微服务,满足当前企业搭建微服务系统的需要,我竭尽所能编写了这本关于Spring Cloud的书。虽然Spring Cloud能够有双搭P微服务系统,但微服务系统只是分布式系统的一种形式,它并不能解决分布式系统的所有问题,例如,分布式缓存、会话、数据库及其事务等,都不能通过Spring Cloud来有效处理。但这些问题又是企业实施微服务系统时必须要面对的,甚至是一些企业的难点和痛点。因此,本书在详细介绍Spring Cloud的基础上,还会对常用的分布式技术进行讲解,以满足企业的需要。

1d9bb2fefc4be74ffb6bf7854dd4ff87.png

内容安排

本书基于一线企业的实际应用需求,介绍Spring Cloud微服务和常用的分布式系统。整体来说,全书分为4个部分。

第一部分:概述和基础(1~2章)

本部分将讲解分布式和微服务的基础知识和理念,并且简单介绍本书需要用到的基础知识。

第1章分布式和微服务概述

75f3b1a5768afc1a36e2d3a2538789b7.png

第2章技术基础:为了更好地介绍Spring Cloud,这里稍微介绍- .下Spring Boot和HTTP的REST风格。因为SpringCloud是以Spring Boot作为基石的,而各个服务系统又是通过REST风格的请求集成在-起的, 所以学习它们将有助于我们深入学习Spring Cloud。当然,如果你已经对它们很熟悉了,也可以跳过本章,直接学习第3章的内容。

9adc7fc056f4cdcf32620c9f0e69d276.png

第二部分:Spring Cloud微服务(3~12章)

介绍Spring Cloud的各类组件,这是微服务的核心内容。介绍的组件包括服务注册和服务发现(Eureka)、服务调用(Ribbon 和OpenFeign)、断路器(Hystix 和Resilience4j)、网关(Zuul和Gateway)、配置(Config)、 全链路追踪(Sleuth)、 微服务的监控(Admin)等。

第3章服务治理——Eureka:,Pivotal团队通过Spring Boot形式的封装将Nettlix公司开发的分布式系统组件封装了起来,其中就包括Eureka, Eureka是Spring Cloud的服务治理中心。在使用Spring Boot进行了二次封装后,Bureka 的使用就显得十分简易了。Eureka 作为一个微服务的治理中心,它是一个服务应用,可以接收其他服务的注册,也可以发现和治理服务实例。

44b8f6cb7c354bafab0b230c1d8abad1

第4章客户端负载均衡——Ribbon:Spring Cloud Netflix Ribbon是一种客户端负载均衡的组件,为了方便,在本书中都简称为Ribbon。在微服务架构中,我们依照业务将系统进行切分,但一个实际的业务往往需要多个微服务通过相互协作来完成,所以各种微服务之间存在服务调用。

e78ac2c9406f6f4a55497e1aa08af68b.png

第5章断路器——Hystrix:Spring Cloud社区推荐开发者使用其他仍然活跃的开源项目,其中最推荐使用的是Resilience4J, 并且Spring Cloud社区也在加紧开发spring cloud-ircuitbreaker,来取代Hystrix。但这个项目还在开发中,并没有发布,加之当前不少企业也在使用Hystrix, 并且技术是相通的,所以这里还是决定介绍一下 Hystrix。

ed5ae0002f4fef03fd8cb00ca2640118.png

第6章新断路器——Resilience4j:Resilience4j是一个轻量级的、易于使用的容错框架,它是受Netflix的Hystrix的启发,基于Java8和函数式编程设计的,所以在使用它的时候,可以看到大量的函数式编程设计。它与Hystrix 相比有几个不同点。

e38495022871e36881b174b90f57a1a5.png

第7章声明式调用——OpenFeign:本书从第3章到第6章,介绍了微服务的核心内容:服务治理、服务调用(Ribbon)和熔断器(Hystrix和Resilience4j)。这些都是微服务的利器,只是从开发者的角度来说,和我们打交道最多的.是服务调用和熔断器。服务调用使得多个微服务可以通过相互调用,为同一个业务服务。熔断器则可以在很大的程度上保证服务调用。但是严格来讲,Ribbon 使用REST请求方式编写还是比较麻烦的,对于开发者也不算友好,因此在REST 请求方式的基础上,一些开发者 又提供了接口声明方式的调用,例如,我们本章要介绍的GitHub OpenFeign就是这样的。

5954974eb62e2108c934c64ed1beb4aa.png

第8章旧API网关——Zuul:前面几章,我们学习了服务注册和发现(Eureka), 通过它们,我们能够顺利地管理我们的服务;学习了服务之间的调用(Ribbon 和OpenFeign),让各个服务联系起来,通过共同协助来完企业业务逻辑;还学习了断路器(Hystrix和Resilience4j),它能尽可能地保护微服务之间的调用,通过熔断的方式来避免服务依赖造成的雪崩。以上谈到的这些都是Spring Cloud微服务的核心组件。本章开始让我们学习微服务最后的一一个核心组件一API 网关。Netflix Zuul是-一个API网关,它的主要功能是提供网关服务。

3009c632eb6a08735256fa13efd7c590.png

第9章新网关——Spring CloudGateway:在第8章中,我们讲述了旧网关Netlix Zuul,并且告知读者,Zuul 1.x只是性能一-般的网关,加上Netlix Zuul 2.x版本经常不能如期发布,所以新版的Spring Cloud不打算捆绑Zul了。新版的Spring Cloud提供了新的网关给开发者使用,这便是Spring Cloud Gateway。为了简便,下 文在没有特别指明的情况下,将简称它为Gateway。Gateway 并非是使用传统的Jakarta EE的Servlet容器,它是采用响应式编程的方式进行开发的。在Gateway中,需要Spring Boot和Spring WebFlux提供的基于Netty的运行环境。

52539cc100952955a97f360d7e19838a.png

第10章配置——Spring Cloud Config:Spring Cloud Config (为了方便,在不产生歧义时,全书都简称为Config)是一个支持微服务和分布式集中化提供配置的项目。微服务架构中的实例可能会非常多,如果一个个地更新配置,运维成本会十分大。为了简化配置的复杂性,一些开发者提出 了集中化管理配置的概念,也就是提供一个集中化的配置中心,让我们可以统- -配置各个微服务实例。本章要讲的Config 就是出于这个目的设计的。

500b1afa87623bf445f43a423217a0ba.png

第11章Spring Cloud Sleuth全链路追踪:在前面的章节中,我们学习了Eureka 服务治理中心,通过它可以管理各个服务,使得它们能够相互协作工作。但是随着业务变得复杂,服务也会复杂起来,加上每-一个服 务都可以有多个实例,一旦发生 问题,将很难查找问题的根源。为了解决这个问题,许多分布式开发者都开发了自己的链路监控组件,使得请求能够追踪到各个服务实例中,典型的如谷歌(Google)的Dapper、推特(Twitter)的Zipkin和阿里巴巴(Alibaba) 的EagleEye, 它们都是当前著名的链路追踪组件。

da5b77177ddd7c8a1e9e4a5a310dc150.png

第12章微服务的监控——Spring Boot Admin:在一个优秀的分布式系统中,监控服务实例,及时发现实例存在的问题是十分重要的。SpringBoot Admin就提供了这样的功能,为了方便,在不引起歧义的情况下,下文将Spring Boot Admin简称为Admin。Admin 是一个监控平台,它可以检测各个Spring Boot应用,让运维和开发人员及时发现各个服务实例存在的问题。Admin 是一个 基于Spring Boot Actuator 的控制台,也就是它可以通过Spring Boot Actuator暴露的端点,来监测各个实例的运行状况。Admin 的用户界面(User Interface,UI)是采用AngularJs应用程序构建的。

ea1f9fa9e7ae5ad40918205427288869.png

第三部分:分布式技术(13~18章)

讲解分布式的其他知识,包括分布式发号机、分布式数据库、分布式缓存、分布式会话和权限等。

第13章生成唯一的ID——发号机制:在数据库(请注意,在本章中,如果没有特别说明,讲到的数据库就都是指关系数据库,而不包含类似Redis这样的非关系数据库)中,主键往往是一条记录的唯一标识,它具备唯- -性。 在单机的时候,只需要考虑单个数据库的问题,相对简单,但在分布式和微服务系统里,就相对困难了,因为它涉及多台机器之间的协作。那么如何保证在分布式或者微服务的多个节点下生成唯一的ID, 如何让ID具备- -定的可读性呢? 这就需要一个发 号机制来控制了。如何实现发号机制,便是本章要讨论的问题。

f6bb9fbf4510ac5735c034f1d1dbe0a3.png

第14章分布式数据库技术:在第1章我们谈过,互联网会员的增加和业务的复杂化,必然导致大数据的存储,这时使用单机数据库对数据存储和访问,就显得捉襟见肘了。而划分的方法在第1章也谈过,主要是水平、垂直以及混合分法。对分布式和微服务来说,一种业务就可能有很多的数据,如交易,单数据库也很有可能无法支撑,需要多个数据库节点进行支持,这种需要将数据库拆分为多节点进行存储的技术,便是本章需要的论的分布式数据库技术。为了更好地阐述分布式数据库的知识,我们首先从分表、分库和分区这样的数据库知识开始讲述。不过本章我们还不会讨论分布式事务的相关知识,这将会在下章进行讨论。

e5712f92026f0cdd3dc3db414cf3dc70.png

第15章分布式数据库事务:上一章中,我们讨论了分布式数据库的知识,主要是分片技术。这一章让我们来讨论分布式数据库事务,我们知道在互联网的世界中,有些数据对一致性的要求是十分苛刻的,如商品的库存和用户的账户资金,而这些却极有可能分别存储在不同的数据库节点中,那么如何在多个数据库节点中保证这些数据的一致性,就是分布式数据库事务要解决的问题。

01ebeefc4716c54e1adbd88210895397.png

第16章分布式缓存——Redis:在当前互联网中,缓存系统一般由Redis来完成,所以后续我们会集中讨论Redis, 就不再讨论其他缓存系统了。本书采用的是Redis的5.0.5版本,如果采用别的版本,在配置项上会有少量不同,不过也大同小异,不会有太大的问题。

1bf145c9d64da893a89654e62aeebf60.png

第17章分布式会话:在分布式系统中,有多个服务器节点,这些节点甚至是跨服务的,如果会话信息只在一个节点上, 就需要- -定的机制来保证会话在多个服务节点之间能够共享,方便是本章要讨论的分布式会话。在分布式会话中,最重要的功能是安全验证,因为不同的用户会有不同的权限。

842120ab1bc5554567c8ee8389e98e32.png

第18章分布式系统权限验证:本章会讲述分布式系统的权限验证。实际上,在分布式会话中谈到的使用缓存存储会话(springsession-data-redis),也能在一定程度 上支持分布式的权限验证,不过一切还 需要从最基础的Spring Security开始讲起。因为这里涉及的内容较多,所以我还是新建了工程,且将其命名为chapter18,这样就可以根据需要新增对应的模块了。

bb838691357554ea0c7e3369aa6da2b4.png

第四部分:微服务系统实践(19~20章)

通过Apache Thrift 讲解远程过程调用(RPC),并且讲解在分布式中处理高并发的一些常用技巧,最后给出一个微服务实例。

第19章远程过程调用:远程过程调用(Remote Procedure Call, RPC)是-种服务调用的方式,它在许多企业中也得到了很多的应用。事实上,在微服务中,推荐我们使用的是REST风格的调用,而非RPC。那么为什么需要使用RPC?又如何使用呢?

d23a3a874d76505333951a1daf6fdeff.png

第20章微服务设计和高并发实践:以上几章已经阐述了大部分搭建微服务的内容,本章主要讲微服务实践。在微服务中,要解决的大问题是高并发问题,这也是分布式中最受到关注的问题之一。

a3fa8958c8af810721e1bdcf8a9244e7.png

因为这份《spring cloud微服务和分布式系统实战》和《深入浅出springboot2.0》内容实在太多,两本书加起来一共971页,没有办法给大家全部展示出来,需要获取的小伙伴可以直接转发+关注后私信(学习)即可免费获取!

d39f10b8aeb1e9119d910b8d15c88ae9.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像中所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像中目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像中的目标属于哪个类别。 定位问题:确定目标在图像中的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络中提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值