自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

吴就业

吴就业,《实战Alibaba Sentinel》图书作者,现荔枝集团基础架构高级研发工程师,目前在中间件、云原生领域搬砖。

  • 博客(11)
  • 资源 (1)
  • 收藏
  • 关注

原创 Dubbo RPC只要一个长连接就可以收发所有请求,为什么Spring Cloud不行?

试下这篇能不能把去年写的Dubbo源码分析系列文章重新激活Dubbo RPC使用dubbo协议只需要一个长连接就可以收发所有请求,为什么使用http...

2020-07-29 08:10:00 1170 1

原创 Sentinel与OpenFeign整合实现熔断降级源码分析

Sentinel无论是实现限流还是熔断降级,其实都是通过适配模块去实现拦截方法的执行,在方法执行之前调用所有ProcessorSlot的entry方法,在方法执行之后所有ProcessorSlot的exit方法,使用责任链模式调用。由StatisticSlot这个ProcessorSlot统计请求信息,由DegradeSlot检查当前请求是否需要熔断,由FlowSlot检查当前请求是否需要限流。StatisticSlot的entry方法将资源当前时间窗口的Bucket的请求数自增1,如果需要限...

2020-07-14 08:18:17 1149

原创 Sentinel中的责任链模式:Sentinel整体工作流程

Sentinel对性能的消耗如何Sentinel统计QPS使用的是滑动窗口:时间窗口+Bucket,通过循环复用Bucket以减少对内存的占用,在统计QPS时,更是利用当前时间戳定位Bucket,使用LongAdder统计时间窗口内的请求成功数、失败数、总耗时等指标数据优化了并发锁,通过定时任务递增时间戳避免每次都使用System获取当前时间。可以看到Sentinel在性能方面所做出的努力,Sentinel尽最大可能降低自身对应用的影响。Sentinel会为每个资源创建一个保存一分钟内时间窗口为1.

2020-07-13 08:00:00 943

原创 Sentinel核心实现:基于滑动窗口的实时指标数据统计实现

要理解Sentinel实现限流的源码,首先我们要了解其核心,比如如何统计QPS,只要了解核心功能的实现,我们也可以自己实现一个简单的限流器。Sentinel基于滑动窗口实现实时指标数据统计。Sentinel如何统计每秒请求数(QPS)为了简单,我们不直接分析Sentinel的源码,而是分析笔者从Sentinel中摘抄的,且经过改造后的qps-helper的代码。总体上是一样的,笔者去掉了一些不需要的统计数据,以及将Sentinel一些自定义的类替换成JDK提供的类,封装成通用的QPS统计工具包。h.

2020-07-12 16:34:05 1239 1

原创 OpenFeign整合Sentinel实现熔断降级

常用于实现熔断降级的框架有Hystrix、Sentinel,我们常说的Spring Cloud项目说的其实是Spring Cloud Netflix,Hystrix以及前面学习过的Ribbon都是Netflix系的家族成员,所以使用Hystrix可以非常简单的与当前项目中使用到的OpenFeign、Ribbon整合,但笔者并没有选择Hystrix,而是选择阿里系的Sentinel。为什么选择Sentinel而不是Hystrix?从接入简单考虑可能选择Hystrix是不错的选择,但笔者对Hyst...

2020-07-10 08:25:42 6240 2

原创 玩转OpenFeign-续集

上一篇《玩转OpenFeign》介绍了OpenFeign的一些常用配置,不过还漏了点内容。Client连接超时、读超时的配置这篇主要介绍如何为不同的Client配置不同的连接超时、读超时这类参数,并从源码角度分析配置是怎么起作用的,以及都可以配置哪些参数,内容不多。还是要从FeignAutoConfiguration这个自动配置类说起,该配置类使用@EnableConfigurationProperties注册了两个用于装载OpenFeign配置的Bean,分别是FeignClientProp.

2020-07-08 08:00:00 422

原创 玩转OpenFeign

经过前面几篇的源码分析,我们对OpenFeign与Ribbon也相对熟悉了。看框架源码的目的就是解决我们的一些疑惑,能够知其然并知其所以然,以及用好框架。很多时候,我们需要在项目中调用一些第三方接口,例如对接支付宝支付、微信支付,调用支付接口。如果项目中引入了OpenFeign,那么我们是否可以使用OpenFeign去调用第三方接口呢?答案肯定是可以的。虽然调用第三方接口不需要服务发现,所以也不需要使用Ribbon实现负载均衡,但我们依然可以单独使用OpenFeign。使用OpenFeign不.

