自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

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

Dubbo(读音[ˈdʌbəʊ])是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成。后面捐献给了知名的开源社区 apache。 Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面...

2020-03-27 23:06:03 128 0

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

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

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

原创 Spring 源码导读

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

2018-04-19 08:06:30 1353 0

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

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

2016-11-03 20:31:08 572 0

原创 Spring Cloud Gateway 15 分钟极速入门
原力计划

Spring cloud gateway 是 spring 官方基于 Spring 5.0、Spring Boot2.0 和 Project Reactor 等技术开发的网关,Spring Cloud Gateway 旨在为微服务架构提供简单、有效和统一的API路由管理方式,Spring Clou...

2020-05-31 22:48:09 19 0

原创 Apache Tomcat 类加载机制
原力计划

Java 在刚刚诞生的时候就提出了一个非常著名的宣传口号:“一次编写,到处运行。”它体现了 Java 语言的平台无关性,主流的操作系统都支持 Java 的运行,比如:Windows、Linux 以及 Mac OS 系统。不同的操作系统都有其对应的虚拟机。这些虚拟机和所有平台都统一使用同一种存储格式...

2020-05-31 00:39:56 46 0

原创 Spring Boot + Elastic Job 定时比对数据使用钉钉报警
原力计划

最近的工作中心是容易扩容,刚刚把其它一个业务使用 sharding jdbc 把容量规划完成。因为系统采用的数据方案是:**单写老库 -> 双写老库分片库 -> 单写分片库**,使用 apollo 配置中心来切换数据写入规则。当有异常时可以进行方案回滚这种平滑的数据过渡方案,在上线过程...

2020-05-30 09:40:49 124 0

原创 系统日志中敏感字段掩码处理
原力计划

做为金融业务开发,很多接口都需要使用到用户信息,而在用户信息当中难免会有一些敏感字段,比如:用户姓名,银行卡号等等。所以在用户敏感信息保存以及日志打印的时候就不能把这些敏感信息明文的保存起来。对于数据库保存用户敏感信息的时候,一般系统中会有一个加/解密的系统。当需要保存用户敏感信息的时候会把用户信...

2020-05-28 08:24:00 186 1

原创 分库分表后,测试人员如何面对多库多表中数据
原力计划

最近工作的重心是容量规划,当系统数据量上来之后。对系统就需要使用分库分表了,分库分表选型的是 apache sharding jdbc,他是通过客户端来对数据源进行分库分表的。 1、遇到问题 但是在分库分表之后,不管是开发还是测试,当遇到问题需要查询数据库的时候面对多个库多个表那就比较痛苦了。 ...

2020-05-25 00:05:34 217 0

原创 Spring Boot 通过 ThreadLocal、HandlerInterceptor、RequestBodyAdvice 优雅解决项目公共参数问题
原力计划

因为公司是做境外第三方支付,所以涉及到国际化问题。页面不变的值可以由前端进行处理,对于后端如果遇到异常信息需要产品经理提供对应的显示信息。这个显示信息可以根据不同的异常定义不同的异常码,然异常信息显示国际化信息保存到数据库。根据用户不同的国家请求动态的去数据库获取这个值。

2020-04-26 23:45:52 178 0

原创 Spring Boots 集成 Sharding Jdbc 使用复合分片
原力计划

随着业务的逐渐增大,原有保存在单表的数据量也日益增强。数据库数据会随着业务的发展而不断增多,因此数据操作,如增删改查的开销也会越来越大。再加上物理服务器的资源有限(CPU、磁盘、内存、IO 等)。最终数据库所能承载的数据量、数据处理能力都将遭遇瓶颈。换句话说需要合理的数据库架构来存放不断增长的数据...

2020-04-25 13:13:17 189 0

原创 Apache Tomcat 请求处理
原力计划

通过之前的 Apache Tomcat 可以把得到如下的 Tomcat 的架构图: 1、请求处理核心组件 以下是 Tomcat 处理请求时涉及到的核心组件: 组件名称 说明 EndPoint Endpoint 可以理解成通信端点,用于 Socket 通信处理 TCP/IP 协议。...

