Spring Cloud

2020 年,从架构谈起,到 Mesh 结束

一笑奈何 提交于 2020-08-09 04:15:28
作者 | 张羽辰(同昭)阿里云交付专家 导读 :如今,几乎所有的事情都离不开软件,当你开车时,脚踩上油门,实际上是车载计算机通过力度感应等计算输出功率,最终来控制油门,你从未想过这会是某个工程师的代码。 当我们谈论架构时,我们到底在谈论什么? 面向对象编程?函数式?模块化设计?微服务?这些词汇貌似都和架构这个 buzzword 有点关系,的确我们这个领域充满了很多难以理解的词汇,这些词汇从英语翻译到中文已经丧失了部分上下文,再随着上下文的改变使得意义彻底扭曲,比如:引擎、框架、架构、应用、系统……诚然大家都或多或少对这些词语达成共识,在工作中使用这些词汇进行沟通,某时就是指“我们都懂的那个东西”,但是在我深入的想聊聊架构或者说软件架构时,的确不得不问自己这个问题,我们到底是谈论什么? 事实上,架构这个词根据上下文所确定的范围较为固定,建筑学上的架构指代房屋结构、整体设计、组合构成等,而这些 high-level 设计往往并不需要全面了解底层,就像使用 RestTemplate 进行 WebService 调用时,我们也不关心 socket 是在四层连接的一样, 因为细节被隐藏了 。 但是,建筑学上的架构与软件架构却又极大的不同之处,问题出现在“软件”这个词上,按照 software 的词解,ware 是指产品一样的东西,而 soft 则强调易变,这是与 hardware 所对应的

SpringCloud- 第五篇 Hystrix快速上手(二)

亡梦爱人 提交于 2020-08-09 04:11:00
1:SpringCloud中使用: 1.1:加入依赖 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-hystrix</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-hystrix-dashboard</artifactId> </dependency> 1.2:启动类上添加 @SpringBootApplication @EnableHystrixDashboard @EnableCircuitBreaker //@EnableHystrix 1.3:Controller上配置 在Controller的方法上添加Hystrix的配置,形如: @HystrixCommand(fallbackMethod = "error

Java多线程之守护线程实战

空扰寡人 提交于 2020-08-09 02:38:48
定义 什么是守护线程?与守护线程相对应的就是用户线程,守护线程就是守护用户线程,当用户线程全部执行完结束之后,守护线程才会跟着结束。也就是守护线程必须伴随着用户线程,如果一个应用内只存在一个守护线程,没有用户线程,守护线程自然会退出。 应用 下面是守护线程的一个简单应用 创建一个简单的线程,把一个线程设置daemon为true即表示设置为守护线程,这里主线程是用户线程阻塞用户任何一个系统输入后退出,守护线程守护的是主线程,守护线程每隔一秒打印i的值,直到主线程输入任何一个字符退出,主线程退出了守护线程也就会跟就退出不再打印。 运行上面的程序,随便输入一个字符:n,守护线程就退出了,程序停止打印。 注意 setDaemon方法必须设置在线程start方法启动之前,不然会抛出异常。 推荐去我的博客阅读更多: 1. Java JVM、集合、多线程、新特性系列教程 2. Spring MVC、Spring Boot、Spring Cloud 系列教程 3. Maven、Git、Eclipse、Intellij IDEA 系列工具教程 4. Java、后端、架构、阿里巴巴等大厂最新面试题 觉得不错,别忘了点赞+转发哦! 来源: oschina 链接: https://my.oschina.net/u/4357969/blog/4277100

Spring Boot 项目瘦身指南,瘦到不可思议!

本小妞迷上赌 提交于 2020-08-08 23:52:37
目录: 1.前言 2.瘦身前的Jar包 3.解决方案 一、前言 Spring Boot 部署起来虽然简单,如果服务器部署在公司内网,速度还行,但是如果部署在公网,部署起来实在头疼:编译出来的 Jar 包很大,如果工程引入了许多开源组件( Spring Cloud 等),那就更大了。 这个时候如果想要对线上运行工程有一些微调,则非常痛苦。 二、瘦身前的Jar包 Tomcat 在部署Web工程的时候,可以进行增量更新, Spring Boot 也是可以的~ Spring Boot 编译出来的Jar包中,磁盘占用大的,是一些外部依赖库(jar包),例如:进入项目工程根目录,执行 mvn clean install 命令,得到的Jar包,用压缩软件打开,目录结构如下: 整个Jar包 18.18 MB, 但是 BOOT-INF/lib 就占用了将近 18 MB: 三、解决方法 步骤1: 正常编译JAR包,解压出lib文件夹 POM文件如下: <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <mainClass>com.johnnian.App</mainClass>

