重新定义spring cloud实战

重新定义spring cloud实战 PDF 超清版

  • 大小:62.42 MB
  • 类型:spring cloud
  • 格式:PDF
  • 出版:机械工业出版社
  • 作者:许进
  • 更新:2019-04-12 19:38:03
vip 立即下载( 62.42 MB )
关注公众号免费下载
版权投诉 / 资源反馈(本资源由用户 满蝾婷 投稿)

给寻找技术文档的朋友们精选了spring cloud相关的资料,由机械工业出版社出版,作者是许进,介绍了关于spring、cloud方面,格式为PDF,资源大小62.42 MB,目前在spring cloud类资源综合评分为:7.7分。

spring cloud资源推荐

书籍介绍

Spring Cloud市面上有很多书,我都看过,这本书从各方面比较来看非常不错,基于Spring Cloud F版,看了一下书里提了很多issue, 填了很多F版的坑,书中的代码案例是隔离的,还有代码清单,关键是还有书籍答疑群,方便交流沟通

最近公司新项目准备用,本书基于Spring Cloud F版,内容很不错,内容厚实,讲解清晰,公司同事推荐购买,和同事说的一样,本书不错,有问题可以通过微信群的方式和作者面对面答疑,

书非常好,内容不错。书中的讲了Spring Cloud与分布式事物,Spring Cloud与领域驱动等的落地实践,书中介绍了Spring Cloud Gateway的使用。

内容介绍

这是一本实践与理论并重、广度与深度兼顾的Spring Cloud生产实践开发指南,由SpringCloud中国社区倾力打造,作者来自阿里、蚂蚁金服、*金融等企业,本书针对SpringCloud在国内的使用情况,结合国内企业使用Spring Cloud落地微服务架构遇到的问题,提出可落地的解决方案。

本书内容有3大特色:

足够广:详细讲解了Spring Cloud的核心常用组件以及Spring Cloud的增强生态,针对生产实践中常见问题给出可落地的*实践方案,无论您是初学者还是开发人员,还是架构师,都能从此书获益。

有深度:本书对涉及的Spring Cloud组件按照从入门、进阶、实战、扩展增强的顺序循序渐进进行剖析和讲解,帮助作者知其然并知其所以然,授之以渔。

重实践:注重生产实践,通过案例驱动,给出优秀的生产实践方案和优秀的生产配置,帮助读者快速落地企业微服务架构。

全书共25章,分为三个部分:
部分核心组件篇(第1~10章)
主要讲解SpringCloud的核心组件。首先从应用架构的发展历程讲起,介绍了微服务出现的背景,并对微服务架构的落地提出了相应的解决方案;然后分别详细介绍了Spring Cloud微服务体系中的核心常用组件,如Eureka、Feign、Ribbon、Hystrix、Zuul等;*后通过一个综合案例将前面介绍的组件连接起来,帮助大家融会贯通。
第二部分进阶实战篇(第11~18章)
在核心组件的基础上,对Config、Consul、认证和鉴权、全链路监控以及对Spring Cloud生态圈中第二代网关Spring Cloud Gateway进行了详细阐述,循序渐进、案例驱动,帮助读者加深对组件的理解和运用,更好地掌握相关内容运用于生产实践。
第三部分解决方案篇(第19~25章)
主要从解决方案着手,内容包括Spring Cloud与gRPC的整合方式、版本控制与灰度发布、Spring Cloud容器化、Dubbo向Spring Cloud的迁移、分布式事务、领域驱动等生产级实用解决方案,为企业IT架构微服务化和变革保驾护航。

内容节选

SpringCloud与Consul集成实现负载均衡功能

负载均衡(Load Balance,简称LB)是一种服务器或网络设备的集群技术。负载均衡将特定的业务(网络服务、网络流量等)分担给多个服务器或网络设备,从而提高了业务处理能力,保证了业务的高可用性。负载均衡基本概念有:实服务、实服务组、虚服务、调度算法、持续性等,其常用应用场景主要是服务器负载均衡,链路负载均衡。

一、背景

SpringCloud微服务目前比较流行,其中大都在使用的服务注册与发现是Eureka,最近研究了Consul的集群搭建,现使用Consul实现服务的负载均衡。其主要拓扑结构如下:

二、Consul集群环境搭建

本次搭建采用了三台虚拟机,Linux系统,从Consul官网下载安装包,解压即可使用。在每台机器下建一个目录/data/consul/data,这个目录主要存放器群启动后生成的一些数据。需要开启的端口,8300, 8301, 8500, 8600。

分别在以下三个机器上执行一下启动命令。

机器1:10.0.0.45

./consul agent -server -bootstrap-expect 2 -data-dir=/data/consul/data -node=consul-server-1 -bind=10.0.0.45 -client=0.0.0.0 &

机器2:10.0.0.100