2020-04-25 09:56:51 117 0

原创 RabbitMQ 延迟队列实现订单自动关闭
原力计划

1、延迟队列 延迟队列存储的对象肯定是对应的延时消息,所谓”延时消息”是指当消息被发送以后,并不想让消费者立即拿到消息,而是等待指定时间后,消费者才拿到这个消息进行消费。 在电商系统中,当用户提交订单超过 30 分钟未支付就是自动取消。一般的解决方案是使用定时任务来轮训数据库,然后找到过期的订...

2020-04-22 23:33:45 255 0

原创 Apache Tomcat 初始化
原力计划

在上一篇文章中我们分析了 Tomcat 中的整体架构。下面我们就来分析一下 Tomcat 源码实现。在 Tomcat 中有两个比较核心的过程: Tomcat 启动:初始化 Tomcat 中的核心组件 处理请求:接收客户端请求,处理并响应给客户端 这篇文章主要分析一下 Tomcat 容器的启动过...

2020-04-18 23:10:03 81 0

原创 Apache Tomcat 架构演进
原力计划

Tomcat 作为一款知名的轻量级应用服务器,它的架构设计可以值得我们借鉴。因为 Tomcat 作为开源以久的 Web 服务器,它的架构还是挺复杂的。这篇博客主要是介绍 Tomcat 的总体架构,通过由浅到深的方案介绍 Tomcat 的架构演进。

2020-04-18 12:22:15 149 0

原创 Apache Tomcat Shell 启动文件分析

当我们进行 web 企业开发完成的时候,正式项目都是在 Linux 上进行发布。首先会把开发好的项目打包成 xxx.war 文件,然后把这个 war 包放在 tomcat 中的 webapps 目录中。最后通过 ${TOMCAT_HOME}/bin/startup.sh 文件启动项目,接着就可以在...

2020-04-16 22:14:08 84 0

原创 Apache Tomcat 源码分析环境搭建
原力计划

Apache Tomcat®软件是Java Servlet、JavaServer页面、Java 语言表达式和 Java WebSocket 技术的开源实现。Java Servlet、JavaServer页面、Java 表达式语言和 Java WebSocket 规范都是在 Java 社区进程下开发...

2020-04-15 22:12:39 166 0

原创 google guice hello world
原力计划

Guice是一个轻量级的Java依赖注入(DI)框架。 使用依赖注入有很多优点,但是手动操作常常会导致编写大量样板代码。Guice是一个框架,用于编写使用依赖注入的代码,而不需要编写大量样板代码,有关动机的更多细节,请参阅本页面。 简单地说,Guice减少了对工厂的需求和Java代码中new的使用...

2020-04-14 23:06:34 82 0

原创 模仿 Spring 注解事务写出优雅多数据源切换代码
原力计划

随着公司业务的不断扩大,核心业务的数据量也是爆炸性增长。因为数据库选用和大多数据互联网公司一样使用的是 Mysql 很多表的数据量都超过了 1 kw,所以决定对大表进行数据扩容。并且在容量扩容的时候决定使用双写方案。在调研的时候,有三个方案可以选择: Sharding-jdbc:模仿分片处理,...

2020-03-29 12:56:18 160 1

原创 Spring Boot 接入 Dubbo 指导文档
原力计划

当前系统是使用 spring boot + spring cloud feign 作为系统间的调用。使用 amazon 的 aws 的负载均衡调用。不能够做到服务调用的治理以及监控。基于以上缺点所以决定引用 dubbo 来做服务间的调用。 1、Why Dubbo 比较流行的有 spring clo...

2020-03-18 00:01:12 186 0

原创 基于 Java Agent 实现零倾入监控
原力计划

本文主要由如何保证服务的可用性也就是系统监控问题逐步引出 Java 语言的高级特性,也就是 Java Agent 的使用。系统代码可以零倾入就能够引入监控服务。本文的主要讨论的有以下几个议题: 为什么系统需要监控 Java 语言如何实现监控 Java Agent 简单示例 开源项目使用 Java...

