Spring Cloud

根治可扩展、高可用、高性能“神器”:SpringCloud+Nginx高并发编程手册

∥☆過路亽.° 提交于 2020-12-01 14:54:34
在面试过程中几乎是必问到高并发一些问题,而本篇就是SpringCloud结合Nginx解答高并发开发、大厂面试的核心难题!本篇旨在帮助开发工程师弥补在Spring Cloud微服务、Nginx反向代理核心知识方面的短板! 统筹全篇 这份手册前6章剖析Feign高并发RPC的底层原理,解析Hystrix高性能配置的核心选项,阐述Hystrix滑动窗口的核心原理。后4章介绍Nginx的核心原理及其配置,并结合秒杀场景实现Spring Cloud秒杀、Spring Cloud+Nginx Lua秒杀,为广大Java开发者提供一个全面学习高并发开发的实战案例。 同时这份笔记也是免费分享的,免费获取方式在文末! 第1章Spring Cloud+Nginx高并发核心编程的学习准备 第2章Spring Cloud入门实战 第3章Spring Cloud RPC远程调用核心原理 第4章RxJava响应式编程框架 第5章Hystrix RPC保护的原理 第6章微服务网关与用户身份识别 第7章Nginx/OpenResty详解 第8章Nginx Lua编程 第9章限流原理与实战 第10章Spring Cloud +Nginx秒杀实战 总结 这份手册可以说是SpringCloud+Nginx高并发编程实战中一份弥足珍贵的笔记,无论是在日常开发之中开始面试前的准备,都是值得大家去阅读理解!

资深码农教你写详细设计(附示例模板)

。_饼干妹妹 提交于 2020-12-01 13:24:58
很多小伙伴都不知道怎么写详细设计,本期就带大家看一下详细设计都有哪些内容。 喜欢听我叨叨的,直接看视频: https://www.bilibili.com/video/BV1Rv411t72b/ 不同的公司,详细设计不太一样,有的细,有的粗,有的甚至没有详细设计。 像银行那种一个月上线一次的,详设可以写一个星期的,不在本文讨论范围内。 像老板说这个需求明天就要的,也不在本文讨论范围内。 本文介绍的是大多数场景:“这个需求,下周就要。” 详细设计文档一般包含以下这些内容: 01 基本信息 公司的文档一般有统一的规范格式,文档的开头,一般要包含公司信息、项目名称、业务名称、版本号等。 02 变更历史 每个文档都应该有一个变更历史,即使后面可能不会再变了 ​ 03 需求描述 这里可以简要描述需求,或放入需求文档的链接,方便随时查看详细设计对应的需求。 拒绝一句话需求: 产品:下周上个新功能:登录 程序员:需求呢?有具体一点的吗? 产品:就是登录啊! 程序员:!@#¥%……&* 04 功能拆分 有些需求很简单,需求说完,改哪些东西,心里就有数了。 但是更多的需求还是比较复杂的,比如我们这个示例:完成单点登录功能。这时需要开个需求分析会议。 需求分析会议一般由开发主导,在会上,需要将需求拆分出一个一个的功能点,功能点可以是界面,接口,集成某个技术等等。 有了功能点后,就可以大概估工时了

Spring Cloud Alibaba Sentinel 断路器

≡放荡痞女 提交于 2020-11-30 21:22:01
学习在 Spring Cloud 中使用 Sentinel 实现断路器,类似 Spring Cloud Netflix Hystrix ,包括实时监控、簇点链路、流控、降级等功能。 Sentinel 提供的功能更强大,使用更方便,可以替代 Hystrix ,还能结合 Nacos 中的配置中心一起使用。 1 概述 Sentinel 的使用场景丰富,有完备的实时监控,广泛的开源生态。 Sentinel 整体上可以分为两个核心部分: 核心库和控制台 。 2 安装 首先下载控制台 jar 包,这是一个 Spring Boot 工程,下载好之后,直接启动。 下载地址: https://github.com/alibaba/Sentinel/releases/download/1.7.2/sentinel-dashboard-1.7.2.jar Sentinel 启动成功后,访问 http://127.0.0.1:8080 就能看到后台页面了,默认用户名/密码都是 sentinel 。 3 基本使用 创建 Spring Boot 项目 spring-cloud-sentinel ,添加 Web/Sentinel 依赖,如下: 最终的依赖如下: <dependencies> <dependency> <groupId>org.springframework.boot</groupId>