2020-07-07 08:01:30 1108

原创 Spring Cloud Kubernetes动态配置实现原理与源码分析

Spring为Spring Cloud在Bean的生命周期、Bean的BeanPostProcessor以及AOP层面提供实现动态刷新配置的支持,而Spring Cloud则是为使用者提供实现动态加载配置的接口层面支持,封装了复杂的实现逻辑,让第三方配置中心实现整合到Spring Cloud项目提供方便。Spring Cloud Kubernetes也为我们使用原生服务实现动态配置提供支持,它帮我们实现Spring Cloud的动态配置接口,我们只需要在bootstarp.yaml添加简单的配置就...

2020-07-05 22:40:46 909

原创 不得不知的Spring Boot与Spring Cloud应用启动流程

Spring Cloud与Kubernetes系列文章已经更新到第十五篇,而源码分析类的文章笔者是默认大家都已经对Spring的源码所有了解了,至少什么工厂Bean、后置处理器BeanPostProcessor、Bean的生命周期、Spring容器的启动流程等都有所了解。在继续分析Spring Cloud实现动态配置的源码之前,我们需要补充一些Spring Boot和Spring Cloud的基础知识才能继续往下看。本篇我们一起学习Spring Boot与Spring Cloud应用的启动流程。S.

2020-07-03 08:00:00 2065

原创 Spring Cloud动态配置实现原理与源码分析

实际项目开发中少不了各种配置,如连接数据库的配置、连接Redis集群的配置等,通常我们也会为一个项目部署到每个环境准备不同的配置文件,例如测试环境配置连接测试的数据库。基本上静态配置就已经满足日常需求,但是静态配置缺少灵活性,一经修改就需要重新构建部署应用,同时也缺少安全性,容易泄漏线上环境的配置,所以我们需要一种更灵活更安全的配置方式:动态配置。动态配置的使用场景并不是为了替换静态配置而出现的,数据库连接配置这些一般都不会改动,所以数据库连接这类配置使用静态配置还是动态配置都没有多大影响。对于那...

2020-07-02 00:00:00 1411 1

原创 当miniexcel遇上adb,报表数据导出性能调优建议

关注“Java艺术”一起来充电吧!报表数据导出是一个常见且令人头疼的问题,该功能主要放在管理后台,系统运营人员经常需要导出一些数据做分析。报表导出遇到的难题,一是数据量大,二是查询耗时,...

2020-07-01 12:11:54 375

IPv4-国家-区域-城市-运营商csv格式数据库-附使用java写的使用demo

此ip库数据为2018年的,不是最新的,所以不保证准确率。 此IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ISP-DOMAIN-MOBILE.CSV库可用于根据ip查询ip的归属地,可以获取到国家、区域(省)、城市,以及运营商,11000000+数据。 附可运行的使用demo。(demo未做性能优化,很慢也很耗内存,运行请准备好几个g的内存) 此demo不会考虑性能问题,只是用于指导怎么解析ip地址库文件,实现根据ip查询ip的地理位置信息。 运行此demo,请执行DemoMain类的main方法,此demo由于不考虑性能问题,执行时间会比较久,请耐心等待(大概6分钟)。 如果发现卡住(超过10分钟都没执行完成),请调整堆内存重新执行,通过-Xmx6G -Xmx6G调大内存。

2023-10-14

2019年毕业设计-一款情侣APP 附论文、作品视频演示、代码

关键技术 1、Spring Boot是目前主流的以java为开发语言的后端框架,以“约定优于配置”为约定,简化Spring项目的配置。Spring Boot并非一种新的框架,而是为方便整合Spring、Spring MVC以及各种持久化框架所编写。Spring能经久不衰,与其IOC和AOP两大特性密不可分。 2、为解决直接使用jdbc实现数据增删改查所带来的,编码复杂且重复率大、sql注入问题。选择Mybatis框架作为数据持久化层框架,不仅易于上手,更有着由于其它持久层框架的易于扩展性,同时提供插件支持,可以实现sql查询监控以及动态替换公共字段等。 3、要保证用户的数据安全,系统需要对用户可访问的资源进行管理,用户所发表的时光、相册等只能情侣之间可访问,对其它用户不可见,系统引人Shiro框架对用户权限进行管理,系统分普通用户角色于情侣角色。 4、为提供后端接口服务机器之间共享Session,为增强系统并发访问,降低请求延时,对热点数据进行缓存,本系统引入Redis提供数据缓存层。 5、即时在线聊天选择Netty框架。

