2019

最近Spring Cloud Alibaba发布了最新版本,其中包含了一些比较重要的内容,比如:Nacos 1.0.0支持,Dubbo的支持等。所以把之前的系列文章中内容以及代码案例都做了升级,其中包括: Spring Cloud Alibaba 从 0.2.1 升级到 0.2.2 Nacos 从 0.8.0 升级到 1.0.0 Sentinel 从 1.4.0 升级到 1.5.2 在整个升级过程中,主要注意以下几点,对于已经阅读过之前内容的读者,看这里就好: Nacos的升级基本是无缝的,碰到过一些读者的问题,主要是Spring Cloud Alibaba版本与Nacos版本的不匹配。比如:使用Spring Cloud Alibaba 0.2.1与Nacos 1.0.0;读者千万要注意好这里的版本关系。 Sentinel的升级,主要有两点: Sentinel-Dashboar...

先声明一下,本文不聊ISSUE中的七七八八,也不聊代码是否写的好,更不聊是不是跟蔡徐坤有关之类的吃瓜内容。仅站在技术人的角度,从这次的代码泄露事件,聊聊在代码的安全管理上,通常都需要做哪些事来预防此类事件的发生。同时,大家在阅读本文的时候,也可以深入思考下,自己团队是否也存在类似的问题,经过这次的事件,是否有必要针对性的做一些优化。 最小权限“最小权限”原则是我们在学习Linux用户管理时候经常被提到,并且被反复强调的内容。该原则是指每个程序和系统用户都应该具有完成任务所必需的最小权限集合。赋予每一个合法动作最小的权限,就是为了保护数据以及功能避免受到错误或者恶意行为的破坏。 在代码的安全管理上,“最小权限”原则同样适用。但是,从此次的代码泄露内容中可以看到,这一点做的并不好,一起来看看源自泄露代码的README介绍: 从说明中,可以知道这是一个后端项目的大仓库,每个业务线都通过文...

在Nacos 1.0.0 Release之后,Spring Cloud Alibaba也终于发布了最新的版本。该版本距离上一次发布,过去了整整4个月!下面就随我一起看看,这个大家期待已久的版本都有哪些内容值得我们关注。 版本变化之前在《Spring Cloud Alibaba与Spring Boot、Spring Cloud之间不得不说的版本关系》一文中,我有提到过当前版本的Spring Cloud Alibaba还处于孵化器中,没有纳入Spring Cloud的主线版本。所以,我们在使用的时候需要明确Spring Boot、Spring Cloud主版本以及Spring Cloud Alibaba之间的版本关系。 这次的更新,在版本上与我之前文章中说的0.2.2来支持Greenwich有所区别。这里纠正一下,对于Greenwich版本的支持采用了0.9.x的版本号来对应,所以Spr...

上一篇我们介绍了如何通过Nacos的配置功能来存储限流规则。Apollo是国内用户非常多的配置中心,所以,今天我们继续说说Spring Cloud Alibaba Sentinel中如何将流控规则存储在Apollo中。 使用Apollo存储限流规则Sentinel自身就支持了多种不同的数据源来持久化规则配置,目前包括以下几种方式: 文件配置 Nacos配置 ZooKeeper配置 Apollo配置 本文我们就来一起动手尝试一下,如何使用Apollo来存储限流规则。 准备工作下面我们将同时使用到Apollo和Sentinel Dashboard,所以可以先把Apollo和Sentinel Dashboard启动起来。 如果还没入门Sentinel Dashboard可以通过文末的系列目录先学习之前的内容。Apollo的话相对复杂一些,这里不做详细介绍了,如果还没有接触过Apollo...

通过上一篇《使用Sentinel实现接口限流》的介绍,相信大家对Sentinel已经有了初步的认识。在Spring Cloud Alibaba的整合封装之下,接口限流这件事情可以非常轻易的整合到我们的Spring Cloud应用中。但是,通过上篇的整合,依然还不能完美的满足我们日常的生产需求。其中,非常重要的一点就是限流规则的持久化问题。不少细心的读者也在留言中提出了Dashboard中设置的限流规则在应用重启之后就丢失了的问题。那么,接下来我们就来说说Sentinel的规则持久化如何实现。 使用Nacos存储限流规则Sentinel自身就支持了多种不同的数据源来持久化规则配置,目前包括以下几种方式: 文件配置 Nacos配置 ZooKeeper配置 Apollo配置 本文我们就来一起动手尝试一下,使用Spring Cloud Alibaba的中整合的配置中心Nacos存储限流规...

