自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

原创 深入理解容器技术——聊聊服务容器化三大助力

服务容器化三大助力我们都知道,微服务的落地有众多需求,容器化技术是它的不二之选,容器化通过三大助力来实现了微服务落地的众多需求:码头林立——各种软硬件平台层出不穷容器化解决方案具有一个普适性,它适用于各种不同的软硬件平台。微服务——高内聚、低耦合、分钟启停和部署这一点体现的就是容器化的微小型,能做到分钟级的启停和部署康威定律——组织决定上层建筑容器化技术是一个比较抽象的技术,它剥离了很多运维的工作量,更适合我们当前比较热点的DevOps,更适合于我们互联网架构在康威定律下做的一些企业的变化,

2021-11-30 22:25:42 1330

原创 【玩转Kafka】海量日志收集实战之架构介绍与日志输出

海量日志收集实战话不多说,看架构图:最左侧,是Beats,它主要是用于收集日志的,比如这个Filebeat它的底层是用erlang语言写的,性能非常好,其实我们的系统中打印出来的日志,都会用这个Filebeat给我们抓取出来。在我们这个架构中,Filebeat的主要作用就是把我们的日志搜集出来并转储到Kafka。然后看Kafka的右边,是Logstash,它主要是用日志做一个过滤,然后它会把你过滤后的数据发送到Elasticsearch里。最后利用Kibana进行展示。接下来,我们就来说一下我

2021-11-27 00:23:18 2354

原创 手把手搭建Skywalking,玩转分布式链路追踪

什么是SkywalkingSkywalking是一个适用于分布式系统的性能监控工具文档地址:https://skyapm.github.io/document-cn-translation-of-skywalking/功能:服务,服务实例,端点指标分析根本原因分析服务拓扑图分析服务,服务实例和端点依赖性分析检测到慢速服务和端点性能优化分布式跟踪和上下文传播数据库访问指标告警安装单机版Skywalking下载前往https://archive.apache.org/di

2021-11-24 23:31:02 2643 2

原创 SpringCloud之服务容错——Hystrix

前言在了解这部分内容之前,先问大家几个问题,你是否总听到在周围互联网工作的小伙伴们一口一个降级啊、熔断啊,听到是什么感受呢?想插嘴,却不知道该说些什么;想说些什么,却又怕说错了被人笑话。降级和熔断听起来好像挺高大上的呀,他们究竟能应用到哪些应用场景中来呢?什么样的应用场景才能用到降级和熔断呢?我这小作坊一亩三分地的业务也需要降级和熔断么?它离我们的真实业务到底有多远?带着这些问题我们就拉开SpringCloud服务容错——Hystrix的序幕。服务容错——Hystrix没错,它又是Netflix

2021-11-23 23:47:51 604 1

原创 2021年12月学习计划

学习技术不仅要知其然还要知其所以然容器技术Dockerdocker知识巩固 ——12-01docker整体架构学习——12-01dockerFile学习——12-02容器间网络访问与通信管理12-03容器技术Cloud FoundryCloud Foundry快速入门 ——12-03Cloud Foundry整体架构学习—— 12-04容器和应用生命周期管理学习——12-05容器路由与访问控制学习——12-06蓝绿发布学习——12-07数据服务管理——12-08了解数据持久

2021-11-23 12:19:03 1801

原创 彻底搞懂Feign——EnableFeignClient底层机制探究

EnableFeignClient源码探究话不多说直接开干!点进@EnableFeignClient这个注解里:里面较为核心的是这个FeignClientRegistrar,我们点进去:我们发现它实现了ImportBeanDefinitionRegistrar、ResourceLoaderAware、EnvironmentAware这三个接口,这里关于后面连个Aware接口就不做过多介绍了,熟悉Spring的同学应该都知道吧,我们就看一下这个ImportBeanDefinitionRegistr

2021-11-22 22:43:11 1745

原创 打破理解误区,聊聊什么才是真正的云原生?

云原生应用在我们的互联网应用当中,有一个词想必大家都很熟悉,叫做云原生,或者云原生应用。那什么才是云原生呢?在云原生概念中,有一个叫做云原生15原则,这15个原则我们可以分成四类:CICD弹性解耦中台CICD是和软件发布相关,弹性是和应用的特性相关,解耦是应用与应用之间的关系,最后一个中台是对外服务的形式。只有说满足了15原则,我们才能说是一个很好的云原生应用了。这里我们为什么来通过这个15原则来聊云原生呢?很多人盲目上云,不是所有的应用都适合云,也不是所有应用都能叫云原生。很多

2021-11-21 22:53:12 602

原创 SpringCloud之远程调用Feign