2023-10-13

2019毕业设计作品-一款支持来电拦截的通讯录APP 附论文核心部分、项目代码

集通话记录、联系人管理、来电秀、骚扰电话拦截功能于一身的通讯录APP。本应用可以根据正则匹配过滤来电,精确的拦截骚扰来电, 而过滤规则可由用户自行定义。如拦截以“0777”开头的号码的来电。当有来电时,应用会先获取用户配置的号码黑名单列表,匹配如果号码不在黑名单列表才会继续匹配过滤规则。 您可以基于此做二次开发作为你的毕业设计,例如拦截功能扩展为支持用户通过编写脚本自定义自己的拦截规则,这样可能满足用户的需求,也能带动用户学习了解一门脚本编程语言,这是件有意义的事情。 注:关于代码,由于本项目开发时间比较早,当时android才出到android 8,所以可能用现在的高android版本的手机可能无法运行。但如果用android8以下版本是可以运行的。

2023-10-12

Java堆外内存使用分析详细

这个视频指导我们java开发遇到堆内存使用正常、gc正常,但实际使用的物理内存缺非常高,特别是容器化部署很容易因内存使用超limit限制导致pod重启,怀疑堆外内存泄露?如何排查堆外内存的使用情况,这个视频详细讲解了。英文无字幕,介意忽下载哈!原来线程数大多也会占用非常大的内存,原来gc也会占用非常大的内存...

2023-10-12

ArchSummit 2023 全球架构师峰会 北京站 PPT(公开)

01-从NewSQL到全新的HTAP分布式架构演进-张潇 01-从互联网到 ToB 服务 - 私有化部署对架构师的挑战-张铎 01-金融级系统海量流量下的高可用架构实践-康杨 01-美团优选智能质量方案探索-王昭 01-中国移动智慧中台赋能企业数智化转型实践-兰建明 01-字节跳动云原生大数据发展之路-余炜强 01-在线优化技术在快手联盟上的实践和产品化-谢淼 博士 01Hudi_Presto 在 News Break 数据平台的尝试--关立胜 01OceanBase的OLAP能力提升实践--杨志丰 01京东到家核心系统微服务演进落地实践--孙岩 01拒绝孤岛-可观测数据融合分析--张城(元乙 02-斗鱼高并发架构实践-李奇 02-华为机器翻译模型训练推理加速实践-魏代猛 02-基于风险驱动的交付模式转型探索与实践-黄佳鑫 02-基于云原生Serverless和消息服务技术采集全球分布业务数据实践-马腾 02-网易严选B端业务数字化之路-郑令飞 02-小红书云原生实时数仓的建设与实践-王成 02畅捷通多租户多数据中心的架构演进--郑芸 03-陌陌云原生微服务架构落地实践-袁世超 ...

2023-10-12

用c#实现的读取rtf格式文件的工具类

一个简单的读取RTF文件的类。 实现简单的翻译如下的RTF文件的代码 {\rtf1\ansi\ansicpg936\deff0\deflang1033\deflangfe2052{\fonttbl{\f0\fnil\fcharset134 \'cb\'ce\'cc\'e5;}{\f1\fswiss\fcharset0 Arial;}} {\colortbl ;\red255\green0\blue0;\red0\green0\blue255;} \viewkind4\uc1\pard\lang2052\f0\fs18\\ \cf1\f1 fgsdgfdghfdsgsd\cf0 fgfdsfdg\par ffffffffffffff\b\f0 fffffffffff\ul\b0\f1 fffffffffff\highlight2\ulnone ffff\par ffff\highlight0\\8888\\8888 \cf1\highlight2 \cf2\highlight0 \i\f0 fff\i0\fs53 fffff\i\fs18 f\par }

2016-01-21

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除