./consul agent -server -bootstrap-expect 2 -data-dir=/data/consul/data -node=consul-server-2 -bind=10.0.0.100 -client=0.0.0.0 &

机器3:10.0.0.191

./consul agent -server -bootstrap-expect 2 -data-dir=/data/consul/data -node=consul-server-3 -bind=10.0.0.191 -client=0.0.0.0 -ui &

参数说明:

• server: 以server身份启动。默认是client
• bootstrap-expect:集群要求的最少server数量,当低于这个数量,集群即失效。
• data-dir:data存放的目录,更多信息请参阅consul数据同步机制
• node:节点id,在同一集群不能重复。
• bind:监听的ip地址。默认绑定0.0.0.0,可以不指定
• client: 客户端的ip地址,0.0.0.0是指谁都可以访问
• ui: 可以访问UI界面

三台机器上的服务启动完成后,将两台机器添加到其中一台机器上,组建成集群。

分别在机器2和机器3上执行:./consul join 10.0.0.45,构成集群,同样也可以再增加别的节点。

启动成功后访问任意一台机器  http://10.0.0.45:8500,会看到如下界面,有3个健康的节点:

三、SpringCloud服务注册

注册中心已经搭建完毕,接下来就是准备两个服务,一个是生产者consul-producer,一个是消费者consul-consumer。

3.1 生产者代码,代码很简单,就是RestAPI请求并返回一个字符串

@RestController
public class ProducerController {
 @GetMapping("/producer")
 public String producer(){
  System.out.println("I'm producer");
  return "Hello, I'm producer";
 }
}

以下是生产者consul-producer的启动配置文件application.yml:

spring:
 application:
 name: consul-producer #程序名称
 cloud:
 consul:
  host: 10.0.0.100 #consul节点IP
  port: 8500  #consul节点端口
  discovery:
  instance-id: ${spring.application.name}:${spring.cloud.client.ip-address}:${server.port} #实例ID
  health-check-path: /actuator/health              #健康检查
  health-check-interval: 10s
server:
 port: 9091 #消费者服务端口

3.2 消费者代码,代码也很简单,使用大家熟悉分Feign,Controller接受请求,用过service调用消费者提供的服务

/**
 * 消费者
 */
@RestController
public class ConsumerController {
 @Autowired
 private ConsumerService consumerService;
 @GetMapping("/consumer")
 public String getProducer(){
  return consumerService.consumer();
 }
}

以下是feign调用的接口声明:

/**
 * 调用生产者服务
 */
@FeignClient("consul-producer")
public interface ProducerRemote {

 @GetMapping("/producer")
 String producer();
}

以下是生产者consul-consumer的启动配置文件application.yml:

spring:
 application:
 name: consul-consumer #消费者名称
 cloud:
 consul:
  host: 10.0.0.45 #consul注册节点IP
  port: 8500   #consul注册节点端口
  discovery:
  instance-id: ${spring.application.name}:${spring.cloud.client.ip-address}:${server.port} #实例ID
  health-check-path: /actuator/health              #健康检查
  health-check-interval: 10s
server:
 port: 9092 #消费者服务端口

两部分的源码可在Github上查看https://github.com/liuzwei/consul-demo.git

生产者和消费者存在了,就启动可以了,接下来是启动两个生产者,一个消费者,为了直观的区分两个生产者,在调用生产者返回的string稍微做了区分,一个是返回“Hello, I'm producer”,而另一个则返回“Hello, I'm producer2”,为了实现负载均衡便于测试。

其中在本机上10.0.0.93分别启动了程序consul-consumer和consul-producer,在另一台机器10.0.0.191上启动另一个生产者实例consul-producer

启动之后在consul的界面上看到如下样子:

四、测试负载功能

通过浏览器,Get请求消费者的controller,会看到“Hello, I'm producer”和“Hello, I'm producer2”在交替显示,这也是fegin调用的特性,轮询机制实现负载均衡。

五、总结

目前微服务框架比较流行,最近项目也是上线了一些Spring Cloud微服务架构的产品,同时也在探索其他可替代组件,因此对consul进行了相关学习,便整理成该文章,在consul的使用过程中也是存在一些不明白的地方,其中Eureka的注册时可以配置多地址的,没有发现consul怎么向多个节点进行注册,希望有用过的大佬给指点一二,还在学习中,共勉。

