自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(334)
  • 资源 (2)
  • 论坛 (5)
  • 问答 (1)
  • 收藏
  • 关注

原创 apache dubbo 源码分析系列汇总
原力计划

Dubbo(读音[ˈdʌbəʊ])是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成。后面捐献给了知名的开源社区 apache。Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。1、dubbo 架构以下是 du...

2020-03-27 23:06:03 848

原创 最佳实践 -- Dubbo 服务化进程的一点思考

最近主要负责公司的 dubbo 服务改造。在改造过程中,涉及到很多核心系统的编码。改造的系统涉及到核心系统,并且改造的系统一多,难免会产生一点胡思乱想。下面我就分享一下我在项目改造过程中的一点胡乱的想法。需要对大家有帮助:1、统一的打包方式对于之前项目中使用 restful 进行交互,项目的发布就没有版本这个概念。但在使用 dubbo 服务化就依赖版本这个概念。在项目中我们打包的方式和项目的版...

2020-03-19 08:42:04 336 4

原创 史上最简单的 Spring 源码导读

做为Java开源世界的第一框架,Spring已经成为事实上的Java EE开发标准Spring框架最根本的使命是简化Java开发,因此学习、研究、掌握Spring框架成为每一位Java开发人员的必修课。而阅读源码则是学习Spring的最好方式之一。Spring 里面最重要的特性就是 Ioc,可能你还会说 aop。其实 aop 的实现也是基于 ioc。Ioc (Inversion of Cont...

2018-04-19 08:06:30 2173

转载 一些设计上的基本常识

这篇文章是转载的dubbo设计者,关于谈谈扩充式扩展与增量式扩展 。一共十个点。相信对于大家架构方面有一些启发。

2016-11-03 20:31:08 715

原创 8、短路器 Netflix Hystrix 之 Plugins

1、Plugins你可以修改 Hystrix 的行为,或者通过实现插件给它添加额外的行为。你可以通过 HystrixPlugins 服务注册这些插件。然后,Hystrix 将把它们应用到所有 HystrixCommand、HystrixObservableCommand 和 HystrixCollapser 实现中,覆盖其他所有实现。2、Plugin Types以下是你可以实现的不同插件的介绍( Javadocs 包含更多的细节):2.1 事件通知在 HystrixCommand 和 Hystr

2021-01-24 12:29:34 9

原创 7、短路器 Netflix Hystrix 之 Metrics和监控

1、动机当HystrixCommand 和 HystrixObservableCommands 执行时,它们会生成执行结果和延迟的指标。这对系统的操作人员非常有用,因为他们可以深入了解系统是如何运行的。Hystrix 为每个命令键提供指标,并提供非常细的粒度(以秒为单位)。这些指标在单独和总体上都是有用的。获取在请求中执行的命令集以及结果和延迟信息通常有助于调试。聚合度量在理解整体系统级行为方面很有用,并且适合发出警报或报告。Hystrix Dashboard 就是这样一个消费者。下面是命令执行和编写

2021-01-24 12:12:17 20

原创 6、短路器 Netflix Hystrix 之 配置指南

1、说明Hystrix 使用 Archaius 作为配置属性的默认实现。下面的文档描述了默认的 HystrixPropertiesStrategy 实现,除非你使用插件覆盖它。每个属性有四个优先级:1.1 代码中的全局默认值如果以下3项都没有设置,则这是默认值。全局默认值在下面的表格中显示为“默认值”。1.2 动态全局默认属性您可以通过使用属性来更改全局默认值。全局默认属性名在下面的表格中显示为“默认属性”。1.3 实例默认代码您可以定义特定于实例的默认值。例子:HystrixCom

2021-01-23 21:04:21 18

原创 5、断路器 Netflix Hystrix 之 运维操作

Hystrix 不仅是一种弹性工程工具,也是一种操作工具。本页面试图分享每天使用 100 多个 Hystrix 命令类型、40 多个线程池、100 多个线程隔离命令和 2000 多个信号量隔离命令执行的系统的一些经验。本页上描述的截图和事件来自 Netflix API 系统,代表了真实的生产问题或对生产的 Latency Monkey 模拟。1、如何配置和调优调用部署新电路的典型方法是使用自由配置(超时/线程/信号量)将其发布到生产环境中,然后在看到它在峰值生产周期中运行后将其调优为更严格的配置。

2021-01-21 07:20:13 28

原创 4、断路器 Netflix Hystrix 之 操作指南

1、Hello World!以下是 HystrixCommand 的最简单的 “Hello World” 实现:public class CommandHelloWorld extends HystrixCommand<String> { private final String name; public CommandHelloWorld(String name) { super(HystrixCommandGroupKey.Factory.asKey(

2021-01-20 21:02:50 26

原创 3、断路器 Neflix Hystrix 之 工作原理

1、流程图下图显示了当你通过 Hystrix 向服务依赖请求时会发生什么:下面几节将更详细地解释这个流程:构造一个 HystrixCommand 或 HystrixObservableCcommand 对象执行这个 Command是否缓存了响应?短路是否打开?线程池/队列/信号量是否已满?HystrixObservableCommand.construct() 或 HystrixCommand.run ()计算短路器健康状态获取 Fallback返回成功的响应1.1 构造一个

2021-01-19 13:14:37 17

原创 2、熔断器 Netflix Hystrix 之 开始使用

1、添加依赖Maven、Ivy、Gradle和其他工具的二进制文件和依赖信息可以在 http://search.maven.org 上找到。Maven的例子:<dependency> <groupId>com.netflix.hystrix</groupId> <artifactId>hystrix-core</artifactId> <version>x.y.z</version></

2021-01-18 07:54:24 29

原创 11、Eureka 源码解析 之 Eureka Server 覆盖状态

下面是官方提供的 Eureka 架构图:1、Eureka Server 覆盖状态概述在 InstanceInfo 服务应用信息对象里面不仅有状态status ,还有覆盖状态 overriddenStatus。InstanceInfopublic class InstanceInfo { // 服务应用信息状态 private volatile InstanceStatus status = InstanceStatus.UP; // 服务应用信息覆盖状态 private

2021-01-11 23:08:28 30

原创 12、Eureka 源码解析 之 Eureka Client 增量拉取注册表

在之前的博客当中 6、Eureka 源码解析 之 Eureka Server 多级缓存 已经详细说明了在 Eureka Client 启动的时候会去 Eureka Server 里面全量的拉取一下注册到里面的服务信息列表。并且 Eureka Server 里面是使用了多级缓存来保存全量的注册信息列表。Eureka Client 在启动时获取 Eureka Server 中的注册信息,但是作为分布式环境服务随时时可进行上线、下线操作。所以作为注册中心它需要有服务自动上下线发现的功能。

2021-01-10 18:59:27 41

原创 10、Eureka 源码解析 之 Eureka Server 自我保护机制

下面是官方提供的 Eureka 架构图:1、什么是自我保护机制默认情况下,如果Eureka Server在一定时间内(默认 90 秒,其实不止 90 秒)没有接收到某个微服务实例的心跳,Eureka Server将会移除该实例。但是当网络分区故障发生时,微服务与Eureka Server之间无法正常通信,而微服务本身是正常运行的,此时不应该移除这个微服务,所以引入了自我保护机制。...

2021-01-07 22:20:41 45

原创 9、Eureka 源码解析 之 Eureka Server 服务过期

下面是官方提供的 Eureka 架构图:1、Eureka Server 为什么要服务过期正常情况下,应用实例下线时候会主动向 Eureka-Server 发起下线请求,也就是我们之前分析的 – 8、Eureka 源码解析 之 Eureka Client 服务下线。但实际情况下,应用实例可能异常崩溃,又或者是网络异常等原因,导致下线请求无法被成功提交。这种情况之后,需要 Eureka Client 定时向 Eureka Server 发送续约配合 Eureka Client 通过定时任务清理超时的租约

2021-01-06 23:21:22 45

原创 8、Eureka 源码解析 之 Eureka Client 服务下线

下面是官方提供的 Eureka 架构图:1、Eureka Client 服务下线当 Eureka Client 服务关闭之前会调用 DiscoveryClient#shutdown 方法。因为这个方法上面标注了 @PreDestroy 在对象销毁之前这个方法就会被调用。 @PreDestroy @Override public synchronized void shutdown() { if (isShutdown.compareAndSet(false,

2021-01-06 12:59:29 44

原创 7、Eureka 源码解析 之 Eureka Client 续约

下面是官方提供的 Eureka 架构图:1、Eureka Client 续约机制在 Eureka Client 需要定时的向注册中心 Eureka Server 发送续约信息,告诉注册中心当前的微服务处于可用状态,这样注册中心在服务剔除的时候才不会把当前服务实例从注册表中删除。在 DiscoveryClient 进行初始化的时候,会调用 DiscoveryClient#initScheduledTasks 方法。在这个方向当中不仅会启动定时任务调用 CacheRefreshThread 线程定时从

2021-01-05 13:21:42 29

原创 6、Eureka 源码解析 之 Eureka Server 多级缓存

下面是官方提供的 Eureka 架构图:1、Eureka Client 全量拉取注册表在微服务中是嵌入了 Eureka Client 的,当服务启动的时候就会从 Eureka Server 中拉取注册的服务信息列表。在微服务中嵌入的 EurekaClient 的实现类 DiscoveryClient 在初始化的时候会通过调用 EurekaHttpClient 去 Eureka Server 拉取全量服务信息列表。在 DiscoveryClient#initScheduledTasks 会启动定

2021-01-04 22:14:56 75

原创 5、Eureka 源码解析 之 Eureka Client 服务注册流程

下面是官方提供的 Eureka 架构图:对于 Eureka 而言,微服务的提供者和消费者都是它的客户端,其中服务提供者关注服务注册、服务续约 和 服务下线等功能,而服务消费者关注于 服务信息的获取。下面我们来看一下 Eureka Client 的服务注册流程。1、Eureka Client 注册流程...

2020-12-30 13:20:41 65

原创 13、Nepxion Discovery 之 全链路调用链监控

在进行微服务调用的时候,为了系统的高可用性,不仅需要进行灰度发布验证服务的可用性。同时对于服务健康的监控也是很重要的一环。Nepxion Discovery 在这方面也有监控方面的集成,包含以下几个方面:蓝绿灰度埋点调用链监控全链路日志监控全链路指标监控1、蓝绿灰度埋点调用链监控1.1 蓝绿灰度埋点调用链监控关于 蓝绿灰度埋点调用链监控 官网描述得很清楚,它内置蓝绿灰度埋点,包括如下:1. n-d-service-group - 服务所属组或者应用2. n-d-service-type

2020-12-27 15:48:28 113

原创 4、Eureka 源码解析 之 Eureka Client 启动原理分析

在前面的一篇文章 3、Eureka 源码解析 之 Eureka Server 启动原理分析当中我们分析了一下 Eureka Server 的启动。在集群环境下 Eureka Server 相互之前需要同步注册表信息。所以不管是微服务当中还是 Eureka Server 当中都需要依赖 eureka-client 这个 Jar 包。它封装 Eureka Server 提供的 Restful 服务,依赖方可以以接口方法的方式方便的进行调用。下面是 Eureka 官网提供的系统架构图。在这个图中有以下几个角色

2020-12-27 12:09:32 59 1

原创 3、Eureka 源码解析 之 Eureka Server 启动原理分析

Eureka 是 Netflix 开源的一款注册中心,下面就是 eureka 的架构图。在这个图中有以下几个角色:Eureka Server:Eureka 服务器,它是注册中心提供接口给应用把服务实例的信息注册上来Eureka Client:Eureka 客户端,Eureka 包装好了微服务访问 Eureka 服务器的一系列接口。比如:注册,心跳,服务下线等。Application Server:微服务应用服务器,一个单体服务可以按照不同的领域拆分为多个微服务。微服务可以依赖 Eureka 客户

2020-12-24 23:02:19 78 1

原创 2、Eureka 源码解析 之 服务配置文件管理解析

Eureka 服务在进行配置管理的时候使用的是接口进行管理。对于 Eureka 服务它提供了很多自定义参数用于服务器上面的各种管理。其实对于 Eureka 来说:它即是一个服务器,因为它是一个注册中心,需要对外部微服务提供服务注册与服务发现;同时它又是一个 Client,因为对于分步式环境当中存在单点故障,为了解决这个功能 Eureka 提供了集群部署功能。那么不同的 Eureka 服务之间就面临微服务注册的注册表信息同步问题。所以 Eureka 也是一个 Eureka Client 它会拉取配置上面的其它

2020-12-22 23:08:00 78

原创 12、Nepxion Discovery 之 Discovery Agent 解决异步场景线程 ThreadLocal 上下文丢失问题

在进行微服务调用的时候,不管是服务之间(A 服务调用 B 服务)还是服务内部调用(服务 A 某个方法进行里有异步)都存在异步调用。但是 ``Nepxion Discovery`` 在进行参数传递的时候很多情况是使用的是基于 ``ThreadLocal``。

2020-12-21 00:28:19 157 1

原创 11、Nepxion Discovery 之全链路界面操作蓝绿灰度发布

在之前的文章中讲过,用户可以通过 URL 请求以及配置中心进行灰度发布的操作,而且支持配置中心的灰度发布参数的动态变更。如果用户不希望使用上面的两种方式,Nepxion Discovery 框架还支持图形化进行灰度化配置。支持...

2020-12-18 22:45:22 166

原创 1、Eureka 源码解析 之 调试环境搭建

Eureka ( 是一个基于 REST (Representational State Transfer)的服务,主要用于AWS云中定位服务,以实现中间层服务器的负载平衡和故障转移。在Netflix, Eureka 除了在中间层负载平衡中扮演关键角色外,还用于以下目的。帮助Netflix Asgard - 一个开源服务,使云部署更容易,在快速回滚版本,以防出现问题,避免重新启动100个实例,这可能会花费很长时间。在滚动推送中,为了避免在出现问题的情况下向所有情况传播新版本。对于我们的

2020-12-16 07:20:58 114

原创 10、Nepxion Discovery 之对网关和微服务三大模式的支持

``Nepxion Discovery`` 对于服务灰度发布参数支持:外置``Header``、 ``Parameter``、``Cookie``、``域名``规则策略驱动。并且还内置本地和远程、局部和全局规则策略驱动。并且还支持正则表达式以及通配表达式支持。并且``Nepxion Discovery``支持``Spring Cloud Gateway``、``Zuul网关``和``微服务``三大模式的灰度发布和路由等一系列功能。 所以``Nepxion Discovery`` 对于灰度发布的支持场景还是很

2020-12-13 13:40:18 235

原创 9、Nepxion Discovery 之服务灰度发布参数的支持

``Nepxion Discovery`` 对于服务灰度发布参数支持:外置``Header``、 ``Parameter``、``Cookie``、``域名``规则策略驱动。并且还内置本地和远程、局部和全局规则策略驱动。并且还支持正则表达式以及通配表达式支持。并且``Nepxion Discovery``支持``Spring Cloud Gateway``、``Zuul网关``和``微服务``三大模式的灰度发布和路由等一系列功能。 所以``Nepxion Discovery`` 对于灰度发布的支持场景还是很

2020-12-10 23:47:56 195

原创 8、Nepxion Discovery 之配置中心支持灰度配置

``Nepxion Discovery`` 对于服务灰度发布参数支持:外置``Header``、 ``Parameter``、``Cookie``、``域名``规则策略驱动。并且还内置本地和远程、局部和全局规则策略驱动。并且还支持正则表达式以及通配表达式支持。并且``Nepxion Discovery``支持``Spring Cloud Gateway``、``Zuul网关``和``微服务``三大模式的灰度发布和路由等一系列功能。 所以``Nepxion Discovery`` 对于灰度发布的支持场景还是很

2020-12-10 00:01:26 256

原创 7、Nepxion Discovery 之 对 Spring Cloud 负载均衡扩展支持服务灰度发布

在之前的文章之中我们解析了一下 Spring Cloud 只需要在 ``RestTemplate`` 类型的 Spring Bean 上面添加一个 ``@LoadBalanced`` 注解,并且通过 ``RestTemplate`` 以 ``http://serviceId/访问路径`` 就可以访问真实服务的地址 ``http://lolcahost:端口/访问路径``。同样的 ``Nepxion Discovery`` 需要实现服务的灰度发布,也对 Spring Cloud 的负载均衡进行了扩展。

2020-12-08 08:53:58 879 11

转载 三种思维,让我脱胎换骨

1、闭环思维闭环思维简而言之就是,如果别人发起一件事,你不管做的如何,最后都要闭环到这个发起者。我曾经就经历过这样的事:我让一个实习生写一个问卷。两个小时过去了,没有反馈,三个小时过去了还是没有反馈,直到中午吃饭的时候,我碰到了他。我问他,写完了吗?他说写完了。我说,那你怎么没发给我看,他说,写完直接发出去了。你会对这个人怎么评价?不靠谱。有闭环思维的人是怎么做呢?第一,如果他完成了,那么就要及时反馈,并且说一下当时的情景。第二,如果他没完成,也要及时反馈,是哪里遇到困难了,需不需要帮助

2020-12-06 23:04:47 109 1

原创 6、Nepxion Discovery 之 Spring Cloud 负载均衡处理

在之前的文章中只是简单的讲解了一下 Nepxion Discovery 服务注册添加元数据到注册中心里面以及服务注册与发现 Listener 的扩展。其实在服务发现的时候 Nepxion Discovery 进行了自己的扩展才能做到通过 restful header 传入以及配置中心配置的灰度参数再获取到某个服务的列表的时候,才能够选择灰度合适的服务实例。要理解 Nepxion Discovery 框架是如何进行灰度服务中进行服务实例选择的,我们先来理解一下 Spring Cloud 是如何对负载均衡进行抽

2020-12-06 22:49:35 269 1

原创 Spring Cloud Feign 记录单个服务耗时并解决 Hystrix 线程隔离模式

随着公司业务的增长,系统的调用量也越来越多。对于第三方公司的我们,如何提高系统的稳定性是摆在我们面前的一个问题。为了解决系统稳定性问题,决定把整个服务的日志通过日志跟踪号(traceNo) 以及一次调用链中每一个单个服务的调用时间打印到每个服务特定的目录中。 单个服务打印的数据运维会记录到 ES 里面,提供大盘给各个业务系统 owner 优化服务。分析这个需求,里面包含以下几个需求:解析上游传递过来的跟踪号,添加到 MDC 中记录整个日志,并且记录在当前服务当中调用的整个耗时把上游传递过来的跟踪号

2020-12-04 21:02:54 492 12

原创 5、Nepxion Discovery 之 服务注册发现增强

Nepxion Discovery 在进行灰度发布的时候其实就是通过请求接口时的传入参数(或者在配置中心配置的参数)以及注册在注册中心的服务进行匹配找到合适的服务进行调用。在前面的文章 4、Nepxion Discovery 之 Spring Cloud 服务注册抽象 Spring Cloud 对于不同的注册中心都会有统一进行抽象。

2020-12-03 22:13:39 261

原创 4、Nepxion Discovery 之 Spring Cloud 服务注册抽象

在 Spring Cloud 微服务架构体系里面我们的服务如果需要暴露被其它服务发现并调用,只需要在启动类上面添加注解 @EnableDiscoveryClient 就可以了。因为 Nepxion Discovery 这个灰服务框架是基于 Spring Cloud 微服务架构体系,所以我们就有必要知道 Spring Cloud 的服务注册发现的原理。所以在这里就分析一下 Spring Cloud 服务是如何自动注册的。首先要讨论的就是启动类上面的 @EnableDiscoveryClient 这个注解。

2020-12-02 12:55:26 293 2

原创 3、Nepxion Discovery 项目结构简介

Nepxion Discovery 项目的 github 地址为:https://github.com/Nepxion/Discovery。Discovery【探索】微服务框架,基于Spring Cloud Discovery服务注册发现、Ribbon负载均衡、Feign和RestTemplate调用等组件全方位增强的企业级微服务开源解决方案,更贴近企业级需求,更具有企业级的插件引入、开箱即用特征。它的功能在官网上面介绍得非常清楚,在这里就不在赘述了。下面我们来分析一下 Nepxion Discovery

2020-11-30 22:43:26 260

原创 Spring Boot 自定义 Hibernate 验证器优雅验证枚举类型的请求参数

当我们后端 restful 开发的时候,可以使用

2020-11-25 21:33:21 169

原创 2、Nepxion Discovery 灰度发布初体验

上一篇博客 Nepxion Discovery:Spring Cloud灰度发布神器 介绍了 Nepxion Discovery 框架在灰度发布里面可以帮我们做哪些事情,下面我们就通过一个简单的小例子来体验一下它的魅力。1、环境搭建下载代码,Git clone https://github.com/Nepxion/DiscoveryGuide.git,分支为simple代码导入IDE,并切换到 simple 分支,编译好的项目结构如下所示:3. 下载Nacos服务器从https:/

2020-11-20 10:27:36 371

转载 1、Nepxion Discovery:Spring Cloud灰度发布神器

原文地址:http://dockone.io/article/8149Nepxion Discovery是一款对Spring Cloud服务注册发现和负载均衡的增强中间件,其功能包括灰度发布(包括切换发布和平滑发布),黑/白名单的IP地址过滤,限制注册,限制发现等,支持Eureka、Consul和Zookeeper,支持Spring Cloud Api Gateway(Finchley版)、Zuul网关和微服务的灰度发布,支持用户自定义和编程灰度路由策略,支持多数据源的数据库灰度发布等客户特色化灰度发布,

2020-11-18 22:13:23 622 2

原创 Spring Boot 中使用 MDC 追踪一次请求全过程

MDC 的全称是 Mapped Diagnostic Context,映射诊断上下文(MDC)。本质上是由日志框架维护的映射,其中应用程序代码提供键-值对,然后日志框架可以在日志消息中插入这些键-值对。MDC数据在过滤消息或触发某些操作方面也非常有用。管理开销。SLF4J支持MDC,即映射的诊断上下文。如果底层日志框架提供MDC功能,那么SLF4J将委托给底层框架的MDC。注意,此时,只有log4j和logback提供MDC功能。如果底层框架不提供MDC,例如java.util。日志记录后,SLF4J仍将

2020-10-31 22:16:13 294

ibatis资源包

iBatis是一款使用方便的数据访问工具,也可作为数据持久层的框架。和ORM框架(如Hibernate)将数据库表直接映射为Java对象相比,iBatis是将SQL语句映射为Java对象。相对于全自动SQL的Hibernate,iBatis允许你对SQL有完全控制权,可以视为半自动的数据访问工具。

2014-05-28

mysql连接数据库驱动

mySql的连接数据库的驱动Jar包。mysql-connector-java-5.1.7-bin.jar

2014-05-28

carl-zhao的留言板

发表于 2020-01-02 最后回复 2020-01-02

一个标签从标签数组中取值方法实现

发表于 2014-08-05 最后回复 2014-08-06

求助,使用sebservice利用多线程向后台读了xml文件数据然后组装给前台JSON

发表于 2014-07-16 最后回复 2014-07-24

多线程编程,主线程怎么等待多接口数据返回

发表于 2014-07-16 最后回复 2014-07-24

这个求质数的代码,怎么计数呢?

发表于 2014-06-02 最后回复 2014-06-02

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

TA关注的人 TA的粉丝

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