- 博客(217)
- 资源 (24)
- 论坛 (12)
- 问答 (1)
- 收藏
- 关注

原创 Spring Cloud Alibaba系列教程——Sentinel动态规则,使用 Nacos 配置规则
前言在学习之前的博文时,一旦我们重启服务,都会造成Sentinel规则的丢失,在生产环境是不可接受的,我们能否对规则进行持久化呢?答案是肯定的。这篇博文我们重点介绍sentinel规则的管理和推送,并使用nacos实现规则的配置。规则管理和推送Sentinel对于规则的管理和推送有三种方式:原始模式、Pull模式,Push模式。官方文档中,规则管理及推送介绍的都比较详细,每种模式的原理图,以及优缺点。在这三种模式中,前面的文章我们使用的是原始模式,但是在生产上,官网不建议大家使用。官网推荐通过动态配
2021-01-11 09:14:34
79

原创 菜鸟程序员成长之路(七)——2020年,你奋斗了吗?
首先祝大家元旦快乐。元旦也就意味着新年的开始,新起点!新征程!一切都会好起来的。在2020年接近末尾的时刻,我们从工作,生活,学习三个方面对2020年做一个简单的总结,最后立一个flag。。。前言人在北京,今天你奋斗了吗?2020年对于每个人来说都是艰难的一年,但也是充满机会的一年。相信大家都看到新闻了,最近北京的疫情有所反复,但是同时也被一张图片刷爆朋友圈。人在北京,今天你奋斗了吗?这不是心灵鸡汤,却能感同身受。最后一句话我把它做为本文的标题了!仿佛这句话就是在问我一样,我可以毫不迟疑地说:
2020-12-30 09:49:04
177
7

原创 Spring Cloud Alibaba系列教程——Spring Cloud Alibaba简介及版本说明
Spring Cloud Alibaba 是什么?开始准备起飞。。。
2020-05-13 09:58:35
1299
2