你知道的微服务技术栈都有哪些?

ぐ巨炮叔叔 提交于 2020-08-08 23:48:59
作者:林必昭 描述:该文章详细列举的服务技术栈的抓哟技术都有哪些,分别时用来做什么的 微服务开发技术栈 微服务“两大门派” 阿里系 Apache Dubbo Nacos Sentinel RocketMQ Spring Cloud Netflix Eureka Netflix Ribbon Netflix Hystrix Netflix Zuul Spring Cloud Config Spring Cloud Alibaba Spring Cloud Alibaba为分布式应用程序开发提供了一站式解决方案。它包含开发分布式应用程序所需的所有组件,使您可以轻松使用Spring Cloud开发应用程序。 使用Spring Cloud Alibaba,您只需添加一些注释和少量配置即可将Spring Cloud应用程序连接到Alibaba的分布式解决方案,并使用Alibaba中间件构建分布式应用程序系统。 官网 Github 特征: 流控制和服务降级 :默认情况下,支持HTTP服务的流控制。您还可以使用注释来自定义流控制和服务降级规则。规则可以动态更改。 服务注册和发现 :可以注册服务,并且客户可以使用Spring托管的bean(自动集成功能区)发现实例。 分布式配置 :支持分布式系统中的外部配置,配置更改时自动刷新。 事件驱动 :支持构建与共享消息系统连接的高度可扩展的事件驱动微服务。

Spring Boot 2.3.0正式发布:优雅停机、配置文件位置通配符新特性一览

◇◆丶佛笑我妖孽 提交于 2020-08-08 21:23:46
当大潮退去,才知道谁在裸泳。。关注公众号【 BAT的乌托邦 】开启专栏式学习,拒绝浅尝辄止。本文 https://www.yourbatman.cn 已收录,里面一并有Spring技术栈、MyBatis、中间件等小而美的专栏供以学习哦。 目录 前言 关于版本号 正文 简单回忆2.2版本的新特性 主要新特性 优雅停机 配置属性的调整 删除不推荐使用的类/方法/属性 配置文件位置支持通配符 web下的日期转换支持配置 其它新特性 更改某些依赖最低版本要求 核心依赖升级 三方库依赖升级 Spring Data Neumann升级带来的变化 关于Validation 移除一些maven插件 支持Java14 Docker支持 Fat Jar支持优化 嵌入式Servlet Web Server线程配置 WebFlux基础路径配置 活性探测器 Actuator增强 好基友Spring Cloud什么时候跟上? 升级建议:等等 总结 前言 各位小伙伴大家好,我是A哥。北京时间2020-05-15,Spring Boot 2.3.0版本正式发布了,次版本号的升级,一般会有些新特性出来。作为Java Coder的我们有必要一览它的新new Feature,keep下技术节奏嘛。 A哥“第二时间”知道了这个消息,然后在自己本机(请注意:非生产环境)体验了一把,然后再结合Spring Boot官方的

Kitty Cloud(HTTP_RPC)的全局异常处理

三世轮回 提交于 2020-08-08 21:00:54
项目地址 https://github.com/yinjihuan/kitty-cloud 异常处理不用我讲,大家都清楚。单独的异常处理太繁琐,全局异常处理可以在一个应用中统一进行异常的处理,非常方便。目前全局异常处理用的也越来越广泛,今天跟大家来聊一聊 Kitty Cloud 中的全局异常是如何处理的? 为什么要使用全局异常处理呢? 使用全局异常处理后,我们不需要定义固定类型的返回值,当业务代码报错的时候直接通过异常处理方式来返回给前端或者 API 调用方错误信息。 不使用全局异常处理案例 Web 层 比如我们定义了一个 ResponseData 用来返回固定格式的数据,正常情况下不会有问题,给前端返回的格式也是固定的,如下: { "code":200, "data":{ "name":"yinjihuan" }, "message":"success", } 如果业务发生异常,那么这个接口就不会返回上面那样固定格式的数据了,会给我们返回错误页面。除了代码异常还有一种情况就是当访问的 Uri 错误的时候,也会给调用方返回 404 的错误页面,如下: 如果是传统的 Web 项目,里面包含了页面这是没问题的,我们也可以自定义错误页面让用户体验更好一点。但是在这个基本上是前后端分离的开发模式下,后端只提供的数据的 API,不会有页面的内容。所以就算出错了,就算使用者调用的 API

秒杀用“微服务”架构?不注意这些细节就惨了!

