
中间件
dbqb007
Apache committer,熟悉中间件,微服务开发
展开
-
图解Dubbo提供者部分重要的类关系
Dubbo的提供者发布服务是一个比较复杂的过程。概括起来说,主要有以下几步:1.解析配置2.导出服务解析服务的过程略过。本文主要分析导出服务的过程,其中有一些比较重要的类,它们之间通过代理模式和装饰器模式,巧妙组合在一起,实现了Dubbo的提供者的功能,本文通过画图来解释它们。导出服务又可以分为以下几步:生成实现类的包裹对象即代理对象假设我们定义了一个远程调用的接口,那么在提供者端就需要一个实现类来实现这个接口。同时为了实现监控,回调等功能,当请求到达时,不能简单根据类名和方法名去通过反射调用实原创 2020-06-25 23:27:05 · 432 阅读 · 0 评论 -
Spring Cloud Consul外部配置动态刷新源码解析
ConsulConsul是一款中间件,可提供KV存储功能,同时提供了创建、修改、查询KV存储的HTTP API,因此可作为配置中心。Spring Cloud ConsulSpring Cloud Consul是基于Spring Cloud的公共接口,提供了集成Consul配置能力的微服务框架。源码分析ConfigWatch这个类中提供了一个定时任务 @Override pub...原创 2020-04-09 19:36:11 · 1965 阅读 · 0 评论 -
Activemq控制台的独立部署
Apache Activemq是一个高性能的开源消息队列。在启动它的时候,会自动启动一个自带的Web控制台,通过控制台可以查看当前Activemq服务器的情况,包括队列、主题、连接、订阅者等。这个控制台是通过嵌入式的Jetty容器启动的。不过有时候我们可能需要独立部署Web控制台,比如在Tomcat中通过插件形式启动Activemq,此时无法通过嵌入Jetty容器的方式启动Web控制台(因为To...原创 2019-12-15 19:42:26 · 345 阅读 · 0 评论 -
Dubbo服务端服务发布(一)Invoker创建
在Dubbo的服务发布过程中,Invoker链的构造是一个重要的步骤,Invoker代表的是一个可以调用的服务的接口。它的定义如下:public interface Invoker<T> extends Node { /** * get service interface. * * @return service interface. ...原创 2019-07-16 17:30:57 · 814 阅读 · 0 评论 -
Dubbo中InternalThreadLocal源码分析
在Java中,ThreadLocal是实现线程安全的一种手段,它的作用是对于同一个ThreadLocal变量,在每一个线程中都有一个副本,当修改任何一个线程的变量时,不会影响到其他线程。它通过在每一个Thread中存储一个类似于map的结构,以ThreadLocal变量为key,变量值为value。Dubbo在RPC调用的上下文中,需要借助ThreadLocal保存上下文。它从Netty中借鉴了...原创 2019-07-10 01:10:40 · 2765 阅读 · 0 评论 -
Dubbo/Netty中时间轮算法的原理
在Dubbo中,为增强系统的容错能力,在很多地方需要用到只需进行一次执行的任务调度。比如RPC调用的超时机制的实现,消费者需要各个RPC调用是否超时,如果超时会将超时结果返回给应用层。在Dubbo最开始的实现中,是采用将所有的返回结果(DefaultFuture)都放入一个集合中,并且通过一个定时任务,每隔一定时间间隔就扫描所有的future,逐个判断是否超时。这样的实现方式实现起来比较简单,但...原创 2019-06-02 16:59:16 · 2953 阅读 · 0 评论 -
基于有向无环图(DAG)的任务调度Demo
定时任务是软件开发中经常遇到的问题。简单的定时任务只需要在固定时间触发它的执行就可以了。但是对于复杂的定时任务,可能是由多个任务组成一个任务组,它们之间存在依赖关系,一个任务执行的条件,必须是它的前置任务已经执行成功(或者没有前置任务),它才可以执行。例如下面这幅图:图中任务的依赖关系为:任务1:依赖2,5任务2:依赖3,4任务3:无依赖任务4:无依赖任务5:无依赖...原创 2019-04-05 14:34:00 · 15272 阅读 · 5 评论 -
gRPC使用初探
gRPC是谷歌开源的一款RPC框架,基于HTTP/2协议,使用protocol buffer作为接口定义语言(Interface Definition Language)和底层数据交换格式。gRPC最大的优点是能跨语言,因为使用和语言无关的protobuf来定义接口,并且使用标准的http协议来进行传输,能使不同语言的服务端和客户端互相兼容。gRPC-java的github地址是https:/...原创 2019-03-31 13:26:00 · 1319 阅读 · 0 评论 -
Dubbo使用Apollo作为配置中心实战
一.Dubbo支持Apollo的介绍Apollo是携程开源的一款配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。Dubbo目前的最新版本2.7.0将过去单一的注册中心拆分成了注册中心、元数据中心和配置中心。其中配置中心起到的作用之一,就是将配置外部化,也就是将配置从应用内部剥离出去,可以在一...原创 2019-03-17 15:18:25 · 9188 阅读 · 4 评论 -
Shardingsphere-JDBC初体验
Apache ShardingSphere(Incubator) 是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar(规划中)这3款相互独立,却又能够混合部署配合使用的产品组成。它们均提供标准化的数据分片、分布式事务和数据库治理功能,可适用于如Java同构、异构语言、容器、云原生等各种多样化的应用场景。...原创 2019-02-17 21:36:11 · 7270 阅读 · 2 评论