摘要:
分布式系统面临的问题: 复杂分布式体系结构中的应用程序有数十个依赖关系,每个依赖关系在某些时候将不可避免的失败。 Hystrix 是什么: Hystrix 是一个用于处理分布式系统延迟和容错的开元库,在分布式系统里,许多依赖不可避免的会调用失败,比如超时、异常等。。。 Hystrix能够保证在一个依 阅读全文
摘要:
Feign: Feign 是一个声明式的WebService 客户端。使用 Feign能让编写WebService 客户端更加简单。 它的使用方式是 定义一个服务接口然后在上面添加注解。Feign 也支持可插拔式的编码器和解码器。SpringCloud 对Feign进行了封装,使其支持了Spring 阅读全文
摘要:
Ribbon 简介: Spring Cloud Ribbon 是基于 Netflix Ribbon 实现的一套客户端 负载均衡的工具。 Ribbon 是Netflix 发布的开源项目,主要功能是提供 客户端的软件负载均衡算法和服务调用。 Ribbon 客户端组件提供了一系列完善的配置项 ,如 连接超 阅读全文
摘要:
CAP理论简介: CAP理论作为分布式系统的基础理论,它描述的是一个分布式系统在以下三个特性中: 一致性(Consistency) 可用性(Availability) 分区容错性(Partition tolerance) 一致性(Consistency): 在分布式系统完成某写操作后任何读操作,都应 阅读全文
摘要:
现象:如果出现了下图所示的内容,则表示Eureka进入了自我保护模式。 为什么会产生Eureka的自我保护机制? 为了防止EurekaClient 可以正常运行,但是与EurekaServer网络不通情况下,EurekaServer不会立即将EurekaClient服务剔除。 什么是自我保护模式? 阅读全文
摘要:
对于注册进Eureka里面的微服务,可以通过服务发现来获得该服务的信息。 就是每一个微服务自身暴露出来的服务自身的相关介绍信息(类似于一个企业网站的“关于我们”),比如:主机名称、端口号..... 修改服务提供者的Controller,引入 DiscoveryClient @Autowired Di 阅读全文
摘要:
Eureka集群原理说明 Eureka集群环境构建 参考 cloud-eureka-server7001 ,新建一个 cloud-eureka-server7002 POM:直接复制 7001 的 POM 到 7002 修改映射配置(模仿两台服务器) 找到C:\Windows\System32\dr 阅读全文
摘要:
构建Eureka Server 端服务注册中心 新建Module:cloud-eureka-server7001 POM: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0 阅读全文
摘要:
什么是服务治理 SpringCloud 封装了 Netflix 公司开发的 Eureka 模块来 实现服务治理。 在传统的rpc远程调用框架中,管理每个服务与服务之间依赖关系比较复杂,管理比较复杂,所以需要使用服务治理,管理服务与服务之间的依赖关系,可以实现服务调用、负载均衡、容错 等,实现服务发现 阅读全文
摘要:
框架简介 基础框架地址: https://gitee.com/yyy-gitee/yct-cloud-parent/tree/base_no_cloud/ 基础框架(无任何SpingCloud组件版本)Demo 项目结构: 父工程 -- 公共模块(cloud-base-api) -- 公共模块(cl 阅读全文
摘要:
SpringCloud的Hoxton版本,和之前的版本相比,用新的组件替换掉了原来大部分的组件,老的组件现在处于 停更不停用 的状况。 详情见下图(× 的表示之前的组件,现在停更了的;√ 的表示新的替换后的组件): 描述: 服务注册中心: Eureka:官方停止更新,并且已经有更好的替代产品了,可以 阅读全文
摘要:
SpringBoot版本选择: 官网地址:https://spring.io/projects/spring-boot SpringBoot官方目前最新最稳定版:2.3.1,如果单独使用SpringBoot的话,建议就可以选择官方指定的最新最稳定版。 但是,如果需要和SpringCloud整合,就得 阅读全文
摘要:
LocalDate、 LocalTime、 LocalDateTime LocalDate、 LocalTime、 LocalDateTime 类的实例是 不可变对象 ,分表表示使用 ISO-8601 日历系统的日期、时间、日期和时间。他们提供了简单的日期或时间,并不包含当前的时间信息。也不包含与时 阅读全文
摘要:
Java8之前的日期和时间API,存在一些问题,最重要的就是线程安全的问题。这些问题都在Java8中的日期和时间API中得到了解决,而且Java8中的日期和时间API更加强大。 传统时间格式化的线程安全问题 示例: import java.text.SimpleDateFormat; import 阅读全文
摘要:
在Java8之前的版本中,接口中只能声明常量和抽象方法,接口的实现类中必须实现接口中所有的抽象方法。而在Java8中,接口中可以声明默认方法和静态方法。 接口中的默认方法 Java 8中允许接口中包含具有具体实现的方法,该方法称为“默认方法”,默认方法使用“ default ”关键字修饰 。 示例: 阅读全文
摘要:
什么是Optional容器类 Optional 类(java.util.Optional) 是一个容器类,代表一个值存在或不存在,原来用 null 表示一个值不存在,现在 Optional 可以更好的表达这个概念。并且可以避免空指针异常。 Optional类常用方法: Optional.of(T t 阅读全文
摘要:
什么是Stream Stream 是 Java8 中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。 使用Stream API 对集合数据进行操作,就类似于使用 SQL 执行的数据库查询。也可以使用 Stream API 来并行执行操作。简而言 阅读全文
摘要:
为什么使用Lambda表达式: Lambda是一个匿名函数,我们可以把Lambda表达式理解为是一段可以传递的代码(将代码像数据一样进行传递)。它是 JDK8 的一个新特性,可以取代大部分的匿名内部类,写出更优雅的 Java 代码,极大地优化代码结构。 JDK 也提供了大量的内置函数式接口供我们使用 阅读全文
摘要:
Consul官网:https://www.consul.io/ Consul简介: Consul 是一套开源的分布式服务发现和配置管理系统,由 HashiCorp 公司 用 Go 语言开发。 它提供了微服务系统中的 服务治理、配置中心、控制总线等功能。这些功能中的每一个都可以根据需要单独使用,也可以 阅读全文
摘要:
Zookeeper 服务器取代 Eureka 服务器,作为服务注册中心(因我本地没有安装Zookeeper,则下面内容无本人实战案例,引用的其他案例来说明) 服务提供者: 新建一个服务提供者 cloud-provider-payment8004(与前面Eureka服务提供者区分),端口8004 引入 阅读全文