*爱你&永不变心* 提交于 2020-08-08 20:45:05
都 2020 年了 还没用过 微服务 吗? 面试的时候高并发回答的总是不能让面试官满意? 一个互联网项目究竟有多少细节? 网上搜了一堆秒杀系统方案,究竟真实的线上电商该怎么做? 那么你缺乏这两个字 实 战 消除痛点、解决面试、积累实战经验 欢迎你参加马士兵教育 微服务与高并发 训练营 本号粉丝: 免 费 两天你将学到 快速 · 上手微服务,了解各个组件的作用 极简 · 从点到面,内容绝不拖泥带水 实战 · 构建微服务项目 架构 · 高并发系统中组件解析与选型 健壮 · 互联网项目常用中间件服务 做到 · 从传统项目转向微服务互联网系统架构 吊打 · 面试官,独家解析淘宝网秒杀系统需求 马士兵是谁? 马士兵 马士兵老师,清华大学, 推动Java生根中国 , 推动大数据生根中国 , 推动AI生根中国 ,视频课程下载次数累计数 27000万次 。 训练营时间: 7月29日-7月30日,20:00 开营前:发放预习的基础资料 长按扫码,领预习资料,入群学习 遇到扫码频繁,请再次识别 福利较大,限前200人 第一天:快速上手SpringCloud微服务系统架构+常用中间件服务 SOA、Webservice、Dubbo、SpringCloud究竟什么是微服务? 单体应用向微服务异构平台架构演变 SpringCloud微服务组件生态体系 从零开始构建微服务项目各组件应用场景及代码实现

2020 年 从架构谈起到 Mesh 结束

╄→гoц情女王★ 提交于 2020-08-08 19:58:26
作者 | 张羽辰(同昭)阿里云交付专家 导读 :如今,几乎所有的事情都离不开软件,当你开车时,脚踩上油门,实际上是车载计算机通过力度感应等计算输出功率,最终来控制油门,你从未想过这会是某个工程师的代码。 当我们谈论架构时,我们到底在谈论什么? 面向对象编程?函数式?模块化设计?微服务?这些词汇貌似都和架构这个 buzzword 有点关系,的确我们这个领域充满了很多难以理解的词汇,这些词汇从英语翻译到中文已经丧失了部分上下文,再随着上下文的改变使得意义彻底扭曲,比如:引擎、框架、架构、应用、系统……诚然大家都或多或少对这些词语达成共识,在工作中使用这些词汇进行沟通,某时就是指“我们都懂的那个东西”,但是在我深入的想聊聊架构或者说软件架构时,的确不得不问自己这个问题,我们到底是谈论什么? 事实上,架构这个词根据上下文所确定的范围较为固定,建筑学上的架构指代房屋结构、整体设计、组合构成等,而这些 high-level 设计往往并不需要全面了解底层,就像使用 RestTemplate 进行 WebService 调用时,我们也不关心 socket 是在四层连接的一样, 因为细节被隐藏了 。 但是,建筑学上的架构与软件架构却又极大的不同之处,问题出现在“软件”这个词上,按照 software 的词解,ware 是指产品一样的东西,而 soft 则强调易变,这是与 hardware 所对应的

尚硅谷《谷粒商城项目总结》

喜你入骨 提交于 2020-08-08 19:11:54
1、前言 花了几天的时间把尚硅谷的视频项目看完了,跟着做了一遍,基本上没啥大的问题,有几个小问题也做了总结。 技术方面除了 vue/nacos 没用过,其他的基本都用过,我们公司实际开发中用的也就是这一套东西。 中间的不想看,可以直接点击目录,看总结,总结里有你针对此项目所有的总结及问题解决的说明 1.1 技术栈 springcloud 统一配置中心:apollo 视频里用的 nacos 统一注册中心:eureka 视频里用的 nacos 远程调用:feign 文件上传:OSS(oss 中有文件过期的设置,我们项目就因为这个出了问题。加了过期时间戳,然后到时间过期了,淡疼) vue,前端搞,我们只搞后端。 1.2 统一异常处理 1)、异常根据业务分类,然后不同的业务异常编码做到统一的规范.对后期也是很好的,方便维护、管理。 2)、enum 维护,2 个字段 code msg,可以和 R 对象一起使用,异常时返回给前端显示 3)、throw 异常, xxxException 自己实现的统一异常,构造参数传上 xxxErrorCode(接口),然后所有的错误 Enum 实现这个接口,执行下面的代码就可以了。 throw new XXXException(XXXEnum.NOT_USER_ERROR); 然后抛出异常后,这个类(@RestControllerAdvice)就会去统一处理