创建Feign的消费者实例创建项目,引入依赖借助动态代理接口实现远程调用比较Eureka,Ribbon和Feign的调用方式。首先我们先创建一个ribbon-consumer的模块,并添加依赖: <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>s

2021-11-21 20:36:36 524

原创 硬钢Spring源码——五万字梳理完Spring核心原理

Spring源码解读前言Spring核心接口和类Bean与BeanDefinitionSpring的一等公民——BeanBeanDefinition ——Bean的定义BeanDefinition源码探究SpringIoc容器BeanFactoryBeanFactory和FactoryBean 的区别BeanFactory架构体系ListableBeanFactoryAutowireCapableBeanFactoryDefaultListableBeanFactoryApplicationContextA

2021-11-21 00:41:08 708

原创 Ribbon最终实战——打造自定义一致性哈希负载均衡策略

自定义IRule本文,我们通过IRule接口,实现一个自定义的负载均衡策略——一致性哈希。关于一致性哈希原理不是本文探讨的重点,如果不了解的同学可以看下这篇文章《一致性哈希算法的原理与实现》,写的还是挺不错的。一致性哈希不仅在负载均衡的领域,在很多其他的领域都有广泛的应用。我们废话不多说,直接开干!首先我们在ribbon-consumer的模块下,创建一个类并继承AbstractLoadBalancerRule和实现IRule接口:然后从上下文中获取HttpServletRequest对象:

2021-11-19 21:52:51 935

原创 彻底搞懂Ribbon——IPing机制源码解析

IPing机制我们废话不多说,直接看源码:这里只有一个isAlive,它会传入一个Ribbon选出来的Server,看看是不是挂了。我们看一下它的实现类:可以看到它的实现类还是蛮多,我们就先看一下这个DummyPing:这个直接返回true。。。那算了,就不要看它了,再看看其他的,我们就看一下PingUrl这个类吧:这个类还是有点东西的。这里小编就不debug走了,很多时候我们就是一个肉眼编译器,在很多互联网公司,代码提交链错综复杂,所以说很多时候项目比较忙的时候,代码交叉在一块,你都

2021-11-18 23:51:04 671

原创 彻底搞懂Ribbon——负载均衡策略源码探究