目录

  • 前言
  • 第1章 微服务与SpringCloud1
  • 第2章 Spring CloudEureka上篇12
  • 第3章 Spring CloudEureka下篇27
  • 第4章 Spring CloudFeign的使用扩展75
  • 第5章 Spring CloudRibbon实战运用99
  • 第6章 Spring CloudHystrix实战运用115
  • 第7章 Spring CloudZuul基础篇145
  • 第8章 Spring CloudZuul中级篇155
  • 第9章 Spring CloudZuul高级篇198
  • 第10章 Spring Cloud基础综合案例214
  • 第11章 Spring CloudConfig上篇225
  • 第12章 Spring CloudConfig下篇245
  • 第13章 Spring CloudConsul上篇317
  • 第14章 Spring CloudConsul下篇325
  • 第15章 Spring Cloud认证和鉴权347
  • 第16章Spring Cloud全链路监控359
  • 第17章Spring CloudGateway上篇399
  • 第18章 Spring CloudGateway下篇421
  • 第19章 Spring Cloud与gRPC上篇466
  • 第20章gRPC在Spring Cloud与gRPC下篇482
  • 第21章 Spring Cloud版本控制与灰度发布498
  • 第22章 Spring Cloud容器化510
  • 第23章 Dubbo向Spring Cloud迁移553
  • 第24章 Spring Cloud与分布式事务563
  • 第25章 Spring Cloud与领域驱动实践604

以上就是本次关于书籍资源的介绍和部分内容,我们还整理了以往更新的其它相关电子书资源内容,可以在下方直接下载,关于相关的资源我们在下方做了关联展示,需要的朋友们也可以参考下。

spring cloud相关资源

  • Spring Cloud与Docker微服务架构实战

    Spring Cloud与Docker微服务架构实战

    Spring Cloud与Docker微服务架构实战 可分为三部分,第1章对微服务架构进行了系统的介绍;第2-11章使用Spring Cloud开发框架编写了一个电影售票系统;第12-14章则讲解了如何将微服务应用运行在Do

    大小:100 MB微服务电子书

  • 疯狂Spring Cloud微服务架构实战

    疯狂Spring Cloud微服务架构实战

    《疯狂Spring Cloud微服务架构实战》以Spring Cloud为基础,深入讲解微服务开发的相关框架,包括服务管理框架Eureka、负载均衡框架Ribbon、服务客户端Feign、容错框架Hystrix、消息框架Stream等。

    大小:176.9 MB微服务电子书

  • 深入理解Spring Cloud与微服务构建

    深入理解Spring Cloud与微服务构建

    深入浅出讲解Spring Cloud组件、开发工具、框架等知识点。使读者全面理解微服务的构建原理。实例丰富,解释清晰,易于读者真正理解原理,并学以致用。深入讲解Spring Cloud OAuth2,直击市场需求痛点。

    大小:173.49 MB微服务电子书

  • Spring Cloud微服务架构开发实战

    Spring Cloud微服务架构开发实战

    资深架构师手把手带你实战微服务;提供从设计、开发、部署到运维的一站式解决方案;涵盖Spring Boot微服务开发、Spring Cloud核心组件、Docker部署微服务应用;详解大量易于构建、运行

    大小:173.4 MB微服务电子书

  • Spring Cloud微服务架构进阶

    Spring Cloud微服务架构进阶

    本书从当前流行的微服务架构理论出发,详细介绍了Spring Cloud的每一个核心模块,并提供了大量的源码讲解,以及各个核心模块和主要功能的使用方法,理论与实践相结合,可以作为微服务架构

    大小:219.4 MB微服务电子书

资源下载

spring cloud学习笔记

16小时54分钟前回答

详解Spring Cloud微服务架构下的WebSocket解决方案

WebSocket在现代浏览器中的应用已经算是比较普遍了,在某些业务场景下,要求必须能够在服务器端推送消息至客户端。在没有WebSocket的年代,我们使用过dwr,在那个时候dwr真实一个非常棒的方案。但是在WebSocket兴起之后,我们更愿意使用标准实现来解决问题、 首先交代一下,本篇文章不讲解WebSocket的配置,主要讲的是针对在微服务架构集群模式下解决方案的选择。 微服务架构大……

15小时22分钟前回答

详解SpringCloud Ribbon 负载均衡通过服务器名无法连接的神坑

一,问题 采取eureka集群、客户端通过Ribbon调用服务,Ribbon端报下列异常 java.net.UnknownHostException: SERVICE-HIjava.lang.IllegalStateException: No instances available for SERVICE-HIjava.lang.IllegalStateException: Request URI does not contain a valid hostname: http://SERVICE-HIcom.netfix.discovery.shared.taransport.TransportException: Cannot execute request on any known server Spring Cloud版本比较乱,版本关联引用更是乱,最终我切换到spring-cloud.vers……

9小时59分钟前回答

详解spring cloud分布式关于熔断器

spring cloud分布式中,熔断器就是断路器,其实都是一个意思。 为什么要使用熔断器呢? 在分布式中,我们会根据业务或功能将项目拆分为多个服务单元,各个服务单元之间通过服务注册和订阅的方式相互依赖和调用功能,随着项目和业务的不断拓展,服务单元数量也逐渐增多,相互之间的依赖关系也越来越复杂,这时候,可能会某个服务单元出现问题或网络原因依赖调用出错或……