原创 Spring Cloud Alibaba系列教程——Spring Cloud Alibaba开篇
随着Spring Cloud Alibaba的发展,Spring Cloud Alibaba的相关组件逐渐的成熟,对于它的学习和研究已经是java开发人员的趋势。这篇博文主要内容是介绍什么是Spring Cloud Alibaba,Spring Cloud 与Spring Cloud Alibaba的关系,以及我们为什么要学习它,以及畅想Spring Cloud Alibaba未来发展。
2020-05-11 10:25:18
2278
原创 Spring Cloud Alibaba系列教程——Sentinel对RestTemplate和Feign的适配
前言上篇博文,我们介绍了什么是服务熔断,并重点介绍了SentinelResource的各个属性,在案例中整合了nacos,ribbon等中间件,微服务间调用,我们使用了RestTemplate,而且我们知道服务调用还可以使用Feign,那么Sentinel是否支持对它们也可以进行限流和降级呢?这篇博文我们的重点是介绍Sentinel如何对Feign和RestTemplate实现服务限流和降级。准备工作通过对上一篇博客的学习,大家对这张图已经非常的熟悉了,UserService作为服务消费者,Ord
2021-01-05 09:15:28
67
原创 Spring Cloud Alibaba系列教程——Sentinel服务熔断简介与实践
前言在Sentinel的核心注解SentinelResource简介与实践中,我们给大家详细的介绍了什么是SentinelResource,如何使用,以及其中一个重要属性blockHandler,它能够自定义sentinel控制台配置违规的异常信息,这篇博文,我们重点介绍它的另外一个重要属性fallback,它是什么,如何使用,它与blockHandler的区别。什么是服务熔断在开始之前,我们在简单理解什么是服务熔断。在降级规则中,我们介绍了什么是熔断降级,大家可以回顾一下。我们换一个通俗易懂的说法,
2020-12-28 09:08:21
59
原创 Spring Cloud Alibaba系列教程——Sentinel的核心注解SentinelResource简介与实践
前言前面的博文,我们已经将Sentinel的限流规则,基本介绍清楚了,从针对接口的限制规则,流控规则与降级规则;再到细粒度的接口参数的限制规则,即热点规则;再到粗粒度的应用级限制规则,系统规则和授权规则。这篇博文,我们重点关注SentinelResource这个注解,曾经在热点规则中,我们简单的使用过SentinelResource,并没有进行深入的讲解,博主必要做做到,事无巨细,事必躬亲,这篇来了,开始。什么是@SentinelResource注解@SentinelResource 注解用来标识资源
2020-12-23 13:38:13
47
1
原创 多线程之LockSupport,线程阻塞与唤醒(十四)
什么是LockSupportLockSupport是用来创建锁和其他同步类的基本线程阻塞原语。该类与使用它的每个线程关联一个许可证(与Semaphore类的意义上类似)。 如果许可证可用,将立即返回park ,并在此过程中消费; 否则可能会阻止。 如果尚未提供许可,则需要unpark获得许可。 (与Semaphore不同,许可证不会累积。最多只有一个。)看到上面的解释一头雾水,说人话:LockSupport类使用了一种名为permit(许可)的概念来做到阻塞和唤醒线程的功能,每个线程都有一个
2020-12-22 08:58:27
69
原创 Spring Cloud Alibaba系列教程——Sentinel系统规则与授权规则简介与实践
前面的博文,流控规则与降级规则,都是针对接口的限制规则,热点key规则是针对更加细粒度的接口参数的限制规则,同样Sentinel也提供了对系统级别的限制规则。Sentinel的限流规则的粒度,完全由你来定,有没有很期待?由于系统规则和授权规则,都比较简单,我们就使用一篇博文简单的介绍一下,大家做好实践就行了,好了,我们开始。系统规则什么是系统规则系统保护规则是从应用级别的入口流量进行控制,从单台机器的 load、CPU 使用率、平均 RT、入口 QPS 和并发线程数等几个维度监控应用指标,让系统尽可
2020-12-21 08:59:12
71
2
原创 Spring Cloud Alibaba系列教程——Sentinel热点key规则简介与实践
前面两篇博文,流控规则与降级规则,都是针对接口的限制规则,这篇博文我们介绍更加细粒度的接口参数的限制规则,即热点规则,马上开始。文章目录什么是热点热点规则整体认识案例情况一:使用URL作为资源名设置热点规则,规则无效情况二:使用@SentinelResource作为资源名设置热点规则情况三:自定义降级方法情况四:参数例外项总结什么是热点热点就是经常被访问的数据。热点参数限流,就是对接口的请求参数,根据配置的限流阈值与模式,对包含热点参数的资源调用进行限制。热点参数限流可以看做是一种特殊的流量控制,仅
2020-12-17 09:11:05
97
原创 Spring Cloud Alibaba系列教程——Sentinel降级规则简介与实践
上篇博文我们详细的介绍了流量控制规则,这篇博文我们重点介绍Sentinel另外一个重要的使命:熔断降级。文章目录什么是熔断降级熔断降级设计理念对熔断降级规则整体认识熔断策略慢调用比例案例异常比例案例异常数案例总结代码示例什么是熔断降级由于在分布式系统服务之间调用关系的复杂性,如果调用链路中的某个资源出现了不稳定,可能会导致请求发生堆积,进而导致级联错误。现代微服务架构都是分布式的,由非常多的服务组成。不同服务之间相互调用,组成复杂的调用链路,如下图所示:熔断降级就是当检测到调用链路中某个资源出现不
2020-12-15 08:53:52
1169
8
原创 Spring Cloud Alibaba系列教程——Sentinel流控规则简介与实践
上一篇博文,学习了Sentinel 的基本使用以及安装,接下来我们开始介绍Sentine 中的第一个规则,流控规则。文章目录什么是流量控制流量控制设计理念对流控规则整体认识阈值类型QPS案例线程数案例流控模式直接关联案例链路案例流控效果快速失败Warm up案例排队等待案例什么是流量控制流量控制(flow control),其原理是监控应用流量的 QPS 或并发线程数等指标,当达到指定的阈值时对流量进行控制,以避免被瞬时的流量高峰冲垮,从而保障应用的高可用性。任意时间到来的请求往往是随机不可控的,而
2020-12-11 09:10:53
65
1
原创 Spring Cloud Alibaba系列教程——Sentinel简介与安装
从这篇博文开始,我们开始介绍Spring Cloud Alibaba中另外一个核心组件:Sentinel,本文文章主要是简单介绍,整体认识,并进行下载,安装。
2020-12-08 14:52:59
87
原创 Spring Cloud Alibaba系列教程——Nacos高可用集群部署最佳实践-Docker版本
上篇博文我们介绍如何使用mysql做Nacos的数据持久化,在生产环境中,如果我们想让Nacos实现高性能、高可用、可持续性的对外提供服务,我们要冗余服务,实现集群化,这篇博文我们就重点介绍如何使用docker来部署Nacos集群,以及生产集群部署的最佳实践。文章目录集群部署架构图预备环境准备Nacos Docker 快速开始首先,编写好docker-compose.yaml文件其次,两个环境变量配置文件,nacos-hostname.en和mysql.envnacos-hostname.enmysql.
2020-12-08 09:09:10
96
2
原创 Spring Cloud Alibaba系列教程——Nacos的数据持久化
在Nacos系列的第一篇博文Spring Cloud Alibaba系列教程——Nacos介绍与安装,开启新时代中,我们已经介绍了Nacos的安装方式、以及如何启动,这篇博文是Nacos的安装的升级版本。在使用Nacos的过程,我们知道Nacos无论是作为配置信息还是作为注册中心,它的数据是使用嵌入式数据库实现数据的存储。Nacos能否将数据存储到数据库中呢?带着疑问,开始起飞。文章目录官网介绍前期准备具体步骤初始化数据库修改Nacos-server的配置文件启动服务总结官网介绍在0.7版本之前,在
2020-12-04 09:15:05
81
原创 Spring Cloud Alibaba系列教程——使用Nacos实现多环境配置以及最佳实践
上篇博文,我们对Nacos作为配置中心做了一个简单示例,并介绍了配置原理等内容。我们这篇博文使用Nacos实现多环境配置,并在文章最后阐述在产线应用上的最佳实践。针对这篇博文,我们使用上篇博文代码示例,大家可以在cloudalibaba-config-nacos-client3377应用中进行实践。概述我们在开发项目的时候,生产环境和测试环境的一些配置可能会不一样,所以我们可能会在上线的时候手工修改这些配置信息,但是非常容易出错。Spring为我们提供了Spring Boot Profile这个功能(M
2020-09-14 16:21:07
213
原创 Spring Cloud Alibaba系列教程——使用Nacos实现分布式配置中心
上篇博文我们对如何实现在微服务间进行调用以及如何实现负载均衡进行全面的解析,这篇博文开始,介绍Nacos另外一个强大的功能:配置中心,这篇博文主要是一个快速入门,后面博客在从原理上进行介绍。什么是配置中心为什么需要配置中心?在我们开发分布式微服务项目之前,我们通常的做法都是将配置文件跟我们的项目一起打包,部署。一旦配置需要变更,我们需要硬编码进行修改,重新上线,重启服务,这样非常的不灵活,也非常不友好,如果配置出错,就又要重启服务。因此我们需要一个集中管理配置文件的服务,这个服务能够帮助我们实现配置集中
2020-09-08 09:23:30
129
原创 Spring Cloud Alibaba系列教程——解锁服务调用姿势与负载均衡
上篇博文,我们介绍了Nacos作为分布式注册中心,实现服务注册与发现,服务消费者调用服务提供者时,我们是通过LoadBalancerClient接口来获取的服务实例,LoadBalancerClient是一个比较底层的API接口,对开发人员来说,我们需要拼接服务的地址,调用方式并不友好,而且对于SpringCloud原有的架构来说,没有更好的兼容现在的框架或服务。我们能不能使用RestTemplate,OpenFeign来调用服务,同样使用Ribbon来实现软负载均衡呢?答案是肯定的。准备工作在开始下面
2020-08-24 09:07:33
227
原创 多线程之死锁定位及故障分析,尽可能避免线上事故(十三)
前两篇博文,我们介绍了[线程池技术实现原理,这篇就够了](https://blog.csdn.net/jiuqiyuliang/article/details/102383861)以及线程池的拒绝策略,以及生产环境如何合理设置参数,比较彻底的介绍了线程池。我们对多线程已经介绍了很多的内容,针对多线程,高并发的分布式系统,编写的代码一定会有问题,而且问题比较多。那么有哪些问题是比较常见的问题呢?死锁就是其中一个比较常见的问题,这篇博文我们介绍什么是死锁,以及死锁产生的原因,还有定位死锁。
2020-07-03 09:56:32
263
原创 Spring Cloud Alibaba系列教程——使用Nacos作为分布式注册中心,实现服务注册与发现
上篇博文我们介绍了Nacos的基本概念以及进行了安装,相信大家已经对Nacos有了基本认识,其实说白了Nacos就是分布式注册中心和分布式配置中心的集合体。这篇博文我们介绍Nacos的第一个特性,服务的注册与发现,也就是分布式注册中心的核心功能。什么是服务注册与发现服务注册与发现是来自于微服务架构的产物。在传统的架构系统中,服务的数量较少,一般使用静态配置的方式实现服务信息的配置。而伴随着微服务架构的发展,服务实例的数量和网络地址都是动态变化的,此时对系统运维提出了巨大的挑战。面对成百上千的服务实例,为
2020-07-02 08:57:50
866
原创 多线程之线程池的拒绝策略,以及生产环境如何合理设置参数(十二)
上篇博文,我们详细的介绍了[线程池的原理](https://blog.csdn.net/jiuqiyuliang/article/details/102383861),这篇我们重点介绍线程池的饱和策略,以及生产环境如何合理设置参数。为什么我们要单独拿出一篇博文来写饱和策略以及配置参数呢?因为自定义线程池配置的重点就两项:一、选择合适的线程池类型,二、配置合适的饱和策略与参数。
2020-02-24 09:54:02
522
原创 多线程之线程池技术实现原理,这篇就够了(十一)
在Java语言中,有两种比较常见的创建线程的方法,一种是继承Thread类,一种是实现Runnable的接口,Thread类其实也是实现了Runnable接口。并且在前面的博文中我们也介绍了有返回结果的创建线程的方式。这篇博文我们就重点介绍线程池,内容如下:文章目录为什么使用线程池?线程池如何使用?架构说明线程池有几种实现参数对比应用场景对比ThreadPoolExecutor线程池的七大重要...
2020-02-18 09:55:46
443
原创 多线程之Condition的await和signal、signalAll等待/通知机制(十)
上篇博文,我们介绍了Condition的简介及原理,我们这篇重点介绍Condition的await和signal等待/通知机制,以及源码。原理相关的内容上篇博文,我们基本已经介绍完了,我直接看Condition接口的源码。await 方法先贴一波代码加注释:public final void await() throws InterruptedException { if (Thr...
2019-12-17 09:53:11
504
原创 多线程之Condition的简介及原理解析(九)
上篇博文,我们重点介绍阻塞队列BlockingQueue,并实现了生产者和消费者模式。这篇博文,我们重点介绍Condition的相关内容,我们会通过两篇博文来介绍Condition。这篇是对Condition的简介,与Object类的等待通知模式简单对比,Condition接口具体实现,以及等待队列原理解析。然后通过源码解读,看具体实现并使用Condition实现生产者和消费者模式。Condit...
2019-10-16 09:38:15
397
原创 多线程之阻塞队列BlockingQueue详解(八)
上篇博文,我们简单的介绍了多线程之Semaphore,这篇我们重点介绍阻塞队列BlockingQueue
2019-09-27 00:10:12
426
原创 多线程之CyclicBarrier详解(六)
上篇博客我们介绍了一下 多线程之CountDownLatch详解.,这篇博客我们详细的介绍CyclicBarrier。
2019-09-25 09:22:51
330
原创 多线程之CountDownLatch详解(五)
上篇博客我们介绍了一下重入锁ReentrantLock,这篇博客我们详细的介绍CountDownLatch。CountDownLatch是什么?CountDownLatch如何工作?CountDownLatch应用demo
2019-09-23 16:10:18
366
1
原创 多线程之重入锁ReentrantLock(四)
在博文多线程之内存可见性Volatile(一),多线程之原子变量CAS算法(二)中,我介绍了如何安全的访问共享对象,给了两种解决方案,java5.0之后,增加了lock接口的高级功能。这篇博文,我们介绍lock接口的一种实现,重入锁ReentrantLock,我们只是简单的介绍和synchronized进行一下对比。对于重入锁更加深入的内容,后面我们会再详细的写。ReentrantLockReent
2017-04-14 17:57:21
2963
11
原创 多线程之创建线程的方式之一:实现Callable接口(三)
对于多线程,大家并不陌生,对于如何创建线程也是轻车熟路,对于使用new thread和实现runable接口的方式,不再多说。这篇博文我们介绍第三种:实现Callable接口。
2017-03-16 17:23:03
4946
5
原创 多线程之原子变量CAS算法(二)
上篇博文,我们介绍了多线程之内存可见性Volatile(一),但是也遗留了一个问题,如何保证变量的”原子性操作(Atomic operations)”?Volatile保证部分类型的原子性上篇博文,我们说Voloatile不能保证原子性,有一点局限: 因为在32位(4字节)处理器中,Java中读取long类型变量不是原子的,需要分成两步,如果一个线程正在修改该long变量的值,另一个线程可能只能看
2017-03-16 10:06:23
2540
6
原创 多线程之内存可见性Volatile(一)
从这篇博文开始,我们开始分享一些多线程的内容,毕竟在工作中,使用多线程比较多。多总结一下,终归没有坏处。这个系列的文章不会特别长,争取在3到5分钟之间结束,主要以说明白内容,给出相应的解决方案,重点在于实践。如标题所示,这篇博文我们简单的介绍一下内存可见性问题,之前,要简单的介绍一下什么是内存模型?内存模型什么是JAVA 内存模型?Java Memory Model (JAVA 内存模型)是描述线程
2017-03-15 11:59:07
5856
9
原创 Java NIO系列教程(一)java NIO简介
这个系列的文章,我们开始玩一玩IO方面的知识,对于IO和NIO,我们经常会接触到,了解他们的基本内容,对于我们的工作会有特别大的帮助。这篇博文我们仅仅是介绍IO和NIO的基本概念,以及一些关键词。基本概念IO是主存和外部设备(硬盘、终端和网络)进行数据拷贝的过程。IO是操作系统的底层功能实现,底层通过I/O指令完成对数据的操作。java标准IO回顾Java 标准 IO 类库是 io 面向对象的一种抽
2017-02-23 14:57:34
3695
5
原创 Zookeeper的java客户端API使用方法(五)
前面几篇博文,我们简单的介绍了一下zookeeper,如何安装zookeeper集群,以及如何使用命令行等。这篇博文我们重点来看下Zookeeper的java客户端API使用方式。创建会话客户端可以通过创建一个Zookeeper(org.apache.zookeeper.ZooKeeper)实例来连接ZooKeeper服务器。给大家推荐一篇博文,构造方法和参数都介绍的非常的详细,看一下就好。我们看一
2017-02-20 16:07:30
6630
4
原创 Zookeeper命令行zkCli.sh&zkServer.sh的使用(四)
上篇博文,我们成功的安装和启动了zookeeper服务器,zookeeper还提供了很多方便的功能,方便我们查看服务器的状态,增加,修改,删除数据(入口是zkServer.sh和zkCli.sh)。还提供了一系列四字命令,方便我们跟服务器进行各种交互,来确认服务器当前的工作情况(这也是服务器监控告警的基础)。zkServer.shzookeeper启动成功之后,我们先看一下zkServer.sh提供
2017-02-17 11:38:42
9217
4
原创 Zookeeper安装以及配置说明(三)
Zookeeper的安装和配置非常的简单,既可以配置成单机模式,也可以配置成集群模式。如下图所示:下面将分别进行介绍:单机模式下载最新稳定版本zookeeper的安装包之后(看第一篇博文), 解压到合适目录. 进入zookeeper目录下的conf子目录, 修改zoo_sample.cfg示例文件,改名zoo.cfg。不修改任何配置,运行bin目录下的启动命令即可(windows环境运行zkServ
2017-02-15 16:47:26
2338
2
原创 ZooKeeper的基本概念(二)
第一篇博文,我们对Zookeeper有了一个简单的认识,而且比较浅显,易懂,这篇博文,我们了解它的基本概念,如下图所示:了解它的基本概念,有助于我们后面的学习,虽然今天的文章都是概念性质的内容,但是意义重大。一、集群角色:Zookeeper集群通常有三种角色:Leader,Follower,Observer。 角色 描述 Leader服务器 整个Zookeeper集群工作机制中的核心
2017-02-13 15:22:38
3427
5
原创 菜鸟程序员的成长之路(五)——说说2015年,畅谈一下2016年
时间从不等人,一晃半年多的时间没有写博文了,实在惭愧。今天特别的清闲,简单的说一说2015,畅谈一下2016。 2015年上半年一直疯狂的写代码,做项目,虽然当时每天感觉有点累,但是每天都有新的收获和进步,每一步都很踏实。从15年6月份开始出来工作,在国企单位工作了半年的时间。半年的时间让完成了从毕业的大学生转变成真正的IT职场人士,多了另外的一个角色或者说身份。精彩内容太多了,十月一回来之后为大
2016-09-23 23:00:40
5460
19
jquery.form.js
2014-02-13
java客户端使用api访问zookeeper,增删改查Znode
2017-02-20
Spring框架的简单实现
2015-03-09
SpringIoC的简单实现
2015-03-07
老铁,进来聊聊
发表于 2021-01-14 最后回复 2021-01-14
老铁,就差你了
发表于 2021-01-14 最后回复 2021-01-14
老铁,路过不要错过,错过小心后悔
发表于 2021-01-14 最后回复 2021-01-14
老铁,我需要你
发表于 2021-01-14 最后回复 2021-01-14
铁子,进来有惊喜哦
发表于 2021-01-14 最后回复 2021-01-14
老铁,就差你了。
发表于 2021-01-13 最后回复 2021-01-13
2020年,你投票了吗?
发表于 2021-01-13 最后回复 2021-01-13
于亮的留言板
发表于 2020-01-02 最后回复 2020-01-02
ActiveMQ-P2P文本消息简单实例(分享)
发表于 2015-09-21 最后回复 2016-01-18
SORRY,我来晚了。
发表于 2015-09-14 最后回复 2015-09-25
Struts2和Jasperreport5.6.0整合的过程中报错了
发表于 2014-09-30 最后回复 2015-09-08
致爱,致青春
发表于 2013-04-30 最后回复 2013-05-07
2020年,你投票了吗?
2021-01-13
TA创建的收藏夹 TA关注的收藏夹
TA关注的人 TA的粉丝