Spring Cloud Alibaba 整合 Sentinel

独自空忆成欢 提交于 2020-11-30 10:28:46
一、需求 实现一个简单的 整合 sentinel ,不涉及 sentinel 的用法 二、实现步骤 1、下载 sentinel dashboard https://github.com/alibaba/Sentinel/releases 注意: 默认会启动 8080 端口,如果端口冲突,可以在启动命令上加入 -Dserver.port=新端口 默认用户名和密码[ sentinel/sentinel ] 启动控制台可用的配置项 2、服务提供者和消费者引入sentinel依赖 <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> </dependency> 注意: 在这个里面查找 sentinel-core 的版本号,可以确定我们需要下载那个版本的 sentinel dashboard 3、配置控制台信息 spring: sentinel: transport: # 控制台的地址 dashboard: localhost:8080 # 与控制台通讯的端口,默认是8719,不可用会一直+1,知道找到一个可用的 port: 8719 # 和控制台保持心跳的ip地址 client-ip: 127.0.0.1 #

18.SpringCloud实战项目-整合OpenFeign远程调用

烈酒焚心 提交于 2020-11-30 10:28:29
SpringCloud实战项目 PassJava 全套学习教程连载中, 关注公众号 第一时间获取。 文档在线地址: www.jayh.club 连载中... 打造一款 刷Java 知识的小程序 打造一款 刷Java 知识的小程序(二) 01. 五 分钟搞懂分布式基础概念 02. 快速搭建Linux环境-运维必备 03.配置虚拟机网络 04. 安装docker 05.docker 安装mysql 06 . docker安装redis 07. 本地开发环境配置 08. 配置Git 09.初始化项目和添加微服务 10. 微服务划分图 11.初始化数据库和表 12.快速搭建管理后台 13.自动生成前后端代码 14.整合MyBatis-Plus实现CRUD 15.生成五大微服务的CRUD代码 16.SpringCloudAlibaba组件简介 17.SpringCloudAlibaba-Nacos 1.Feign 概述 Feign声明式客的HTTP客户端,让远程调用更简单。 提供了HTTP请求的模板,编写简单的接口和插入注解,就可以定义好HTTP请求的参数、格式、地址等信息 整合了Ribbon(负载均衡组件)和Hystix(服务熔断组件),不需要显示使用这两个组件 Spring Cloud Feign 在Netflix Feign的基础上扩展了对SpringMVC注解的支持 2.

SpringCloud : 多个 @FeignClient 注解 value 设置为同一个应用的解决方案

青春壹個敷衍的年華 提交于 2020-11-30 03:07:41
SpringCloud : 多个 @FeignClient 注解 value 设置为同一个应用的解决方案 参考文章: (1)SpringCloud : 多个 @FeignClient 注解 value 设置为同一个应用的解决方案 (2)https://www.cnblogs.com/phpdragon/p/12119128.html 备忘一下。 来源: oschina 链接: https://my.oschina.net/stackoom/blog/4759430

Spring Cloud Stream教程(五)编程模型

巧了我就是萌 提交于 2020-11-29 17:44:17
本节介绍Spring Cloud Stream的编程模型。 Spring Cloud Stream提供了许多预定义的注释,用于声明绑定的输入和输出通道,以及如何收听频道。 声明和绑定频道 触发绑定 @EnableBinding 您可以将Spring应用程序转换为Spring Cloud Stream应用程序,将 @EnableBinding 注释应用于应用程序的配置类之一。 @EnableBinding 注释本身使用 @Configuration 进行元注释,并触发Spring Cloud Stream基础架构的配置: ... @Import(...) @Configuration @EnableIntegration public @interface EnableBinding { ... Class<?>[] value() default {}; }    @EnableBinding 注释可以将一个或多个接口类作为参数,这些接口类包含表示可绑定组件(通常是消息通道)的方法。 注意 在Spring Cloud Stream 1.0中,唯一支持的可绑定组件是Spring消息传递 MessageChannel 及其扩展名 SubscribableChannel 和 PollableChannel 。 未来版本应该使用相同的机制将此支持扩展到其他类型的组件。 在本文档中