Spring Boot框架本身并没有对工程结构有特别的要求,但是按照最佳实践的工程结构可以帮助我们减少可能会遇见的坑,尤其是Spring包扫描机制的存在,如果您使用最佳实践的工程结构,可以免去不少特殊的配置工作。 典型示例以下结构是比较推荐的package组织方式: com +- example +- myproject +- Application.java | +- domain | +- Customer.java | +- CustomerRepository.java | +- service | +- CustomerService.java | +- web | +- CustomerController.java | root pa...

最近管点闲事浪费了不少时间,感谢网友libinwalan的留言提醒。及时纠正路线,继续跟大家一起学习Spring Cloud Alibaba。 Nacos作为注册中心和配置中心的基础教程,到这里先告一段落,后续与其他结合的内容等讲到的时候再一起拿出来说,不然内容会有点跳跃。接下来我们就来一起学习一下Spring Cloud Alibaba下的另外一个重要组件:Sentinel。 Sentinel是什么Sentinel的官方标题是:分布式系统的流量防卫兵。从名字上来看,很容易就能猜到它是用来作服务稳定性保障的。对于服务稳定性保障组件,如果熟悉Spring Cloud的用户,第一反应应该就是Hystrix。但是比较可惜的是Netflix已经宣布对Hystrix停止更新。那么,在未来我们还有什么更好的选择呢?除了Spring Cloud官方推荐的resilience4j之外,目前Spr...

之前我发过一篇《说说我为什么看好Spring Cloud Alibaba》,然后这两天有网友给我转了这篇文章《坑爹项目spring-cloud-alibaba,我们也来一个》,问我的看法是怎么样的,聊天时候简单说了一下。今天在家休息,抽空整理一下内容,逐点说一下我的看法,主要还是觉得这篇文章博眼球的成分高一些,因为这篇文章的解读与之前其他某些自媒体发布的《Eureka 2.0 开源工作宣告停止,继续使用风险自负》一文有异曲同工之“妙”,如果读者没有真正的理解Spring Cloud与Spring Cloud Alibaba,就很有可能会对它们有什么误解,然后产生这样的想法: 感觉很有道理,这东西真垃圾 标题很燃,必须转发 下面具体来说说该文章中,那些我认为不太正确的解读: 第一点:远程调用RPC看看这篇文章的解读: SpringCloud默认的是Feign和Ribbon,主要是...

最近对《Spring Cloud Alibaba基础教程》系列的催更比较多,说一下最近的近况:因为打算Spring Boot 2.x一起更新。所以一直在改博客Spring Boot专题页和Git仓库的组织。由于前端技术太过蹩脚,花了不少时间。大家不用担心,这个系列不会太监,因为我真心看好这个套件的未来,后续的更新也会继续赶上来。 今天就水更一篇吧,跟大家聊一下平时被问的比较多的一类问题,Spring Cloud Alibaba是什么,我为什么要写Spring Cloud Alibaba基础教程? Spring Cloud Alibaba是什么简介 Spring Cloud Alibaba从名字上看,就知道一定跟Spring Cloud有关,但是我们为什么在Spring Cloud官方文档中看不到它的影子呢?因为它目前还是一个孵化项目,它的仓库也位于Spring Cloud孵化器中,G...

现在各种运营套路层出不穷,已经见怪不怪了。但是,我昨天经历了一件非常奇葩的事,也深入扒了一下这事背后的真相,发现一些让我觉得非常“脏”的行为,还是出自某自媒体大佬之手。 起因前天,我按照之前立的Flag,开始继续更新我从2016年2月开始写的《Spring Boot基础教程》。昨天,通过公众号推送了第一篇更新:《Spring! Boot 2.x基础教程:快速入门》,在推文发布之后,有大部分的读者都是表示支持的,当然,不出意料的还是会有几位粉丝来一些吐槽,比如:这类内容到处都是啦等等。 其中,有一位粉丝留言比较特殊,因为他直接指出:我抄袭某大v的文章。好吧,关于抄袭啊、洗稿啊这样的谩骂其实见怪不怪了。就如我在《全网Star最多的Spring Boot教程要更新了》一文中说的那样,由于国内技术平台与搜索引擎的缘故,第一作者一直都没有得到很好的保护。我的第一反应自然是对方抄了或者洗了我的文...