2020-03-16 00:25:14 274 0

原创 确保服务稳定 Redis 上线之前应该做的事

在互联网行业大多数的应该系统都是分步式系统。并且为了优化系统,在架构设计的时候大多数都引入了缓存中间件 – Redis。相对于 memcache 缓存中间件只支持字符串类型, Redi 拥有更多的数据类型。 string:字符串是一种基本的数据类型,用于保存 key/value 类型的数据 ha...

2020-03-15 12:00:22 1186 0

转载 微服务 之 服务治理相关内容

一、内容总结如下 服务注册与发现 软负载均衡与容错 服务监控与统计 服务容量评估 服务上线审批 服务下线通知 服务负责人 服务文档 服务路由 服务编排 服务黑白名单 服务权限控制 服务依赖关系 服务分层架构 服务调用链跟踪 故障传导分...

2020-03-14 23:34:20 100 0

原创 利用 Spring 自动类型转换与回调模式写出优雅的代码
原力计划

当我们使用 dubbo 或者 feign 进行 RPC 调用用时,通常的调用模板方式如下: public BizResponse method(BizRequest request){ RpcRequest rpcRequest = buildRpcRequest(); RpcRepon...

2020-03-14 18:08:57 702 0

翻译 Apache Kafka 介绍

Apache Kafka®是一个分布式流平台。这到底是什么意思呢? 流媒体平台有三个关键功能: 发布和订阅记录流,类似于消息队列或企业消息传递系统。 以容错的持久方式存储记录流。 当记录发生时处理它们的流。 Kafka通常用于两大类应用程序: 构建实时流数据管道,在系统或应用程序之间可靠地获...

2020-03-14 17:34:46 40 0

原创 多环境测试遇到的问题及解决方案
原力计划

最近新到的公司由于在服务化,领导叫我调研并使用 apache dubbo 做微服务改造。因为之前的公司基本上都是使用的 dubbo,所以对于服务改造过程并不复杂。而且我还把自己的改造指南分享到公司内网 wiki。这次主要是和大家分享一下在服务改造之后在本地测试遇到的问题。 因为我们使用的环境是 a...

2020-03-14 16:06:40 177 0

原创 Spring Security Java Config 浅析

在之前的项目中使用接触过 xml 配置使用 Spring Security。但是最近比较流行 java config。并且对它的 builder 模式比较感兴趣,就会查看了它的源码实现。下面就把自己的分析结果记录下来,希望对阅读这篇博客的你也有帮助。在 Spring Security 里面有两个非...

2020-03-08 13:25:22 155 0

原创 Spring FactoryBean 创建的 Advisor 无法应用于增强

最近的工作重心是帮助公司做日志统一格式方面的工作。也就是规范日志,之前的日志文件只分为了 error.log 和 info.log。现在要把它更为细为分以下几种: more business log:细粒度的业务日志文件区分(Dao、Manage、Service、Web) method dige...

2020-03-01 15:55:47 156 0

原创 Spring 无法代理 Mybatis 接口问题

最近公司正在开始平台化,需要统一打印日志格式。由于领导对于我的认可,把这件事情交给我来做。所谓统一日志格式主要是做以下几件事: more business log:细粒度的业务日志文件区分(Dao、Manage、Service、Web) method digest log:方法级别的日志摘要(对...

2020-02-29 21:09:11 232 0

原创 Amazon SQS 模仿 @RabbitListener

新到一家公司,由于对业务还不太熟悉。正好又有一个需求,由于我们公司是第三方支付公司需要把订单状态的更新(比如成功或者失败等状态)发送给调用接口的商户。在设计这个系统的时候,由于公司的业务都是在亚马逊去上。而且之前使用的 MQ 就是使用的 Amazon Simple Queue Service 也就...

2020-01-18 11:03:27 314 0

原创 Xxl Job 源码分析(三) -- 添加任务并执行任务

从之前的 Xxl Job Helloworld 中学会了简单的使用 Xxl-Job 进行分步式任务调度。并且可以知道当我使用 Xxl-Job时,我们核心基本需要以下三个步骤: 启动调度中心(xxl-job-admin) 启动执行器(引用xxl-job-core 的业务代码) 调度中心添加任务并执...

2020-01-16 00:37:23 349 0

原创 Xxl Job 源码分析(二) -- 启动执行器

从之前的 [Xxl Job Helloworld](https://blog.csdn.net/u012410733/article/details/103933544) 中学会了简单的使用 ``Xxl-Job`` 进行分步式任务调度。并且可以知道当我使用 ``Xxl-Job``时,我们核心基本需...

2020-01-15 22:45:42 228 0

原创 Xxl Job 源码分析(一) -- 启动调度中心

从之前的 [Xxl Job Helloworld](https://blog.csdn.net/u012410733/article/details/103933544) 中学会了简单的使用 ``Xxl-Job`` 进行分步式任务调度。并且可以知道当我使用 ``Xxl-Job``时,我们核心基本需...

2020-01-13 23:33:09 206 0

原创 webservice hello world

Web service是一个平台独立的跨语言、跨平台,低耦合的,自包含的、基于SOAP(simple object access protocal)协议的可编程的web的应用程序,可远程接口访问。可使用开放的XML(标准通用标记语言下的一个子集)标准来描述、发布、发现、协调和配置这些应用程序,用于...

2020-01-11 11:32:26 807 0

原创 Xxl Job Helloworld

刚到新公司不久,新公司使用分布式任务调度平台是 xxl-job。其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。当然它的特性在 它的官网 描述得非常清楚,我就不需要赘述了。对于 xxl-job 只是了解过,并没有在真实的环境使用过。为了更好的使...

2020-01-11 11:26:17 458 2

原创 Spring MVC 自定义类名称参数绑定

众所周知,spring mvc 在进行参数绑定的时候。前端请求的参数名称与后端定义的类名称是一一对应的。比如:请求参数有一个 name 值传到后端。后端只需要定义一个类,然后类里面声明一个 name 属性。在发送请求的时候 spring mvc 就会自动把 name 的值填充到这个定义的类里面。现...

2019-09-11 12:44:54 340 0

转载 可能是把Docker的概念讲的最清楚的一篇文章

本文只是对Docker的概念做了较为详细的介绍,并不涉及一些像Docker环境的安装以及Docker的一些常见操作和命令。 Docker是世界领先的软件容器平台,所以想要搞懂Docker的概念我们必须先从容器开始说起。 1、什么是容器? 先来看看容器较为官方的解释: 一句话概括容器:容器就是将软件...

2019-01-24 22:09:13 238 1

原创 8、RabbitMQ Virtual Hosts

RabbitMQ 是多租户系统:连接、交换、队列、绑定、用户权限、保单和其他一些东西属于虚拟主机、实体的逻辑组。如果你熟悉 Apache virtual hosts 或 Nginx server blocks,它们的功能是类似的。然而,有一个重要的区别:Apache 中的虚拟主机是在配置文件中定义...

2018-08-16 23:02:31 546 0

原创 7、Spring Integration RabbitMQ

经过前面的教程我们知道了 RabbitMQ 里面的基本的队列消息发送,以及不同类型的交换器的消息发送。今天就来分享一下 RabbitMQ 与 Spring 集成的 demo。集成里面主要分享三个类型的消息: 默认交换器(也就是队列)类型的消息, 发送一个测试消息到队列queue.test.qu...

2018-08-14 23:42:10 1260 3

原创 6、Rabbitmq Message RPC

在 第二个教程 中,我们学习了如何使用工作队列来在多个工作者之间分配耗时的任务。 但是,如果我们需要在远程计算机上运行一个函数并等待结果呢?好吧,那是另一回事了。这种模式通常称为 Remote Procedure Call (远程过程调用)或 RPC。 在本教程中,我们将使用RabbitM...

2018-08-12 18:47:58 193 0

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