Spring Cloud源码分析之Eureka(一)

别来无恙 提交于 2020-11-29 08:15:13
开场白 当项目拆分成多个微服务时,这个时候多个服务就需要进行管理,服务提供者把服务注册上去,其他消费者就可以进行调用了,当有新的服务注册上来,客户端会定时拉去服务列表跟 本地存在的服务列表对比,进行服务列表的更新,当有服务下线,也会更新列表,服务提供者和消费者是动作的主要发起者,eureka注册中心是处理请求的接收者,可以先从eureka客户端作为入口研究,看看主动发起者是怎样和注册中心完成通信的。 源码分析 1、EnableDiscoveryClientImportSelector加载启动类的所有元数据信息 2、加载所有jar自动配置类并去掉重复的类,然后就是类的自动装配 3、DiscoveryClient是EurekaClien的默认实现类,这个类是单例,并且实现了EurekaClient和LookupService 4、DiscoveryClient类里面有个定时任务初始化的方法,这个方法里面的逻辑还是比较复杂的,第一个是每隔30s定时获取最新的服务列表;第二个是每隔30s定时续约服务;第三个是首先周期注册服务,然后每隔30s定时刷新防踢,注册服务。 5、DiscoveryClient里面通过client调用远程服务进行服务续约,注册是同样的原理。 总结 一、eureka客户端做了下面几件事情: 1、定时获取服务最新列表 2、定时续约注册的服务 3、注册服务到注册中 4

一言难尽,Jpa这个功能差点让我丢了工作

北城以北 提交于 2020-11-29 03:30:33
故事背景 前阵子,有位朋友在微信上问我数据被删了能不能恢复,我问了下原因,居然是因为一个配置项惹的祸。 故事细节 在 Spring Boot 中使用 jpa 来操作数据库,jpa 就不做详细的介绍了,相信大家都有所了解或者也用过。 在 jpa 中有一个配置项,可以让程序在启动的时候自动初始化表结构或者更新表结构的功能。听上去很不错,非常实用。 其实这是一个非常危险的功能,个人觉得不应该提供这种功能,只要留了口子就有可能会出问题。 这个配置就是: spring.jpa.hibernate.ddl-auto create( 危险系数 2 颗星 ) 应用启动的时候,如果数据库中没有对应的表,就会自动根据实体类的结构创建一个表结构。如果表已经存在了就会将表中的数据清空。 create-drop( 危险系数 3 颗星 ) 应用启动的时候,如果数据库中没有对应的表,就会自动根据实体类的结构创建一个表结构。如果表已经存在了就会将表中的数据清空。 程序停止的时候会将数据库中所有表删除掉。 update( 危险系数 1 颗星 ) 应用启动的时候,如果数据库中没有对应的表,就会自动根据实体类的结构创建一个表结构。如果表已经存在了就会判断有没有新增字段或者修改长度之类的,如果有则会更新表结构,不会影响数据。 validate( 危险系数 0 颗星 ) validate 不会更新和删除表或者数据

Spring boot 2.0 新特性之动态 Banner

允我心安 提交于 2020-11-28 07:01:33
Spring Boot 2.0 提供了很多新特性,其中就有一个小彩蛋:动态 Banner,今天我们就先拿这个来尝尝鲜。 配置依赖 使用 Spring Boot 2.0 首先需要将项目依赖包替换为刚刚发布的 2.0 RELEASE,现在网站 https://start.spring.io/ 也将 Spring Boot 2.0 设置为默认版本。 < parent> < groupId>org.springframework.boot </ groupId> < artifactId>spring-boot-starter-parent </ artifactId> < version>2.0.0.RELEASE </ version> </ parent> 设置完毕后, dependencies 中没有指明版本的依赖包,将自动使用2.0.0.RELEASE依赖的版本。 < dependencies> < dependency> < groupId>org.springframework.boot </ groupId> < artifactId>spring-boot-starter </ artifactId> </ dependency> </ dependencies> Spring Boot 2.0 刚刚发布,一些 Maven 仓库还没更新,如果导入项目后依赖包不能下载