简介在您第1次接触和学习Spring框架的时候,是否因为其繁杂的配置而退却了?在你第n次使用Spring框架的时候,是否觉得一堆反复黏贴的配置有一些厌烦?那么您就不妨来试试使用Spring Boot来让你更易上手,更简单快捷地构建Spring应用! Spring Boot让我们的Spring应用变的更轻量化。我们不必像以前那样繁琐的构建项目、打包应用、部署到Tomcat等应用服务器中来运行我们的业务服务。通过Spring Boot实现的服务,只需要依靠一个Java类,把它打包成jar,并通过java -jar命令就可以运行起来。这一切相较于传统Spring应用来说,已经变得非常的轻便、简单。 总结一下Spring Boot的主要优点: 为所有Spring开发者更快的入门 开箱即用,提供各种默认配置来简化项目配置 内嵌式容器简化Web项目 没有冗余代码生成和XML配置的要求 快速入...

在我读研期间,曾经有一位教授令我感触特别深,现在跟很多刚入行的朋友们聊的时候,我也经常会把他对我的影响搬出来说。他并不是我们学院长期任教的讲师,而是来自美国普渡大学的教授,他只教了我们一个学期的课,而且是一门前沿技术研究的特殊课程。现在回想,还是感到非常的幸运,因为如今的我,有很多方面的塑造可能都受到了他的影响。 这位教授跟我的直接接触非常少,甚至可以说没有,他可能都不会记得我这样一个人。但是在他任教的那一个学期的课中,却对我产生了极大的影响! 大到什么程度?可能有点像蝴蝶效应!为什么这么说呢? 因为他令我感触最深的点非常特别,并不是因为他给了我大学生涯以来最高的一次单科成绩,也不是他在什么方面给予过我极大的帮助等等这些大家可能会猜测的方向。我现在印象最深刻的只有他在上课时候闲扯说的一句话,以及他所任教这门课的考核方式,在当时,可能就如蝴蝶在身边煽动翅膀那样,没有很深的感触,但是在之...

从2016年1月开始写博客,默默地更新《Spring Boot系列教程》,从无人问津到千万访问,作为一个独立站点(http://blog.didispace.com),相信只有那些跟我一样,坚持维护自己独立博客的童鞋才能体会这有多么不容易。 由于没有CSDN、博客园这样的权重优势,各种发布于这些平台上的洗稿文章与相似内容,就算发布时间较晚,它依然可以在百度上占据很大的搜索优势,以至于一些读者在读了其他人发布于CSDN、博客园上的一些文章之后看到我的原文,再来我这里喷我抄袭,这样的现象早已经习以为常了。但是庆幸,这些内容的很大一部分读者都是科学上网的好手,我大部分的流量来源都源自谷歌,这点不得不佩服谷歌对原创与一手内容的尊重,这才让我们这些能够独立思考与写作分享的技术人可以一直坚持下去。 不知道从什么时候开始,技术圈里的浮夸运营风也越来越重,各种原本非常有含金量的数据也变得越来越虚假,...

动态配置管理是 Nacos 的三大功能之一,通过动态配置服务,我们可以在所有环境中以集中和动态的方式管理所有应用程序或服务的配置信息。 动态配置中心可以实现配置更新时无需重新部署应用程序和服务即可使相应的配置信息生效,这极大了增加了系统的运维能力。 动态配置下面我将来和大家一起来了解下 Nacos 的动态配置的能力,看看 Nacos 是如何以简单、优雅、高效的方式管理配置,实现配置的动态变更的。 我们用一个简单的例子来了解下 Nacos 的动态配置的功能。 环境准备首先我们要准备一个 Nacos 的服务端,现在有两种方式获取 Nacos 的服务端: 1.通过源码编译 2.下载 Release 包 两种方法可以获得 Nacos 的可执行程序,下面我用第一种方式通过源码编译一个可执行程序,可能有人会问为啥不直接下载 Release 包,还要自己去编译呢?首先 Release 包也是通...

这篇博文是临时增加出来的内容,主要是由于最近连载《Spring Cloud Alibaba基础教程》系列的时候,碰到读者咨询的大量问题中存在一个比较普遍的问题:版本的选择。其实这类问题,在之前写Spring Cloud基础教程的时候,就已经发过一篇《聊聊Spring Cloud版本的那些事儿》,来说明Spring Boot和Spring Cloud版本之间的关系。 Spring Cloud Alibaba现阶段版本的特殊性现在的Spring Cloud Alibaba由于没有纳入到Spring Cloud的主版本管理中,所以我们需要自己去引入其版本信息,比如之前教程中的例子: <dependencyManagement> <dependencies> <dependency> <groupId>...