Ribbon负载均衡策略源码解析RandomRuleRoundRobinRuleBestAvailableRuleRetryRuleRandomRule我们先来看一下这个随机策略的源码:这个choose是它的核心方法。public Server choose(ILoadBalancer lb, Object key) { // 如果传入的LoadBalancer是空,直接返回null if (lb == null) { return null;

2021-11-18 00:06:23 599

原创 SpringCloud之负载均衡Ribbon

快速入门添加负载均衡创建ribbon-consumer添加依赖,调用eureka-client启动多个eureka-client将负载均衡策略应用到全局或指定服务1.创建ribbon-consumer在父工程下面创建模块ribbon-consumer添加如下依赖: <dependencies> <dependency> <groupId>org.springframework.cloud</group

2021-11-17 10:03:39 658

原创 Eureka最终实战——打造双中心节点高可用化

高可用注册中心架构图看下图,我们先对注册中心高可用架构有一个直观的认识:注册中心高可用改造废话不多说,我们直接开干!步骤:修改host配置文件启动双注册中心单节点注册+同步机制客户端配置双节点1.修改host配置文件我这里用的是mac的系统,需要进入到etc目录下,如果是windows的小伙伴可以去网上查一下相关资料找到hosts这个文件。添加如下内容:2.创建并配置双注册中心2.1创建eureka-server-peer模块2.2创建启动类2.3创建配置文件s

2021-11-15 23:46:50 1366 1

原创 彻底搞懂Eureka——服务续约源码探究

在上篇文章《彻底搞懂Eureka——心跳发送源码探究》我们已经研究过了服务发送的流程,我们也知道,心跳发送与服务续约是一种相互作用的机制,client发送一个心跳,对应的服务端就要接受这个心跳完成一次服务的续约对吧。我们来看一下InstanceResource这个类:当客户端发送完心跳以后,服务端会在这个renewLease方法里面接受这个请求,接受一个PUT的httpMeathod,它的属性都是通过@QueryParam注入进来的我们往下走一步:可以看到这里有一个isFromReplicaNo

2021-11-15 21:37:08 747

原创 彻底搞懂Eureka——心跳发送源码探究

在DiscoveryClient里有这样一个方法:在服务的启动时,会有一个服务的心跳包在这里发送出去,我们打个断点,看一下这部分心跳的逻辑,前面的代码我们先略过,直接跳到发送心跳的地方:根据这个方法名,我们不难猜测,它应该是在后台通过定时触发的一个任务,我们进入这个方法:在这里可以看到这个定时的任务不仅包含心跳,还有缓存的刷新,我们这部分先不看,继续往下走:这里就和心跳有关系了,可以看出,在clientConfig.shouldRegisterWithEureka()为true的时候才会进来

2021-11-14 23:16:22 977

原创 彻底搞懂Eureka——探讨吐血绕人的服务注册逻辑

前言学习源码之前,小伙伴们首先应该创建好服务提供方,方便后续断点阅读。如果小伙伴们不知道如何动手,请参考一下这两篇文章:《聊聊服务治理》 、《创建服务提供者》我们先看一下这个服务发现的核心注解:点进去:我们可以看到这里有一个autoRegister注解,它的默认值是true。上面注释中解释:如果为true,ServiceRegistry会自动注入local server即当前instance。看到这里,感觉线索还不是很明显,我们再找找其他内容。果然,看到上面Import注解中:点进去

2021-11-13 00:48:54 1071

原创 Eureka快速入门——创建服务提供者

关于服务提供者的创建较简单,小编就少说点废话,直接上代码,跟着敲一敲相信聪明的小伙伴们就能一目了然了。创建服务提供者1.创建eureka-client模块并添加依赖依赖 <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-

2021-11-12 21:44:16 782

原创 看了这篇文章我彻底精通了JVM,面试官一拍桌子给了50k

JVM汇总《深研JVM 探讨类加载过程》《侃侃编译器优化》《大透编译器,聊聊方法内联》《聊聊逃逸分析、标量替换与栈上分配》《初步探讨垃圾回收机制》《打破垃圾回收的第一道壁堡,探究垃圾回收算法》《彻底理解分代收集算法》《深入浅出垃圾收集器-新生代收集器》《深入浅出垃圾收集器-老年代收集器》《深入浅出垃圾收集器-G1收集器》《面临层出不穷的垃圾收集器我们如何选择?》《JVM常用性能调优工具详解1》《JVM性能调优工具2之jcmd详解(覆盖全网最全的jcmd命令与说明文档)》《打通J

2021-11-12 00:10:45 612

原创 推开SpringCloud的第一扇大门——初步探讨服务治理

SpringCloud前面,我相信各位小伙伴们已经对微服务架构有了一个基本的了解吧,那么现在立即马上,我们正式开始SpringCloud微服务架构实战部分的内容,从这里,我们推开SpringCloud技术架构的第一扇大门,我们一起来探讨一下SpringCloud中最最核心的一个组件——服务治理组件。分布式系统CAP定理在正式介绍服务治理组件之前,我们先来聊一聊在分布式系统一个非常重要的理论——CAP定理。一致性这里的C就是一致性(Consistency),它指的是在分布式系统中,所有的数据副本,比

2021-11-11 23:36:07 686

原创 史诗级鸿篇巨著微服务架构之微服务介绍

微服务架构认知欢迎大家和小编一起学习史诗级鸿篇巨著,微服务架构第一章——微服务架构认知,在本文中主要和大家介绍一下微服务架构的理念,让大家对微服务有个比较直观的认识,在介绍本次微服务系列之前,先来给大家做个剧透,看看我们整篇系列文章要介绍的内容。微服务介绍SpringCloud在微服务的整个体系当中,它包含了许许多多的组件,比如:服务治理——Eureka、Nacos、Consul负载均衡——Ribbon服务容错——Hystrix服务调用——Feign、DubboRPC分布式配置中心—

2021-11-10 22:31:41 724

原创 架构师技术栈——对标阿里P10

顶端企业架构师十项全能软件架构导论架构师核心能力架构设计原则架构设计核心维度架构设计模式架构设计评估分布式架构理论微服务架构设计核心单元化(Set)架构设计服务网络架构设计DDD领域驱动架构设计安全架构—评估方法论、数据安全安全架构—通信身份软件安全云架构—Pass、Sass数据库架构设计技术选型服务治理—负载均衡服务治理—链路追踪、分布式事务服务治理—网关安全消息驱动DevOps体系构建监控系统设计质量导论&质量思维安全生产体系—团队、设施、研发体系

2021-11-10 16:02:43 4130

原创 深入理解Redis——主从复制原理解析

Redis主从架构本文我们重点探讨一下Redis的主从架构,假设我们Redis只有一个节点,那么它会为我们的数据库起到一个屏障的作用,如果我们现在有很多的请求,并发请求到Redis,我们想一想会有什么样的问题呢?一般情况下,单机单节点的Redis并发的话基本是在上万吧,如果服务器硬件配置包括运维人员优化做到非常高的话,那么达到个十几万二十几万应该也是没有问题的,但是它肯定是有一个瓶颈的。随着我们的业务复杂度不断的增长,Redis能够支持的并发量肯定是有上限的,那在这个时候我们应该想到能不能为我们的Re

2021-11-08 22:31:22 777 2

原创 深入研究池化技术——线程池

线程池线程池顾名思义就是一个放线程的池子,使用线程池的好处有很多:重用已存在的线程控制并发功能强大从某种意义上来讲,线程池是一种特殊的对象池,因此你也可以使用对象池来自己实现一个线程池,当然一般情况下我们是不需要自己实现线程池的,使用JDK自带的线程池就可以了。话不多少,我们直接开干!首先我们用ThreadPoolExecutor创建一个线程池玩一玩:可以看到,它的构造方法里最多可以传入七个构造参数,我们就直接玩这个构造参数最多的吧。 ThreadPoolExecutor execu

2021-11-07 21:41:32 441

原创 深入研究池化技术——对象池

池化技术池化技术是性能调优的重要措施,池化的思想是把对象放到池子里,当要使用的时候,从池子里面拿对象,用完后再放回池子里,这样可以降低资源分配以及释放的开销,从而提升性能,在实际项目中,其实我们每天都在使用池化技术。关于池化技术有以下几种:对象池:通过复用对象,减少对象的创建、垃圾回收的开销线程池:通过复用线程来提升性能连接池:如数据库连接池/Redis连接池/HTTP连接池,通过复用TCP连接来减少创建和释放连接的时间来提升性能。本文,我们详细来探讨一下对象池。对象池对象池用于维护一些很

2021-11-07 13:40:09 1277

原创 Java并发之彻底搞懂读写锁

ReentrantReadWriteLock我们来探讨一下java.concurrent.util包下的另一个锁,叫做ReentrantReadWriteLock,也叫读写锁。实际项目中常常有这样一种场景:比如

2021-11-06 19:20:38 688 1

原创 java并发之彻底搞懂ReentrantLock

ReentrantLock在Java5之前synchronized是仅有的同步手段,从Java5开始便提供了ReentrantLock,即再入锁的实现。它的语义和synchronized基本相同,通过代码直接调用lock方法获取,代码编写也更加灵活。与此同时,位于java.util.concurrent.locks包下的ReentrantLock提供了很多使用方法,java.util.concurrent这个package即业界有名的J.U.C包,里面比较有名的工具类几乎都是基于Doug Lea大神写的

2021-11-06 13:09:58 567

原创 Java并发之彻底搞懂synchronized

前言我们开始向Java多线程模块发起进攻。由于Java线程这部分知识点非常多,并且网上也有相关的一些教程,如果要求小编把内容全部梳理完并不现实,我们重点介绍一些面试常考知识点,此外,还要给大家打个预防针,就是关于那种高大上的如何支撑千万级并发架构设计咱也不会说,毕竟没有在实际的系统中接触过这类知识的话,光靠在面试里面背概念不仅没有任何帮助,反而会给自己带来不少麻烦,做过就是做过,没做过就是没做过,并不是人人都有处理这种量级高并发的机会。希望大家不要被这类噱头唬住,毕竟万变不离其宗还是学习原理为主,所谓高并

2021-11-06 01:23:41 435

原创 java高阶编程之无锁并行计算框架——Disruptor初识

网上关于Disruptor相关的文章有很多,笔者看过美团技术团队出的一篇文章《高性能队列Disruptor》,也看过博客园中自称“史上最全”的文章《disruptor (史上最全)》,个人感觉内容比较少,说的也只是浮于表面。那么,请各位跟随小编一起揭开Disruptor的神秘面纱,探讨互联网高性能的奥妙吧!Disruptor快速入门2011年,企业应用软件专家Martin Fowler在自己的网站上写了一篇LMAX架构的文章。在文章中他介绍了LMAX是一种新型零售金融交易平台,它能以很低的延迟产生大

2021-11-03 22:40:06 900 2

原创 深入理解Linux操作系统-窥探运维之道

CPU相关Top作用:显示、管理执行中的程序语法:Usage: top -hv | -bcHiOSs -d secs -n max -u|U user -p pid(s) -o field -w [cols]常用参数:d:改变显示的更新速度,或是在交谈式指令列(interactive command)按sq:没有任何延迟的显示速度,如果使用者是有superuser 的权限,则top将会以最高的优先序执行c:切换显示模式,共有两种模式,一是只显示执行档的名称,另一种是显示完整的路径与名称

2021-11-01 22:47:32 633

空空如也

空空如也

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

TA关注的人

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